No OneTemporary

File Metadata

Created
Thu, May 2, 11:10 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 dd8ace195..5f40e3ff7 100644
--- a/static/reports/cppcheck/master/0.html
+++ b/static/reports/cppcheck/master/0.html
@@ -1,1311 +1,1311 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/dimg/jpeg2000/dimgjpeg2000loader_load.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/dimg/jpeg2000/dimgjpeg2000loader_load.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> dimgjpeg2000loader_load.cpp</p>
<a href='0.html#line-205'> knownConditionTrueFalse 205</a><a href='0.html#line-224'> knownConditionTrueFalse 224</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</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-06-14</span>
<a name="line-7"></a><span class="cm"> * Description : A JPEG-2000 IO file for DImg framework- load operations</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)</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;dimgjpeg2000loader.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;QFile&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;QTextStream&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;digikam_config.h&quot;</span><span class="cp"></span>
<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&quot;dimg.h&quot;</span><span class="cp"></span>
<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&quot;dimgloaderobserver.h&quot;</span><span class="cp"></span>
<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&quot;dmetadata.h&quot;</span><span class="cp"></span>
<a name="line-39"></a>
<a name="line-40"></a><span class="c1">// Jasper includes</span>
<a name="line-41"></a>
<a name="line-42"></a><span class="cp">#ifndef Q_CC_MSVC</span>
<a name="line-43"></a><span class="k">extern</span> <span class="s">&quot;C&quot;</span>
<a name="line-44"></a><span class="p">{</span>
<a name="line-45"></a><span class="cp">#endif</span>
<a name="line-46"></a>
<a name="line-47"></a><span class="cp">#if defined(Q_OS_DARWIN) &amp;&amp; defined(Q_CC_CLANG)</span>
<a name="line-48"></a><span class="cp"># pragma clang diagnostic push</span>
<a name="line-49"></a><span class="cp"># pragma clang diagnostic ignored &quot;-Wshift-negative-value&quot;</span>
<a name="line-50"></a><span class="cp">#endif</span>
<a name="line-51"></a>
<a name="line-52"></a><span class="cp">#include</span> <span class="cpf">&lt;jasper/jasper.h&gt;</span><span class="cp"></span>
<a name="line-53"></a>
<a name="line-54"></a><span class="cp">#if defined(Q_OS_DARWIN) &amp;&amp; defined(Q_CC_CLANG)</span>
<a name="line-55"></a><span class="cp"># pragma clang diagnostic pop</span>
<a name="line-56"></a><span class="cp">#endif</span>
<a name="line-57"></a>
<a name="line-58"></a><span class="cp">#ifndef Q_CC_MSVC</span>
<a name="line-59"></a><span class="p">}</span>
<a name="line-60"></a><span class="cp">#endif</span>
<a name="line-61"></a>
<a name="line-62"></a><span class="k">namespace</span> <span class="n">DigikamJPEG2000DImgPlugin</span>
<a name="line-63"></a><span class="p">{</span>
<a name="line-64"></a>
<a name="line-65"></a><span class="kt">bool</span> <span class="n">DImgJPEG2000Loader</span><span class="o">::</span><span class="n">load</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> <span class="n">DImgLoaderObserver</span><span class="o">*</span> <span class="k">const</span> <span class="n">observer</span><span class="p">)</span>
<a name="line-66"></a><span class="p">{</span>
<a name="line-67"></a> <span class="n">readMetadata</span><span class="p">(</span><span class="n">filePath</span><span class="p">);</span>
<a name="line-68"></a>
<a name="line-69"></a> <span class="kt">FILE</span><span class="o">*</span> <span class="k">const</span> <span class="n">file</span> <span class="o">=</span> <span class="n">fopen</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">filePath</span><span class="p">).</span><span class="n">constData</span><span class="p">(),</span> <span class="s">&quot;rb&quot;</span><span class="p">);</span>
<a name="line-70"></a>
<a name="line-71"></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-72"></a> <span class="p">{</span>
<a name="line-73"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-74"></a> <span class="k">return</span> <span class="nb">false</span><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">unsigned</span> <span class="kt">char</span> <span class="n">header</span><span class="p">[</span><span class="mi">9</span><span class="p">];</span>
<a name="line-78"></a>
<a name="line-79"></a> <span class="k">if</span> <span class="p">(</span><span class="n">fread</span><span class="p">(</span><span class="o">&amp;</span><span class="n">header</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="n">file</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">1</span><span class="p">)</span>
<a name="line-80"></a> <span class="p">{</span>
<a name="line-81"></a> <span class="n">fclose</span><span class="p">(</span><span class="n">file</span><span class="p">);</span>
<a name="line-82"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-83"></a> <span class="k">return</span> <span class="nb">false</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="n">fclose</span><span class="p">(</span><span class="n">file</span><span class="p">);</span>
<a name="line-87"></a>
<a name="line-88"></a> <span class="kt">unsigned</span> <span class="kt">char</span> <span class="n">jp2ID</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> <span class="mh">0x6A</span><span class="p">,</span> <span class="mh">0x50</span><span class="p">,</span> <span class="mh">0x20</span><span class="p">,</span> <span class="mh">0x20</span><span class="p">,</span> <span class="mh">0x0D</span><span class="p">,</span> <span class="p">};</span>
<a name="line-89"></a> <span class="kt">unsigned</span> <span class="kt">char</span> <span class="n">jpcID</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span> <span class="mh">0xFF</span><span class="p">,</span> <span class="mh">0x4F</span> <span class="p">};</span>
<a name="line-90"></a>
<a name="line-91"></a> <span class="k">if</span> <span class="p">(</span><span class="n">memcmp</span><span class="p">(</span><span class="o">&amp;</span><span class="n">header</span><span class="p">[</span><span class="mi">4</span><span class="p">],</span> <span class="o">&amp;</span><span class="n">jp2ID</span><span class="p">,</span> <span class="mi">5</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span>
<a name="line-92"></a> <span class="n">memcmp</span><span class="p">(</span><span class="o">&amp;</span><span class="n">header</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">jpcID</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-93"></a> <span class="p">{</span>
<a name="line-94"></a> <span class="c1">// not a jpeg2000 file</span>
<a name="line-95"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-96"></a> <span class="k">return</span> <span class="nb">false</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="n">imageSetAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;format&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;JP2&quot;</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="p">(</span><span class="n">m_loadFlags</span> <span class="o">&amp;</span> <span class="n">LoadImageData</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="p">(</span><span class="n">m_loadFlags</span> <span class="o">&amp;</span> <span class="n">LoadICCData</span><span class="p">))</span>
<a name="line-102"></a> <span class="p">{</span>
<a name="line-103"></a> <span class="c1">// libjasper will load the full image in memory already when calling jas_image_decode.</span>
<a name="line-104"></a> <span class="c1">// This is bad when scanning. See bugs 215458 and 195583.</span>
<a name="line-105"></a> <span class="c1">// FIXME: Use Exiv2 to extract this info</span>
<a name="line-106"></a> <span class="n">DMetadata</span> <span class="n">metadata</span><span class="p">(</span><span class="n">filePath</span><span class="p">);</span>
<a name="line-107"></a> <span class="n">QSize</span> <span class="n">size</span> <span class="o">=</span> <span class="n">metadata</span><span class="p">.</span><span class="n">getItemDimensions</span><span class="p">();</span>
<a name="line-108"></a>
<a name="line-109"></a> <span class="k">if</span> <span class="p">(</span><span class="n">size</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-110"></a> <span class="p">{</span>
<a name="line-111"></a> <span class="n">imageWidth</span><span class="p">()</span> <span class="o">=</span> <span class="n">size</span><span class="p">.</span><span class="n">width</span><span class="p">();</span>
<a name="line-112"></a> <span class="n">imageHeight</span><span class="p">()</span> <span class="o">=</span> <span class="n">size</span><span class="p">.</span><span class="n">height</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="k">return</span> <span class="nb">true</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="c1">// -------------------------------------------------------------------</span>
<a name="line-119"></a> <span class="c1">// Initialize JPEG 2000 API.</span>
<a name="line-120"></a>
<a name="line-121"></a> <span class="kt">long</span> <span class="n">i</span><span class="p">,</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">;</span>
<a name="line-122"></a> <span class="kt">int</span> <span class="n">components</span><span class="p">[</span><span class="mi">4</span><span class="p">];</span>
<a name="line-123"></a> <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">maximum_component_depth</span><span class="p">,</span> <span class="n">scale</span><span class="p">[</span><span class="mi">4</span><span class="p">],</span> <span class="n">x_step</span><span class="p">[</span><span class="mi">4</span><span class="p">],</span> <span class="n">y_step</span><span class="p">[</span><span class="mi">4</span><span class="p">];</span>
<a name="line-124"></a> <span class="kt">unsigned</span> <span class="kt">long</span> <span class="n">number_components</span><span class="p">;</span>
<a name="line-125"></a>
<a name="line-126"></a> <span class="n">jas_image_t</span><span class="o">*</span> <span class="n">jp2_image</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-127"></a> <span class="n">jas_stream_t</span><span class="o">*</span> <span class="n">jp2_stream</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-128"></a> <span class="n">jas_matrix_t</span><span class="o">*</span> <span class="n">pixels</span><span class="p">[</span><span class="mi">4</span><span class="p">];</span>
<a name="line-129"></a>
<a name="line-130"></a> <span class="kt">int</span> <span class="n">init</span> <span class="o">=</span> <span class="n">jas_init</span><span class="p">();</span>
<a name="line-131"></a>
<a name="line-132"></a> <span class="k">if</span> <span class="p">(</span><span class="n">init</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-133"></a> <span class="p">{</span>
<a name="line-134"></a> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_DIMG_LOG_JP2K</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Unable to init JPEG2000 decoder&quot;</span><span class="p">;</span>
<a name="line-135"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-136"></a> <span class="k">return</span> <span class="nb">false</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="n">jp2_stream</span> <span class="o">=</span> <span class="n">jas_stream_fopen</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">filePath</span><span class="p">).</span><span class="n">constData</span><span class="p">(),</span> <span class="s">&quot;rb&quot;</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="n">jp2_stream</span> <span class="o">==</span> <span class="k">nullptr</span><span class="p">)</span>
<a name="line-142"></a> <span class="p">{</span>
<a name="line-143"></a> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_DIMG_LOG_JP2K</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Unable to open JPEG2000 stream&quot;</span><span class="p">;</span>
<a name="line-144"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-145"></a> <span class="k">return</span> <span class="nb">false</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="kt">int</span> <span class="n">fmt</span> <span class="o">=</span> <span class="n">jas_image_strtofmt</span><span class="p">(</span><span class="n">QByteArray</span><span class="p">(</span><span class="s">&quot;jp2&quot;</span><span class="p">).</span><span class="n">data</span><span class="p">());</span>
<a name="line-149"></a> <span class="n">jp2_image</span> <span class="o">=</span> <span class="n">jas_image_decode</span><span class="p">(</span><span class="n">jp2_stream</span><span class="p">,</span> <span class="n">fmt</span><span class="p">,</span> <span class="k">nullptr</span><span class="p">);</span>
<a name="line-150"></a>
<a name="line-151"></a> <span class="k">if</span> <span class="p">(</span><span class="n">jp2_image</span> <span class="o">==</span> <span class="k">nullptr</span><span class="p">)</span>
<a name="line-152"></a> <span class="p">{</span>
<a name="line-153"></a> <span class="n">jas_stream_close</span><span class="p">(</span><span class="n">jp2_stream</span><span class="p">);</span>
<a name="line-154"></a> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_DIMG_LOG_JP2K</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Unable to decode JPEG2000 image&quot;</span><span class="p">;</span>
<a name="line-155"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-156"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-157"></a> <span class="p">}</span>
<a name="line-158"></a>
<a name="line-159"></a> <span class="n">jas_stream_close</span><span class="p">(</span><span class="n">jp2_stream</span><span class="p">);</span>
<a name="line-160"></a>
<a name="line-161"></a> <span class="c1">// some pseudo-progress</span>
<a name="line-162"></a> <span class="k">if</span> <span class="p">(</span><span class="n">observer</span><span class="p">)</span>
<a name="line-163"></a> <span class="p">{</span>
<a name="line-164"></a> <span class="n">observer</span><span class="o">-&gt;</span><span class="n">progressInfo</span><span class="p">(</span><span class="mf">0.1F</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="c1">// -------------------------------------------------------------------</span>
<a name="line-168"></a> <span class="c1">// Check color space.</span>
<a name="line-169"></a>
<a name="line-170"></a> <span class="kt">int</span> <span class="n">colorModel</span> <span class="o">=</span> <span class="n">DImg</span><span class="o">::</span><span class="n">COLORMODELUNKNOWN</span><span class="p">;</span>
<a name="line-171"></a>
<a name="line-172"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">jas_clrspc_fam</span><span class="p">(</span><span class="n">jas_image_clrspc</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">)))</span>
<a name="line-173"></a> <span class="p">{</span>
<a name="line-174"></a> <span class="k">case</span> <span class="nl">JAS_CLRSPC_FAM_RGB</span><span class="p">:</span>
<a name="line-175"></a> <span class="p">{</span>
<a name="line-176"></a> <span class="n">components</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">jas_image_getcmptbytype</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">,</span> <span class="n">JAS_IMAGE_CT_RGB_R</span><span class="p">);</span>
<a name="line-177"></a> <span class="n">components</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">jas_image_getcmptbytype</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">,</span> <span class="n">JAS_IMAGE_CT_RGB_G</span><span class="p">);</span>
<a name="line-178"></a> <span class="n">components</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">jas_image_getcmptbytype</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">,</span> <span class="n">JAS_IMAGE_CT_RGB_B</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">components</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">components</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">components</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">))</span>
<a name="line-181"></a> <span class="p">{</span>
<a name="line-182"></a> <span class="n">jas_image_destroy</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">);</span>
<a name="line-183"></a> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_DIMG_LOG_JP2K</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Error parsing JPEG2000 image : Missing Image Channel&quot;</span><span class="p">;</span>
<a name="line-184"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-185"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-186"></a> <span class="p">}</span>
<a name="line-187"></a>
<a name="line-188"></a> <span class="n">number_components</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<a name="line-189"></a> <span class="n">components</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="n">jas_image_getcmptbytype</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">,</span> <span class="mi">3</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">components</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-192"></a> <span class="p">{</span>
<a name="line-193"></a> <span class="n">m_hasAlpha</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-194"></a> <span class="o">++</span><span class="n">number_components</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="n">colorModel</span> <span class="o">=</span> <span class="n">DImg</span><span class="o">::</span><span class="n">RGB</span><span class="p">;</span>
<a name="line-198"></a> <span class="k">break</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="k">case</span> <span class="nl">JAS_CLRSPC_FAM_GRAY</span><span class="p">:</span>
<a name="line-202"></a> <span class="p">{</span>
<a name="line-203"></a> <span class="n">components</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">jas_image_getcmptbytype</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">,</span> <span class="n">JAS_IMAGE_CT_GRAY_Y</span><span class="p">);</span>
<a name="line-204"></a>
<a name="line-205"></a><span class="hll"> <span class="k">if</span> <span class="p">(</span><span class="n">components</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span><span class='error2'>&lt;--- Assuming condition 'components[0]<0' is false</span>
</span><a name="line-206"></a> <span class="p">{</span>
<a name="line-207"></a> <span class="n">jas_image_destroy</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">);</span>
<a name="line-208"></a> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_DIMG_LOG_JP2K</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Error parsing JP2000 image : Missing Image Channel&quot;</span><span class="p">;</span>
<a name="line-209"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-210"></a> <span class="k">return</span> <span class="nb">false</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">number_components</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<a name="line-214"></a> <span class="n">colorModel</span> <span class="o">=</span> <span class="n">DImg</span><span class="o">::</span><span class="n">GRAYSCALE</span><span class="p">;</span>
<a name="line-215"></a> <span class="k">break</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">case</span> <span class="nl">JAS_CLRSPC_FAM_YCBCR</span><span class="p">:</span>
<a name="line-219"></a> <span class="p">{</span>
<a name="line-220"></a> <span class="n">components</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">jas_image_getcmptbytype</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">,</span> <span class="n">JAS_IMAGE_CT_YCBCR_Y</span><span class="p">);</span>
<a name="line-221"></a> <span class="n">components</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">jas_image_getcmptbytype</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">,</span> <span class="n">JAS_IMAGE_CT_YCBCR_CB</span><span class="p">);</span>
<a name="line-222"></a> <span class="n">components</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">jas_image_getcmptbytype</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">,</span> <span class="n">JAS_IMAGE_CT_YCBCR_CR</span><span class="p">);</span>
<a name="line-223"></a>
<a name="line-224"></a><span class="hll"> <span class="k">if</span> <span class="p">((</span><span class="n">components</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">components</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">components</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">))</span><span class='error2'>&lt;--- Condition 'components[0]<0' is always false</span>
</span><a name="line-225"></a> <span class="p">{</span>
<a name="line-226"></a> <span class="n">jas_image_destroy</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">);</span>
<a name="line-227"></a> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_DIMG_LOG_JP2K</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Error parsing JP2000 image : Missing Image Channel&quot;</span><span class="p">;</span>
<a name="line-228"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-229"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-230"></a> <span class="p">}</span>
<a name="line-231"></a>
<a name="line-232"></a> <span class="n">number_components</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<a name="line-233"></a> <span class="n">components</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="n">jas_image_getcmptbytype</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">,</span> <span class="n">JAS_IMAGE_CT_UNKNOWN</span><span class="p">);</span>
<a name="line-234"></a>
<a name="line-235"></a> <span class="k">if</span> <span class="p">(</span><span class="n">components</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-236"></a> <span class="p">{</span>
<a name="line-237"></a> <span class="n">m_hasAlpha</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-238"></a> <span class="o">++</span><span class="n">number_components</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="c1">// FIXME : image-&gt;colorspace=YCbCrColorspace;</span>
<a name="line-242"></a> <span class="n">colorModel</span> <span class="o">=</span> <span class="n">DImg</span><span class="o">::</span><span class="n">YCBCR</span><span class="p">;</span>
<a name="line-243"></a> <span class="k">break</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">default</span><span class="o">:</span>
<a name="line-247"></a> <span class="p">{</span>
<a name="line-248"></a> <span class="n">jas_image_destroy</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">);</span>
<a name="line-249"></a> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_DIMG_LOG_JP2K</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Error parsing JP2000 image : Colorspace Model Is Not Supported&quot;</span><span class="p">;</span>
<a name="line-250"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-251"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-252"></a> <span class="p">}</span>
<a name="line-253"></a> <span class="p">}</span>
<a name="line-254"></a>
<a name="line-255"></a> <span class="c1">// -------------------------------------------------------------------</span>
<a name="line-256"></a> <span class="c1">// Check image geometry.</span>
<a name="line-257"></a>
<a name="line-258"></a> <span class="n">imageWidth</span><span class="p">()</span> <span class="o">=</span> <span class="n">jas_image_width</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">);</span>
<a name="line-259"></a> <span class="n">imageHeight</span><span class="p">()</span> <span class="o">=</span> <span class="n">jas_image_height</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">);</span>
<a name="line-260"></a>
<a name="line-261"></a> <span class="k">for</span> <span class="p">(</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="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">number_components</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-262"></a> <span class="p">{</span>
<a name="line-263"></a> <span class="k">if</span> <span class="p">((((</span><span class="n">jas_image_cmptwidth</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">,</span> <span class="n">components</span><span class="p">[</span><span class="n">i</span><span class="p">])</span><span class="o">*</span>
<a name="line-264"></a> <span class="n">jas_image_cmpthstep</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">,</span> <span class="n">components</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span> <span class="o">!=</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">imageWidth</span><span class="p">()))</span> <span class="o">||</span>
<a name="line-265"></a> <span class="p">(((</span><span class="n">jas_image_cmptheight</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">,</span> <span class="n">components</span><span class="p">[</span><span class="n">i</span><span class="p">])</span><span class="o">*</span>
<a name="line-266"></a> <span class="n">jas_image_cmptvstep</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">,</span> <span class="n">components</span><span class="p">[</span><span class="n">i</span><span class="p">]))</span> <span class="o">!=</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">imageHeight</span><span class="p">()))</span> <span class="o">||</span>
<a name="line-267"></a> <span class="p">(</span><span class="n">jas_image_cmpttlx</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">,</span> <span class="n">components</span><span class="p">[</span><span class="n">i</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-268"></a> <span class="p">(</span><span class="n">jas_image_cmpttly</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">,</span> <span class="n">components</span><span class="p">[</span><span class="n">i</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-269"></a> <span class="p">(</span><span class="n">jas_image_cmptsgnd</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">,</span> <span class="n">components</span><span class="p">[</span><span class="n">i</span><span class="p">])</span> <span class="o">!=</span> <span class="nb">false</span><span class="p">))</span>
<a name="line-270"></a> <span class="p">{</span>
<a name="line-271"></a> <span class="n">jas_image_destroy</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">);</span>
<a name="line-272"></a> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_DIMG_LOG_JP2K</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Error parsing JPEG2000 image : Irregular Channel Geometry Not Supported&quot;</span><span class="p">;</span>
<a name="line-273"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-274"></a> <span class="k">return</span> <span class="nb">false</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="n">x_step</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">jas_image_cmpthstep</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">,</span> <span class="n">components</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
<a name="line-278"></a> <span class="n">y_step</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">jas_image_cmptvstep</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">,</span> <span class="n">components</span><span class="p">[</span><span class="n">i</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="c1">// -------------------------------------------------------------------</span>
<a name="line-282"></a> <span class="c1">// Get image format.</span>
<a name="line-283"></a>
<a name="line-284"></a> <span class="n">maximum_component_depth</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">for</span> <span class="p">(</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="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">number_components</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-287"></a> <span class="p">{</span>
<a name="line-288"></a> <span class="n">maximum_component_depth</span> <span class="o">=</span> <span class="n">qMax</span><span class="p">((</span><span class="kt">long</span><span class="p">)</span><span class="n">jas_image_cmptprec</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">,</span> <span class="n">components</span><span class="p">[</span><span class="n">i</span><span class="p">]),</span>
<a name="line-289"></a> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">maximum_component_depth</span><span class="p">);</span>
<a name="line-290"></a>
<a name="line-291"></a> <span class="n">pixels</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">jas_matrix_create</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="p">((</span><span class="kt">unsigned</span> <span class="kt">int</span><span class="p">)</span><span class="n">imageWidth</span><span class="p">())</span> <span class="o">/</span> <span class="n">x_step</span><span class="p">[</span><span class="n">i</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="o">!</span><span class="n">pixels</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
<a name="line-294"></a> <span class="p">{</span>
<a name="line-295"></a> <span class="n">jas_image_destroy</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">);</span>
<a name="line-296"></a> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_DIMG_LOG_JP2K</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Error decoding JPEG2000 image data : Memory Allocation Failed&quot;</span><span class="p">;</span>
<a name="line-297"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-298"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-299"></a> <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="k">if</span> <span class="p">(</span><span class="n">maximum_component_depth</span> <span class="o">&gt;</span> <span class="mi">8</span><span class="p">)</span>
<a name="line-303"></a> <span class="p">{</span>
<a name="line-304"></a> <span class="n">m_sixteenBit</span> <span class="o">=</span> <span class="nb">true</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="k">for</span> <span class="p">(</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="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">number_components</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-308"></a> <span class="p">{</span>
<a name="line-309"></a> <span class="n">scale</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<a name="line-310"></a> <span class="kt">int</span> <span class="n">prec</span> <span class="o">=</span> <span class="n">jas_image_cmptprec</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">,</span> <span class="n">components</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
<a name="line-311"></a>
<a name="line-312"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_sixteenBit</span> <span class="o">&amp;&amp;</span> <span class="n">prec</span> <span class="o">&lt;</span> <span class="mi">16</span><span class="p">)</span>
<a name="line-313"></a> <span class="p">{</span>
<a name="line-314"></a> <span class="n">scale</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="mi">1</span> <span class="o">&lt;&lt;</span> <span class="p">(</span><span class="mi">16</span> <span class="o">-</span> <span class="n">jas_image_cmptprec</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">,</span> <span class="n">components</span><span class="p">[</span><span class="n">i</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="c1">// -------------------------------------------------------------------</span>
<a name="line-319"></a> <span class="c1">// Get image data.</span>
<a name="line-320"></a>
<a name="line-321"></a> <span class="n">QScopedArrayPointer</span><span class="o">&lt;</span><span class="n">uchar</span><span class="o">&gt;</span> <span class="n">data</span><span class="p">;</span>
<a name="line-322"></a>
<a name="line-323"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_loadFlags</span> <span class="o">&amp;</span> <span class="n">LoadImageData</span><span class="p">)</span>
<a name="line-324"></a> <span class="p">{</span>
<a name="line-325"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_sixteenBit</span><span class="p">)</span> <span class="c1">// 16 bits image.</span>
<a name="line-326"></a> <span class="p">{</span>
<a name="line-327"></a> <span class="n">data</span><span class="p">.</span><span class="n">reset</span><span class="p">(</span><span class="n">new_failureTolerant</span><span class="p">(</span><span class="n">imageWidth</span><span class="p">(),</span> <span class="n">imageHeight</span><span class="p">(),</span> <span class="mi">8</span><span class="p">));</span>
<a name="line-328"></a> <span class="p">}</span>
<a name="line-329"></a> <span class="k">else</span>
<a name="line-330"></a> <span class="p">{</span>
<a name="line-331"></a> <span class="n">data</span><span class="p">.</span><span class="n">reset</span><span class="p">(</span><span class="n">new_failureTolerant</span><span class="p">(</span><span class="n">imageWidth</span><span class="p">(),</span> <span class="n">imageHeight</span><span class="p">(),</span> <span class="mi">4</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="o">!</span><span class="n">data</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_DIMG_LOG_JP2K</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Error decoding JPEG2000 image data : Memory Allocation Failed&quot;</span><span class="p">;</span>
<a name="line-337"></a> <span class="n">jas_image_destroy</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">);</span>
<a name="line-338"></a>
<a name="line-339"></a> <span class="k">for</span> <span class="p">(</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="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">number_components</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-340"></a> <span class="p">{</span>
<a name="line-341"></a> <span class="n">jas_matrix_destroy</span><span class="p">(</span><span class="n">pixels</span><span class="p">[</span><span class="n">i</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">jas_cleanup</span><span class="p">();</span>
<a name="line-345"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-346"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-347"></a> <span class="p">}</span>
<a name="line-348"></a>
<a name="line-349"></a> <span class="n">uint</span> <span class="n">checkPoint</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-350"></a> <span class="n">uchar</span><span class="o">*</span> <span class="n">dst</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">data</span><span class="p">();</span>
<a name="line-351"></a> <span class="kt">unsigned</span> <span class="kt">short</span><span class="o">*</span> <span class="n">dst16</span> <span class="o">=</span> <span class="k">reinterpret_cast</span><span class="o">&lt;</span><span class="kt">unsigned</span> <span class="kt">short</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">data</span><span class="p">());</span>
<a name="line-352"></a>
<a name="line-353"></a> <span class="k">for</span> <span class="p">(</span><span class="n">y</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">y</span> <span class="o">&lt;</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">imageHeight</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">y</span><span class="p">)</span>
<a name="line-354"></a> <span class="p">{</span>
<a name="line-355"></a> <span class="k">for</span> <span class="p">(</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="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">number_components</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-356"></a> <span class="p">{</span>
<a name="line-357"></a> <span class="kt">int</span> <span class="n">ret</span> <span class="o">=</span> <span class="n">jas_image_readcmpt</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">,</span> <span class="p">(</span><span class="kt">short</span><span class="p">)</span><span class="n">components</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-358"></a> <span class="p">((</span><span class="kt">unsigned</span> <span class="kt">int</span><span class="p">)</span> <span class="n">y</span><span class="p">)</span> <span class="o">/</span> <span class="n">y_step</span><span class="p">[</span><span class="n">i</span><span class="p">],</span>
<a name="line-359"></a> <span class="p">((</span><span class="kt">unsigned</span> <span class="kt">int</span><span class="p">)</span> <span class="n">imageWidth</span><span class="p">())</span> <span class="o">/</span> <span class="n">x_step</span><span class="p">[</span><span class="n">i</span><span class="p">],</span>
<a name="line-360"></a> <span class="mi">1</span><span class="p">,</span> <span class="n">pixels</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
<a name="line-361"></a>
<a name="line-362"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ret</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-363"></a> <span class="p">{</span>
<a name="line-364"></a> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_DIMG_LOG_JP2K</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Error decoding JPEG2000 image data&quot;</span><span class="p">;</span>
<a name="line-365"></a> <span class="n">jas_image_destroy</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">);</span>
<a name="line-366"></a>
<a name="line-367"></a> <span class="k">for</span> <span class="p">(</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="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">number_components</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-368"></a> <span class="p">{</span>
<a name="line-369"></a> <span class="n">jas_matrix_destroy</span><span class="p">(</span><span class="n">pixels</span><span class="p">[</span><span class="n">i</span><span class="p">]);</span>
<a name="line-370"></a> <span class="p">}</span>
<a name="line-371"></a>
<a name="line-372"></a> <span class="n">jas_cleanup</span><span class="p">();</span>
<a name="line-373"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-374"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-375"></a> <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="k">switch</span> <span class="p">(</span><span class="n">number_components</span><span class="p">)</span>
<a name="line-379"></a> <span class="p">{</span>
<a name="line-380"></a> <span class="k">case</span> <span class="mi">1</span><span class="o">:</span> <span class="c1">// Grayscale.</span>
<a name="line-381"></a> <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">m_sixteenBit</span><span class="p">)</span> <span class="c1">// 8 bits image.</span>
<a name="line-383"></a> <span class="p">{</span>
<a name="line-384"></a> <span class="k">for</span> <span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">x</span> <span class="o">&lt;</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">imageWidth</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">x</span><span class="p">)</span>
<a name="line-385"></a> <span class="p">{</span>
<a name="line-386"></a> <span class="n">dst</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">uchar</span><span class="p">)(</span><span class="n">scale</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="n">jas_matrix_getv</span><span class="p">(</span><span class="n">pixels</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">x</span> <span class="o">/</span> <span class="n">x_step</span><span class="p">[</span><span class="mi">0</span><span class="p">]));</span>
<a name="line-387"></a> <span class="n">dst</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">dst</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
<a name="line-388"></a> <span class="n">dst</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">dst</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
<a name="line-389"></a> <span class="n">dst</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="mh">0xFF</span><span class="p">;</span>
<a name="line-390"></a>
<a name="line-391"></a> <span class="n">dst</span> <span class="o">+=</span> <span class="mi">4</span><span class="p">;</span>
<a name="line-392"></a> <span class="p">}</span>
<a name="line-393"></a> <span class="p">}</span>
<a name="line-394"></a> <span class="k">else</span> <span class="c1">// 16 bits image.</span>
<a name="line-395"></a> <span class="p">{</span>
<a name="line-396"></a> <span class="k">for</span> <span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">x</span> <span class="o">&lt;</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">imageWidth</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">x</span><span class="p">)</span>
<a name="line-397"></a> <span class="p">{</span>
<a name="line-398"></a> <span class="n">dst16</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">unsigned</span> <span class="kt">short</span><span class="p">)(</span><span class="n">scale</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="n">jas_matrix_getv</span><span class="p">(</span><span class="n">pixels</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">x</span> <span class="o">/</span> <span class="n">x_step</span><span class="p">[</span><span class="mi">0</span><span class="p">]));</span>
<a name="line-399"></a> <span class="n">dst16</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">dst16</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
<a name="line-400"></a> <span class="n">dst16</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">dst16</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
<a name="line-401"></a> <span class="n">dst16</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="mh">0xFFFF</span><span class="p">;</span>
<a name="line-402"></a>
<a name="line-403"></a> <span class="n">dst16</span> <span class="o">+=</span> <span class="mi">4</span><span class="p">;</span>
<a name="line-404"></a> <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="k">break</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="k">case</span> <span class="mi">3</span><span class="o">:</span> <span class="c1">// RGB.</span>
<a name="line-411"></a> <span class="p">{</span>
<a name="line-412"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_sixteenBit</span><span class="p">)</span> <span class="c1">// 8 bits image.</span>
<a name="line-413"></a> <span class="p">{</span>
<a name="line-414"></a> <span class="k">for</span> <span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">x</span> <span class="o">&lt;</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">imageWidth</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">x</span><span class="p">)</span>
<a name="line-415"></a> <span class="p">{</span>
<a name="line-416"></a> <span class="c1">// Blue</span>
<a name="line-417"></a> <span class="n">dst</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">uchar</span><span class="p">)(</span><span class="n">scale</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">*</span> <span class="n">jas_matrix_getv</span><span class="p">(</span><span class="n">pixels</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">x</span> <span class="o">/</span> <span class="n">x_step</span><span class="p">[</span><span class="mi">2</span><span class="p">]));</span>
<a name="line-418"></a> <span class="c1">// Green</span>
<a name="line-419"></a> <span class="n">dst</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">uchar</span><span class="p">)(</span><span class="n">scale</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">*</span> <span class="n">jas_matrix_getv</span><span class="p">(</span><span class="n">pixels</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">x</span> <span class="o">/</span> <span class="n">x_step</span><span class="p">[</span><span class="mi">1</span><span class="p">]));</span>
<a name="line-420"></a> <span class="c1">// Red</span>
<a name="line-421"></a> <span class="n">dst</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">uchar</span><span class="p">)(</span><span class="n">scale</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="n">jas_matrix_getv</span><span class="p">(</span><span class="n">pixels</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">x</span> <span class="o">/</span> <span class="n">x_step</span><span class="p">[</span><span class="mi">0</span><span class="p">]));</span>
<a name="line-422"></a> <span class="c1">// Alpha</span>
<a name="line-423"></a> <span class="n">dst</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="mh">0xFF</span><span class="p">;</span>
<a name="line-424"></a>
<a name="line-425"></a> <span class="n">dst</span> <span class="o">+=</span> <span class="mi">4</span><span class="p">;</span>
<a name="line-426"></a> <span class="p">}</span>
<a name="line-427"></a> <span class="p">}</span>
<a name="line-428"></a> <span class="k">else</span> <span class="c1">// 16 bits image.</span>
<a name="line-429"></a> <span class="p">{</span>
<a name="line-430"></a> <span class="k">for</span> <span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">x</span> <span class="o">&lt;</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">imageWidth</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">x</span><span class="p">)</span>
<a name="line-431"></a> <span class="p">{</span>
<a name="line-432"></a> <span class="c1">// Blue</span>
<a name="line-433"></a> <span class="n">dst16</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">unsigned</span> <span class="kt">short</span><span class="p">)(</span><span class="n">scale</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">*</span> <span class="n">jas_matrix_getv</span><span class="p">(</span><span class="n">pixels</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">x</span> <span class="o">/</span> <span class="n">x_step</span><span class="p">[</span><span class="mi">2</span><span class="p">]));</span>
<a name="line-434"></a> <span class="c1">// Green</span>
<a name="line-435"></a> <span class="n">dst16</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="kt">unsigned</span> <span class="kt">short</span><span class="p">)(</span><span class="n">scale</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">*</span> <span class="n">jas_matrix_getv</span><span class="p">(</span><span class="n">pixels</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">x</span> <span class="o">/</span> <span class="n">x_step</span><span class="p">[</span><span class="mi">1</span><span class="p">]));</span>
<a name="line-436"></a> <span class="c1">// Red</span>
<a name="line-437"></a> <span class="n">dst16</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="kt">unsigned</span> <span class="kt">short</span><span class="p">)(</span><span class="n">scale</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="n">jas_matrix_getv</span><span class="p">(</span><span class="n">pixels</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">x</span> <span class="o">/</span> <span class="n">x_step</span><span class="p">[</span><span class="mi">0</span><span class="p">]));</span>
<a name="line-438"></a> <span class="c1">// Alpha</span>
<a name="line-439"></a> <span class="n">dst16</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="mh">0xFFFF</span><span class="p">;</span>
<a name="line-440"></a>
<a name="line-441"></a> <span class="n">dst16</span> <span class="o">+=</span> <span class="mi">4</span><span class="p">;</span>
<a name="line-442"></a> <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="k">break</span><span class="p">;</span>
<a name="line-446"></a> <span class="p">}</span>
<a name="line-447"></a>
<a name="line-448"></a> <span class="k">case</span> <span class="mi">4</span><span class="o">:</span> <span class="c1">// RGBA.</span>
<a name="line-449"></a> <span class="p">{</span>
<a name="line-450"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_sixteenBit</span><span class="p">)</span> <span class="c1">// 8 bits image.</span>
<a name="line-451"></a> <span class="p">{</span>
<a name="line-452"></a> <span class="k">for</span> <span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">x</span> <span class="o">&lt;</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">imageWidth</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">x</span><span class="p">)</span>
<a name="line-453"></a> <span class="p">{</span>
<a name="line-454"></a> <span class="c1">// Blue</span>
<a name="line-455"></a> <span class="n">dst</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">uchar</span><span class="p">)(</span><span class="n">scale</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">*</span> <span class="n">jas_matrix_getv</span><span class="p">(</span><span class="n">pixels</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">x</span> <span class="o">/</span> <span class="n">x_step</span><span class="p">[</span><span class="mi">2</span><span class="p">]));</span>
<a name="line-456"></a> <span class="c1">// Green</span>
<a name="line-457"></a> <span class="n">dst</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">uchar</span><span class="p">)(</span><span class="n">scale</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">*</span> <span class="n">jas_matrix_getv</span><span class="p">(</span><span class="n">pixels</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">x</span> <span class="o">/</span> <span class="n">x_step</span><span class="p">[</span><span class="mi">1</span><span class="p">]));</span>
<a name="line-458"></a> <span class="c1">// Red</span>
<a name="line-459"></a> <span class="n">dst</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">uchar</span><span class="p">)(</span><span class="n">scale</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="n">jas_matrix_getv</span><span class="p">(</span><span class="n">pixels</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">x</span> <span class="o">/</span> <span class="n">x_step</span><span class="p">[</span><span class="mi">0</span><span class="p">]));</span>
<a name="line-460"></a> <span class="c1">// Alpha</span>
<a name="line-461"></a> <span class="n">dst</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">uchar</span><span class="p">)(</span><span class="n">scale</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">*</span> <span class="n">jas_matrix_getv</span><span class="p">(</span><span class="n">pixels</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="n">x</span> <span class="o">/</span> <span class="n">x_step</span><span class="p">[</span><span class="mi">3</span><span class="p">]));</span>
<a name="line-462"></a>
<a name="line-463"></a> <span class="n">dst</span> <span class="o">+=</span> <span class="mi">4</span><span class="p">;</span>
<a name="line-464"></a> <span class="p">}</span>
<a name="line-465"></a> <span class="p">}</span>
<a name="line-466"></a> <span class="k">else</span> <span class="c1">// 16 bits image.</span>
<a name="line-467"></a> <span class="p">{</span>
<a name="line-468"></a> <span class="k">for</span> <span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">x</span> <span class="o">&lt;</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">imageWidth</span><span class="p">()</span> <span class="p">;</span> <span class="o">++</span><span class="n">x</span><span class="p">)</span>
<a name="line-469"></a> <span class="p">{</span>
<a name="line-470"></a> <span class="c1">// Blue</span>
<a name="line-471"></a> <span class="n">dst16</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">unsigned</span> <span class="kt">short</span><span class="p">)(</span><span class="n">scale</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">*</span> <span class="n">jas_matrix_getv</span><span class="p">(</span><span class="n">pixels</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">x</span> <span class="o">/</span> <span class="n">x_step</span><span class="p">[</span><span class="mi">2</span><span class="p">]));</span>
<a name="line-472"></a> <span class="c1">// Green</span>
<a name="line-473"></a> <span class="n">dst16</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="kt">unsigned</span> <span class="kt">short</span><span class="p">)(</span><span class="n">scale</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">*</span> <span class="n">jas_matrix_getv</span><span class="p">(</span><span class="n">pixels</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">x</span> <span class="o">/</span> <span class="n">x_step</span><span class="p">[</span><span class="mi">1</span><span class="p">]));</span>
<a name="line-474"></a> <span class="c1">// Red</span>
<a name="line-475"></a> <span class="n">dst16</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="kt">unsigned</span> <span class="kt">short</span><span class="p">)(</span><span class="n">scale</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="n">jas_matrix_getv</span><span class="p">(</span><span class="n">pixels</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">x</span> <span class="o">/</span> <span class="n">x_step</span><span class="p">[</span><span class="mi">0</span><span class="p">]));</span>
<a name="line-476"></a> <span class="c1">// Alpha</span>
<a name="line-477"></a> <span class="n">dst16</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="kt">unsigned</span> <span class="kt">short</span><span class="p">)(</span><span class="n">scale</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">*</span> <span class="n">jas_matrix_getv</span><span class="p">(</span><span class="n">pixels</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="n">x</span> <span class="o">/</span> <span class="n">x_step</span><span class="p">[</span><span class="mi">3</span><span class="p">]));</span>
<a name="line-478"></a>
<a name="line-479"></a> <span class="n">dst16</span> <span class="o">+=</span> <span class="mi">4</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="k">break</span><span class="p">;</span>
<a name="line-484"></a> <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="c1">// use 0-10% and 90-100% for pseudo-progress</span>
<a name="line-488"></a> <span class="k">if</span> <span class="p">(</span><span class="n">observer</span> <span class="o">&amp;&amp;</span> <span class="n">y</span> <span class="o">&gt;=</span> <span class="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">checkPoint</span><span class="p">)</span>
<a name="line-489"></a> <span class="p">{</span>
<a name="line-490"></a> <span class="n">checkPoint</span> <span class="o">+=</span> <span class="n">granularity</span><span class="p">(</span><span class="n">observer</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="mf">0.8F</span><span class="p">);</span>
<a name="line-491"></a>
<a name="line-492"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">observer</span><span class="o">-&gt;</span><span class="n">continueQuery</span><span class="p">())</span>
<a name="line-493"></a> <span class="p">{</span>
<a name="line-494"></a> <span class="n">jas_image_destroy</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">);</span>
<a name="line-495"></a>
<a name="line-496"></a> <span class="k">for</span> <span class="p">(</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="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">number_components</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-497"></a> <span class="p">{</span>
<a name="line-498"></a> <span class="n">jas_matrix_destroy</span><span class="p">(</span><span class="n">pixels</span><span class="p">[</span><span class="n">i</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="n">jas_cleanup</span><span class="p">();</span>
<a name="line-502"></a>
<a name="line-503"></a> <span class="n">loadingFailed</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">observer</span><span class="o">-&gt;</span><span class="n">progressInfo</span><span class="p">(</span><span class="mf">0.1</span> <span class="o">+</span> <span class="p">(</span><span class="mf">0.8</span> <span class="o">*</span> <span class="p">(((</span><span class="kt">float</span><span class="p">)</span><span class="n">y</span><span class="p">)</span> <span class="o">/</span> <span class="p">((</span><span class="kt">float</span><span class="p">)</span><span class="n">imageHeight</span><span class="p">()))));</span>
<a name="line-508"></a> <span class="p">}</span>
<a name="line-509"></a> <span class="p">}</span>
<a name="line-510"></a> <span class="p">}</span>
<a name="line-511"></a>
<a name="line-512"></a> <span class="c1">// -------------------------------------------------------------------</span>
<a name="line-513"></a> <span class="c1">// Get ICC color profile.</span>
<a name="line-514"></a>
<a name="line-515"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_loadFlags</span> <span class="o">&amp;</span> <span class="n">LoadICCData</span><span class="p">)</span>
<a name="line-516"></a> <span class="p">{</span>
<a name="line-517"></a> <span class="n">jas_iccprof_t</span><span class="o">*</span> <span class="n">icc_profile</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-518"></a> <span class="n">jas_stream_t</span><span class="o">*</span> <span class="n">icc_stream</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-519"></a> <span class="n">jas_cmprof_t</span><span class="o">*</span> <span class="n">cm_profile</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-520"></a>
<a name="line-521"></a> <span class="c1">// To prevent cppcheck warnings.</span>
<a name="line-522"></a> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">icc_profile</span><span class="p">;</span>
<a name="line-523"></a> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">icc_stream</span><span class="p">;</span>
<a name="line-524"></a> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">cm_profile</span><span class="p">;</span>
<a name="line-525"></a>
<a name="line-526"></a> <span class="n">cm_profile</span> <span class="o">=</span> <span class="n">jas_image_cmprof</span><span class="p">(</span><span class="n">jp2_image</span><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">cm_profile</span> <span class="o">!=</span> <span class="k">nullptr</span><span class="p">)</span>
<a name="line-529"></a> <span class="p">{</span>
<a name="line-530"></a> <span class="n">icc_profile</span> <span class="o">=</span> <span class="n">jas_iccprof_createfromcmprof</span><span class="p">(</span><span class="n">cm_profile</span><span class="p">);</span>
<a name="line-531"></a> <span class="p">}</span>
<a name="line-532"></a>
<a name="line-533"></a> <span class="k">if</span> <span class="p">(</span><span class="n">icc_profile</span> <span class="o">!=</span> <span class="k">nullptr</span><span class="p">)</span>
<a name="line-534"></a> <span class="p">{</span>
<a name="line-535"></a> <span class="n">icc_stream</span> <span class="o">=</span> <span class="n">jas_stream_memopen</span><span class="p">(</span><span class="k">nullptr</span><span class="p">,</span> <span class="mi">0</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">icc_stream</span> <span class="o">!=</span> <span class="k">nullptr</span><span class="p">)</span>
<a name="line-538"></a> <span class="p">{</span>
<a name="line-539"></a> <span class="k">if</span> <span class="p">(</span><span class="n">jas_iccprof_save</span><span class="p">(</span><span class="n">icc_profile</span><span class="p">,</span> <span class="n">icc_stream</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="k">if</span> <span class="p">(</span><span class="n">jas_stream_flush</span><span class="p">(</span><span class="n">icc_stream</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-542"></a> <span class="p">{</span>
<a name="line-543"></a> <span class="n">jas_stream_memobj_t</span><span class="o">*</span> <span class="k">const</span> <span class="n">blob</span> <span class="o">=</span> <span class="p">(</span><span class="n">jas_stream_memobj_t</span><span class="o">*</span><span class="p">)</span> <span class="n">icc_stream</span><span class="o">-&gt;</span><span class="n">obj_</span><span class="p">;</span>
<a name="line-544"></a> <span class="n">QByteArray</span> <span class="n">profile_rawdata</span><span class="p">;</span>
<a name="line-545"></a> <span class="n">profile_rawdata</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="n">blob</span><span class="o">-&gt;</span><span class="n">len_</span><span class="p">);</span>
<a name="line-546"></a> <span class="n">memcpy</span><span class="p">(</span><span class="n">profile_rawdata</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">blob</span><span class="o">-&gt;</span><span class="n">buf_</span><span class="p">,</span> <span class="n">blob</span><span class="o">-&gt;</span><span class="n">len_</span><span class="p">);</span>
<a name="line-547"></a> <span class="n">imageSetIccProfile</span><span class="p">(</span><span class="n">IccProfile</span><span class="p">(</span><span class="n">profile_rawdata</span><span class="p">));</span>
<a name="line-548"></a> <span class="n">jas_stream_close</span><span class="p">(</span><span class="n">icc_stream</span><span class="p">);</span>
<a name="line-549"></a> <span class="p">}</span>
<a name="line-550"></a> <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> <span class="k">else</span>
<a name="line-554"></a> <span class="p">{</span>
<a name="line-555"></a> <span class="c1">// If ICC profile is null, check Exif metadata.</span>
<a name="line-556"></a> <span class="n">checkExifWorkingColorSpace</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="n">observer</span><span class="p">)</span>
<a name="line-561"></a> <span class="p">{</span>
<a name="line-562"></a> <span class="n">observer</span><span class="o">-&gt;</span><span class="n">progressInfo</span><span class="p">(</span><span class="mf">1.0</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">imageData</span><span class="p">()</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">take</span><span class="p">();</span>
<a name="line-566"></a> <span class="n">imageSetAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;format&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;JP2&quot;</span><span class="p">));</span>
<a name="line-567"></a> <span class="n">imageSetAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;originalColorModel&quot;</span><span class="p">),</span> <span class="n">colorModel</span><span class="p">);</span>
<a name="line-568"></a> <span class="n">imageSetAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;originalBitDepth&quot;</span><span class="p">),</span> <span class="n">maximum_component_depth</span><span class="p">);</span>
<a name="line-569"></a> <span class="n">imageSetAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;originalSize&quot;</span><span class="p">),</span> <span class="n">QSize</span><span class="p">(</span><span class="n">imageWidth</span><span class="p">(),</span> <span class="n">imageHeight</span><span class="p">()));</span>
<a name="line-570"></a>
<a name="line-571"></a> <span class="n">jas_image_destroy</span><span class="p">(</span><span class="n">jp2_image</span><span class="p">);</span>
<a name="line-572"></a>
<a name="line-573"></a> <span class="k">for</span> <span class="p">(</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="p">(</span><span class="kt">long</span><span class="p">)</span><span class="n">number_components</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-574"></a> <span class="p">{</span>
<a name="line-575"></a> <span class="n">jas_matrix_destroy</span><span class="p">(</span><span class="n">pixels</span><span class="p">[</span><span class="n">i</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="n">jas_cleanup</span><span class="p">();</span>
<a name="line-579"></a>
<a name="line-580"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-581"></a><span class="p">}</span>
<a name="line-582"></a>
<a name="line-583"></a><span class="p">}</span> <span class="c1">// namespace DigikamJPEG2000DImgPlugin</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 72b17bf05..389b5e19e 100644
--- a/static/reports/cppcheck/master/1.html
+++ b/static/reports/cppcheck/master/1.html
@@ -1,1691 +1,1691 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/dimg/tiff/dimgtiffloader_load.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/dimg/tiff/dimgtiffloader_load.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> dimgtiffloader_load.cpp</p>
<a href='1.html#line-344'> knownConditionTrueFalse 344</a><a href='1.html#line-351'> knownConditionTrueFalse 351</a><a href='1.html#line-399'> knownConditionTrueFalse 399</a><a href='1.html#line-406'> knownConditionTrueFalse 406</a><a href='1.html#line-552'> knownConditionTrueFalse 552</a><a href='1.html#line-559'> knownConditionTrueFalse 559</a><a href='1.html#line-607'> knownConditionTrueFalse 607</a><a href='1.html#line-614'> knownConditionTrueFalse 614</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</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-06-17</span>
<a name="line-7"></a><span class="cm"> * Description : A TIFF IO file for DImg framework - load operations</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 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-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)</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="c1">// C ANSI includes</span>
<a name="line-26"></a><span class="k">extern</span> <span class="s">&quot;C&quot;</span>
<a name="line-27"></a><span class="p">{</span>
<a name="line-28"></a><span class="cp">#include</span> <span class="cpf">&lt;tiffvers.h&gt;</span><span class="cp"></span>
<a name="line-29"></a><span class="p">}</span>
<a name="line-30"></a>
<a name="line-31"></a><span class="c1">// C++ includes</span>
<a name="line-32"></a>
<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;cstdio&gt;</span><span class="cp"></span>
<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;cmath&gt;</span><span class="cp"></span>
<a name="line-35"></a>
<a name="line-36"></a><span class="c1">// Qt includes</span>
<a name="line-37"></a>
<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&lt;QFile&gt;</span><span class="cp"></span>
<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&lt;QByteArray&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;digikam_config.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;dimgloaderobserver.h&quot;</span><span class="cp"></span>
<a name="line-46"></a><span class="cp">#include</span> <span class="cpf">&quot;dimgtiffloader.h&quot; //krazy:exclude=includes</span><span class="cp"></span>
<a name="line-47"></a>
<a name="line-48"></a><span class="k">namespace</span> <span class="n">DigikamTIFFDImgPlugin</span>
<a name="line-49"></a><span class="p">{</span>
<a name="line-50"></a>
<a name="line-51"></a><span class="kt">bool</span> <span class="n">DImgTIFFLoader</span><span class="o">::</span><span class="n">load</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> <span class="n">DImgLoaderObserver</span><span class="o">*</span> <span class="k">const</span> <span class="n">observer</span><span class="p">)</span>
<a name="line-52"></a><span class="p">{</span>
<a name="line-53"></a> <span class="n">readMetadata</span><span class="p">(</span><span class="n">filePath</span><span class="p">);</span>
<a name="line-54"></a>
<a name="line-55"></a> <span class="c1">// -------------------------------------------------------------------</span>
<a name="line-56"></a> <span class="c1">// TIFF error handling. If an errors/warnings occurs during reading,</span>
<a name="line-57"></a> <span class="c1">// libtiff will call these methods</span>
<a name="line-58"></a>
<a name="line-59"></a><span class="cp">#ifdef Q_OS_WIN</span>
<a name="line-60"></a> <span class="n">TIFFSetWarningHandler</span><span class="p">(</span><span class="nb">NULL</span><span class="p">);</span>
<a name="line-61"></a><span class="cp">#else</span>
<a name="line-62"></a> <span class="n">TIFFSetWarningHandler</span><span class="p">(</span><span class="n">dimg_tiff_warning</span><span class="p">);</span>
<a name="line-63"></a><span class="cp">#endif</span>
<a name="line-64"></a>
<a name="line-65"></a> <span class="n">TIFFSetErrorHandler</span><span class="p">(</span><span class="n">dimg_tiff_error</span><span class="p">);</span>
<a name="line-66"></a>
<a name="line-67"></a> <span class="c1">// -------------------------------------------------------------------</span>
<a name="line-68"></a> <span class="c1">// Open the file</span>
<a name="line-69"></a>
<a name="line-70"></a> <span class="n">TIFF</span><span class="o">*</span> <span class="k">const</span> <span class="n">tif</span> <span class="o">=</span> <span class="n">TIFFOpen</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">filePath</span><span class="p">).</span><span class="n">constData</span><span class="p">(),</span> <span class="s">&quot;r&quot;</span><span class="p">);</span>
<a name="line-71"></a>
<a name="line-72"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">tif</span><span class="p">)</span>
<a name="line-73"></a> <span class="p">{</span>
<a name="line-74"></a> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_DIMG_LOG_TIFF</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Cannot open image file.&quot;</span><span class="p">;</span>
<a name="line-75"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-76"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-77"></a> <span class="p">}</span>
<a name="line-78"></a>
<a name="line-79"></a> <span class="k">if</span> <span class="p">(</span><span class="n">DIGIKAM_DIMG_LOG_TIFF</span><span class="p">().</span><span class="n">isDebugEnabled</span><span class="p">())</span>
<a name="line-80"></a> <span class="p">{</span>
<a name="line-81"></a> <span class="n">TIFFPrintDirectory</span><span class="p">(</span><span class="n">tif</span><span class="p">,</span> <span class="n">stdout</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<a name="line-82"></a> <span class="p">}</span>
<a name="line-83"></a>
<a name="line-84"></a> <span class="c1">// -------------------------------------------------------------------</span>
<a name="line-85"></a> <span class="c1">// Get image information.</span>
<a name="line-86"></a>
<a name="line-87"></a> <span class="n">uint32</span> <span class="n">w</span><span class="p">,</span> <span class="n">h</span><span class="p">;</span>
<a name="line-88"></a> <span class="n">uint16</span> <span class="n">bits_per_sample</span><span class="p">;</span>
<a name="line-89"></a> <span class="n">uint16</span> <span class="n">samples_per_pixel</span><span class="p">;</span>
<a name="line-90"></a> <span class="n">uint16</span> <span class="n">photometric</span><span class="p">;</span>
<a name="line-91"></a> <span class="n">uint16</span> <span class="n">planar_config</span><span class="p">;</span>
<a name="line-92"></a> <span class="n">uint32</span> <span class="n">rows_per_strip</span><span class="p">;</span>
<a name="line-93"></a> <span class="n">tsize_t</span> <span class="n">strip_size</span><span class="p">;</span>
<a name="line-94"></a> <span class="n">tstrip_t</span> <span class="n">num_of_strips</span><span class="p">;</span>
<a name="line-95"></a>
<a name="line-96"></a> <span class="n">TIFFGetFieldDefaulted</span><span class="p">(</span><span class="n">tif</span><span class="p">,</span> <span class="n">TIFFTAG_IMAGEWIDTH</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">w</span><span class="p">);</span>
<a name="line-97"></a> <span class="n">TIFFGetFieldDefaulted</span><span class="p">(</span><span class="n">tif</span><span class="p">,</span> <span class="n">TIFFTAG_IMAGELENGTH</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">h</span><span class="p">);</span>
<a name="line-98"></a>
<a name="line-99"></a> <span class="n">TIFFGetFieldDefaulted</span><span class="p">(</span><span class="n">tif</span><span class="p">,</span> <span class="n">TIFFTAG_BITSPERSAMPLE</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">bits_per_sample</span><span class="p">);</span>
<a name="line-100"></a> <span class="n">TIFFGetFieldDefaulted</span><span class="p">(</span><span class="n">tif</span><span class="p">,</span> <span class="n">TIFFTAG_SAMPLESPERPIXEL</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">samples_per_pixel</span><span class="p">);</span>
<a name="line-101"></a> <span class="n">TIFFGetFieldDefaulted</span><span class="p">(</span><span class="n">tif</span><span class="p">,</span> <span class="n">TIFFTAG_PLANARCONFIG</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">planar_config</span><span class="p">);</span>
<a name="line-102"></a>
<a name="line-103"></a> <span class="k">if</span> <span class="p">(</span><span class="n">TIFFGetFieldDefaulted</span><span class="p">(</span><span class="n">tif</span><span class="p">,</span> <span class="n">TIFFTAG_ROWSPERSTRIP</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">rows_per_strip</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">||</span> <span class="n">rows_per_strip</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> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_DIMG_LOG_TIFF</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;TIFF loader: Cannot handle non-stripped images. Loading file &quot;</span>
<a name="line-106"></a> <span class="o">&lt;&lt;</span> <span class="n">filePath</span><span class="p">;</span>
<a name="line-107"></a> <span class="n">TIFFClose</span><span class="p">(</span><span class="n">tif</span><span class="p">);</span>
<a name="line-108"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-109"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-110"></a> <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="n">rows_per_strip</span> <span class="o">&gt;</span> <span class="n">h</span><span class="p">)</span>
<a name="line-113"></a> <span class="p">{</span>
<a name="line-114"></a> <span class="n">rows_per_strip</span> <span class="o">=</span> <span class="n">h</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="k">if</span> <span class="p">(</span> <span class="n">bits_per_sample</span> <span class="o">==</span> <span class="mi">0</span>
<a name="line-118"></a> <span class="o">||</span> <span class="n">samples_per_pixel</span> <span class="o">==</span> <span class="mi">0</span>
<a name="line-119"></a> <span class="o">||</span> <span class="n">rows_per_strip</span> <span class="o">==</span> <span class="mi">0</span>
<a name="line-120"></a><span class="c1">// || rows_per_strip &gt; h</span>
<a name="line-121"></a> <span class="p">)</span>
<a name="line-122"></a> <span class="p">{</span>
<a name="line-123"></a> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_DIMG_LOG_TIFF</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;TIFF loader: Encountered invalid value in image.&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span>
<a name="line-124"></a> <span class="o">&lt;&lt;</span> <span class="s">&quot; bits_per_sample : &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">bits_per_sample</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span>
<a name="line-125"></a> <span class="o">&lt;&lt;</span> <span class="s">&quot; samples_per_pixel : &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">samples_per_pixel</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span>
<a name="line-126"></a> <span class="o">&lt;&lt;</span> <span class="s">&quot; rows_per_strip : &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">rows_per_strip</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span>
<a name="line-127"></a> <span class="o">&lt;&lt;</span> <span class="s">&quot; h : &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">h</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span>
<a name="line-128"></a> <span class="o">&lt;&lt;</span> <span class="s">&quot; Loading file : &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">filePath</span><span class="p">;</span>
<a name="line-129"></a> <span class="n">TIFFClose</span><span class="p">(</span><span class="n">tif</span><span class="p">);</span>
<a name="line-130"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-131"></a> <span class="k">return</span> <span class="nb">false</span><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="c1">// TODO: check others TIFF color-spaces here. Actually, only RGB, PALETTE and MINISBLACK</span>
<a name="line-135"></a> <span class="c1">// have been tested.</span>
<a name="line-136"></a> <span class="c1">// Complete description of TIFFTAG_PHOTOMETRIC tag can be found at this url:</span>
<a name="line-137"></a> <span class="c1">// http://www.awaresystems.be/imaging/tiff/tifftags/photometricinterpretation.html</span>
<a name="line-138"></a>
<a name="line-139"></a> <span class="n">TIFFGetFieldDefaulted</span><span class="p">(</span><span class="n">tif</span><span class="p">,</span> <span class="n">TIFFTAG_PHOTOMETRIC</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">photometric</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="n">photometric</span> <span class="o">!=</span> <span class="n">PHOTOMETRIC_RGB</span> <span class="o">&amp;&amp;</span>
<a name="line-142"></a> <span class="n">photometric</span> <span class="o">!=</span> <span class="n">PHOTOMETRIC_PALETTE</span> <span class="o">&amp;&amp;</span>
<a name="line-143"></a> <span class="n">photometric</span> <span class="o">!=</span> <span class="n">PHOTOMETRIC_MINISWHITE</span> <span class="o">&amp;&amp;</span>
<a name="line-144"></a> <span class="n">photometric</span> <span class="o">!=</span> <span class="n">PHOTOMETRIC_MINISBLACK</span> <span class="o">&amp;&amp;</span>
<a name="line-145"></a> <span class="p">((</span><span class="n">photometric</span> <span class="o">!=</span> <span class="n">PHOTOMETRIC_YCBCR</span><span class="p">)</span> <span class="o">|</span> <span class="p">(</span><span class="n">bits_per_sample</span> <span class="o">!=</span> <span class="mi">8</span><span class="p">))</span> <span class="o">&amp;&amp;</span>
<a name="line-146"></a> <span class="p">((</span><span class="n">photometric</span> <span class="o">!=</span> <span class="n">PHOTOMETRIC_SEPARATED</span><span class="p">)</span> <span class="o">|</span> <span class="p">(</span><span class="n">bits_per_sample</span> <span class="o">!=</span> <span class="mi">8</span><span class="p">))</span> <span class="o">&amp;&amp;</span>
<a name="line-147"></a> <span class="p">(</span><span class="n">m_loadFlags</span> <span class="o">&amp;</span> <span class="n">LoadImageData</span><span class="p">))</span>
<a name="line-148"></a> <span class="p">{</span>
<a name="line-149"></a> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_DIMG_LOG_TIFF</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Can not handle image without RGB color-space: &quot;</span>
<a name="line-150"></a> <span class="o">&lt;&lt;</span> <span class="n">photometric</span><span class="p">;</span>
<a name="line-151"></a> <span class="n">TIFFClose</span><span class="p">(</span><span class="n">tif</span><span class="p">);</span>
<a name="line-152"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-153"></a> <span class="k">return</span> <span class="nb">false</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">int</span> <span class="n">colorModel</span> <span class="o">=</span> <span class="n">DImg</span><span class="o">::</span><span class="n">COLORMODELUNKNOWN</span><span class="p">;</span>
<a name="line-157"></a>
<a name="line-158"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">photometric</span><span class="p">)</span>
<a name="line-159"></a> <span class="p">{</span>
<a name="line-160"></a> <span class="k">case</span> <span class="nl">PHOTOMETRIC_MINISWHITE</span><span class="p">:</span>
<a name="line-161"></a> <span class="k">case</span> <span class="nl">PHOTOMETRIC_MINISBLACK</span><span class="p">:</span>
<a name="line-162"></a> <span class="n">colorModel</span> <span class="o">=</span> <span class="n">DImg</span><span class="o">::</span><span class="n">GRAYSCALE</span><span class="p">;</span>
<a name="line-163"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-164"></a>
<a name="line-165"></a> <span class="k">case</span> <span class="nl">PHOTOMETRIC_RGB</span><span class="p">:</span>
<a name="line-166"></a> <span class="n">colorModel</span> <span class="o">=</span> <span class="n">DImg</span><span class="o">::</span><span class="n">RGB</span><span class="p">;</span>
<a name="line-167"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-168"></a>
<a name="line-169"></a> <span class="k">case</span> <span class="nl">PHOTOMETRIC_PALETTE</span><span class="p">:</span>
<a name="line-170"></a> <span class="n">colorModel</span> <span class="o">=</span> <span class="n">DImg</span><span class="o">::</span><span class="n">INDEXED</span><span class="p">;</span>
<a name="line-171"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-172"></a>
<a name="line-173"></a> <span class="k">case</span> <span class="nl">PHOTOMETRIC_MASK</span><span class="p">:</span>
<a name="line-174"></a> <span class="n">colorModel</span> <span class="o">=</span> <span class="n">DImg</span><span class="o">::</span><span class="n">MONOCHROME</span><span class="p">;</span>
<a name="line-175"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-176"></a>
<a name="line-177"></a> <span class="k">case</span> <span class="nl">PHOTOMETRIC_SEPARATED</span><span class="p">:</span>
<a name="line-178"></a> <span class="n">colorModel</span> <span class="o">=</span> <span class="n">DImg</span><span class="o">::</span><span class="n">CMYK</span><span class="p">;</span>
<a name="line-179"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-180"></a>
<a name="line-181"></a> <span class="k">case</span> <span class="nl">PHOTOMETRIC_YCBCR</span><span class="p">:</span>
<a name="line-182"></a> <span class="n">colorModel</span> <span class="o">=</span> <span class="n">DImg</span><span class="o">::</span><span class="n">YCBCR</span><span class="p">;</span>
<a name="line-183"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-184"></a>
<a name="line-185"></a> <span class="k">case</span> <span class="nl">PHOTOMETRIC_CIELAB</span><span class="p">:</span>
<a name="line-186"></a> <span class="k">case</span> <span class="nl">PHOTOMETRIC_ICCLAB</span><span class="p">:</span>
<a name="line-187"></a> <span class="k">case</span> <span class="nl">PHOTOMETRIC_ITULAB</span><span class="p">:</span>
<a name="line-188"></a> <span class="n">colorModel</span> <span class="o">=</span> <span class="n">DImg</span><span class="o">::</span><span class="n">CIELAB</span><span class="p">;</span>
<a name="line-189"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-190"></a>
<a name="line-191"></a> <span class="k">case</span> <span class="nl">PHOTOMETRIC_LOGL</span><span class="p">:</span>
<a name="line-192"></a> <span class="k">case</span> <span class="nl">PHOTOMETRIC_LOGLUV</span><span class="p">:</span>
<a name="line-193"></a> <span class="n">colorModel</span> <span class="o">=</span> <span class="n">DImg</span><span class="o">::</span><span class="n">COLORMODELRAW</span><span class="p">;</span>
<a name="line-194"></a> <span class="k">break</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="k">if</span> <span class="p">(</span><span class="n">samples_per_pixel</span> <span class="o">==</span> <span class="mi">4</span><span class="p">)</span>
<a name="line-198"></a> <span class="p">{</span>
<a name="line-199"></a> <span class="n">m_hasAlpha</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-200"></a> <span class="p">}</span>
<a name="line-201"></a> <span class="k">else</span>
<a name="line-202"></a> <span class="p">{</span>
<a name="line-203"></a> <span class="n">m_hasAlpha</span> <span class="o">=</span> <span class="nb">false</span><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="k">if</span> <span class="p">(</span><span class="n">bits_per_sample</span> <span class="o">==</span> <span class="mi">16</span> <span class="o">||</span> <span class="n">bits_per_sample</span> <span class="o">==</span> <span class="mi">32</span><span class="p">)</span>
<a name="line-207"></a> <span class="p">{</span>
<a name="line-208"></a> <span class="n">m_sixteenBit</span> <span class="o">=</span> <span class="nb">true</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">m_sixteenBit</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-213"></a> <span class="p">}</span>
<a name="line-214"></a>
<a name="line-215"></a> <span class="c1">// -------------------------------------------------------------------</span>
<a name="line-216"></a> <span class="c1">// Read image ICC profile</span>
<a name="line-217"></a>
<a name="line-218"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_loadFlags</span> <span class="o">&amp;</span> <span class="n">LoadICCData</span><span class="p">)</span>
<a name="line-219"></a> <span class="p">{</span>
<a name="line-220"></a> <span class="n">uchar</span><span class="o">*</span> <span class="n">profile_data</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-221"></a> <span class="n">uint32</span> <span class="n">profile_size</span><span class="p">;</span>
<a name="line-222"></a>
<a name="line-223"></a> <span class="k">if</span> <span class="p">(</span><span class="n">TIFFGetField</span><span class="p">(</span><span class="n">tif</span><span class="p">,</span> <span class="n">TIFFTAG_ICCPROFILE</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">profile_size</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">profile_data</span><span class="p">))</span>
<a name="line-224"></a> <span class="p">{</span>
<a name="line-225"></a> <span class="n">QByteArray</span> <span class="n">profile_rawdata</span><span class="p">;</span>
<a name="line-226"></a> <span class="n">profile_rawdata</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="n">profile_size</span><span class="p">);</span>
<a name="line-227"></a> <span class="n">memcpy</span><span class="p">(</span><span class="n">profile_rawdata</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">profile_data</span><span class="p">,</span> <span class="n">profile_size</span><span class="p">);</span>
<a name="line-228"></a> <span class="n">imageSetIccProfile</span><span class="p">(</span><span class="n">IccProfile</span><span class="p">(</span><span class="n">profile_rawdata</span><span class="p">));</span>
<a name="line-229"></a> <span class="p">}</span>
<a name="line-230"></a> <span class="k">else</span>
<a name="line-231"></a> <span class="p">{</span>
<a name="line-232"></a> <span class="c1">// If ICC profile is null, check Exif metadata.</span>
<a name="line-233"></a> <span class="n">checkExifWorkingColorSpace</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="c1">// -------------------------------------------------------------------</span>
<a name="line-238"></a> <span class="c1">// Get image data.</span>
<a name="line-239"></a>
<a name="line-240"></a> <span class="n">QScopedArrayPointer</span><span class="o">&lt;</span><span class="n">uchar</span><span class="o">&gt;</span> <span class="n">data</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">m_loadFlags</span> <span class="o">&amp;</span> <span class="n">LoadImageData</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">observer</span><span class="p">)</span>
<a name="line-245"></a> <span class="p">{</span>
<a name="line-246"></a> <span class="n">observer</span><span class="o">-&gt;</span><span class="n">progressInfo</span><span class="p">(</span><span class="mf">0.1F</span><span class="p">);</span>
<a name="line-247"></a> <span class="p">}</span>
<a name="line-248"></a>
<a name="line-249"></a> <span class="n">strip_size</span> <span class="o">=</span> <span class="n">TIFFStripSize</span><span class="p">(</span><span class="n">tif</span><span class="p">);</span>
<a name="line-250"></a> <span class="n">num_of_strips</span> <span class="o">=</span> <span class="n">TIFFNumberOfStrips</span><span class="p">(</span><span class="n">tif</span><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="n">bits_per_sample</span> <span class="o">==</span> <span class="mi">16</span><span class="p">)</span> <span class="c1">// 16 bits image.</span>
<a name="line-253"></a> <span class="p">{</span>
<a name="line-254"></a> <span class="n">data</span><span class="p">.</span><span class="n">reset</span><span class="p">(</span><span class="n">new_failureTolerant</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="mi">8</span><span class="p">));</span>
<a name="line-255"></a> <span class="n">QScopedArrayPointer</span><span class="o">&lt;</span><span class="n">uchar</span><span class="o">&gt;</span> <span class="n">strip</span><span class="p">(</span><span class="n">new_failureTolerant</span><span class="p">(</span><span class="n">strip_size</span><span class="p">));</span>
<a name="line-256"></a>
<a name="line-257"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">data</span> <span class="o">||</span> <span class="n">strip</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-258"></a> <span class="p">{</span>
<a name="line-259"></a> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_DIMG_LOG_TIFF</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Failed to allocate memory for TIFF image&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">filePath</span><span class="p">;</span>
<a name="line-260"></a> <span class="n">TIFFClose</span><span class="p">(</span><span class="n">tif</span><span class="p">);</span>
<a name="line-261"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-262"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-263"></a> <span class="p">}</span>
<a name="line-264"></a>
<a name="line-265"></a> <span class="kt">long</span> <span class="n">offset</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-266"></a> <span class="kt">long</span> <span class="n">bytesRead</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-267"></a> <span class="n">uint</span> <span class="n">checkpoint</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-268"></a>
<a name="line-269"></a> <span class="k">for</span> <span class="p">(</span><span class="n">tstrip_t</span> <span class="n">st</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">st</span> <span class="o">&lt;</span> <span class="n">num_of_strips</span> <span class="p">;</span> <span class="o">++</span><span class="n">st</span><span class="p">)</span>
<a name="line-270"></a> <span class="p">{</span>
<a name="line-271"></a> <span class="k">if</span> <span class="p">(</span><span class="n">observer</span> <span class="o">&amp;&amp;</span> <span class="n">st</span> <span class="o">==</span> <span class="n">checkpoint</span><span class="p">)</span>
<a name="line-272"></a> <span class="p">{</span>
<a name="line-273"></a> <span class="n">checkpoint</span> <span class="o">+=</span> <span class="n">granularity</span><span class="p">(</span><span class="n">observer</span><span class="p">,</span> <span class="n">num_of_strips</span><span class="p">,</span> <span class="mf">0.8F</span><span class="p">);</span>
<a name="line-274"></a>
<a name="line-275"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">observer</span><span class="o">-&gt;</span><span class="n">continueQuery</span><span class="p">())</span>
<a name="line-276"></a> <span class="p">{</span>
<a name="line-277"></a> <span class="n">TIFFClose</span><span class="p">(</span><span class="n">tif</span><span class="p">);</span>
<a name="line-278"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-279"></a> <span class="k">return</span> <span class="nb">false</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="n">observer</span><span class="o">-&gt;</span><span class="n">progressInfo</span><span class="p">(</span><span class="mf">0.1</span> <span class="o">+</span> <span class="p">(</span><span class="mf">0.8</span> <span class="o">*</span> <span class="p">(((</span><span class="kt">float</span><span class="p">)</span><span class="n">st</span><span class="p">)</span> <span class="o">/</span> <span class="p">((</span><span class="kt">float</span><span class="p">)</span><span class="n">num_of_strips</span><span class="p">))));</span>
<a name="line-283"></a> <span class="p">}</span>
<a name="line-284"></a>
<a name="line-285"></a> <span class="n">bytesRead</span> <span class="o">=</span> <span class="n">TIFFReadEncodedStrip</span><span class="p">(</span><span class="n">tif</span><span class="p">,</span> <span class="n">st</span><span class="p">,</span> <span class="n">strip</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">strip_size</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">bytesRead</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<a name="line-288"></a> <span class="p">{</span>
<a name="line-289"></a> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_DIMG_LOG_TIFF</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Failed to read strip&quot;</span><span class="p">;</span>
<a name="line-290"></a> <span class="n">TIFFClose</span><span class="p">(</span><span class="n">tif</span><span class="p">);</span>
<a name="line-291"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-292"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-293"></a> <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">num_of_strips</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">samples_per_pixel</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">))</span>
<a name="line-296"></a> <span class="p">{</span>
<a name="line-297"></a> <span class="k">if</span> <span class="p">((</span><span class="n">planar_config</span> <span class="o">==</span> <span class="n">PLANARCONFIG_SEPARATE</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
<a name="line-298"></a> <span class="p">(</span><span class="n">remainder</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span><span class="n">st</span><span class="p">,</span> <span class="p">(</span><span class="kt">double</span><span class="p">)(</span><span class="n">num_of_strips</span> <span class="o">/</span> <span class="n">samples_per_pixel</span><span class="p">))</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">))</span>
<a name="line-299"></a> <span class="p">{</span>
<a name="line-300"></a> <span class="n">offset</span> <span class="o">=</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="p">}</span>
<a name="line-303"></a>
<a name="line-304"></a> <span class="n">ushort</span><span class="o">*</span> <span class="n">stripPtr</span> <span class="o">=</span> <span class="k">reinterpret_cast</span><span class="o">&lt;</span><span class="n">ushort</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">strip</span><span class="p">.</span><span class="n">data</span><span class="p">());</span>
<a name="line-305"></a> <span class="n">ushort</span><span class="o">*</span> <span class="n">dataPtr</span> <span class="o">=</span> <span class="k">reinterpret_cast</span><span class="o">&lt;</span><span class="n">ushort</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">data</span><span class="p">()</span> <span class="o">+</span> <span class="n">offset</span><span class="p">);</span>
<a name="line-306"></a> <span class="n">ushort</span><span class="o">*</span> <span class="n">p</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-307"></a>
<a name="line-308"></a> <span class="c1">// tiff data is read as BGR or ABGR or Greyscale</span>
<a name="line-309"></a>
<a name="line-310"></a> <span class="k">if</span> <span class="p">(</span><span class="n">samples_per_pixel</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="c1">// See bug #148400: Greyscale pictures only have _one_ sample per pixel</span>
<a name="line-311"></a> <span class="p">{</span>
<a name="line-312"></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="p">(</span><span class="n">bytesRead</span> <span class="o">/</span> <span class="mi">2</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-313"></a> <span class="p">{</span>
<a name="line-314"></a> <span class="c1">// We have to read two bytes for one pixel</span>
<a name="line-315"></a> <span class="n">p</span> <span class="o">=</span> <span class="n">dataPtr</span><span class="p">;</span>
<a name="line-316"></a>
<a name="line-317"></a> <span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="o">*</span><span class="n">stripPtr</span><span class="p">;</span> <span class="c1">// RGB have to be set to the _same_ value</span>
<a name="line-318"></a> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="o">*</span><span class="n">stripPtr</span><span class="p">;</span>
<a name="line-319"></a> <span class="n">p</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span><span class="p">;</span>
<a name="line-320"></a> <span class="n">p</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="mh">0xFFFF</span><span class="p">;</span> <span class="c1">// set alpha to 100%</span>
<a name="line-321"></a>
<a name="line-322"></a> <span class="n">dataPtr</span> <span class="o">+=</span> <span class="mi">4</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">offset</span> <span class="o">+=</span> <span class="n">bytesRead</span> <span class="o">*</span> <span class="mi">4</span><span class="p">;</span> <span class="c1">// The _byte_offset in the data array is, of course, four times bytesRead</span>
<a name="line-326"></a> <span class="p">}</span>
<a name="line-327"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">samples_per_pixel</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
<a name="line-328"></a> <span class="p">(</span><span class="n">planar_config</span> <span class="o">==</span> <span class="n">PLANARCONFIG_CONTIG</span><span class="p">))</span>
<a name="line-329"></a> <span class="p">{</span>
<a name="line-330"></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="p">(</span><span class="n">bytesRead</span> <span class="o">/</span> <span class="mi">6</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-331"></a> <span class="p">{</span>
<a name="line-332"></a> <span class="n">p</span> <span class="o">=</span> <span class="n">dataPtr</span><span class="p">;</span>
<a name="line-333"></a>
<a name="line-334"></a> <span class="n">p</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span><span class="p">;</span>
<a name="line-335"></a> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span><span class="p">;</span>
<a name="line-336"></a> <span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span><span class="p">;</span>
<a name="line-337"></a> <span class="n">p</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="mh">0xFFFF</span><span class="p">;</span>
<a name="line-338"></a>
<a name="line-339"></a> <span class="n">dataPtr</span> <span class="o">+=</span> <span class="mi">4</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="n">offset</span> <span class="o">+=</span> <span class="n">bytesRead</span> <span class="o">/</span> <span class="mi">6</span> <span class="o">*</span> <span class="mi">8</span><span class="p">;</span>
<a name="line-343"></a> <span class="p">}</span>
<a name="line-344"></a><span class="hll"> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">samples_per_pixel</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span> <span class="o">&amp;&amp;</span><span class='error2'>&lt;--- Assuming that condition 'samples_per_pixel==3' is not redundant</span>
</span><a name="line-345"></a> <span class="p">(</span><span class="n">planar_config</span> <span class="o">==</span> <span class="n">PLANARCONFIG_SEPARATE</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="p">(</span><span class="n">bytesRead</span> <span class="o">/</span> <span class="mi">2</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="n">p</span> <span class="o">=</span> <span class="n">dataPtr</span><span class="p">;</span>
<a name="line-350"></a>
<a name="line-351"></a><span class="hll"> <span class="k">if</span> <span class="p">(</span><span class="n">samples_per_pixel</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span><span class='error2'>&lt;--- Condition 'samples_per_pixel!=0' is always true</span>
</span><a name="line-352"></a> <span class="p">{</span>
<a name="line-353"></a> <span class="kt">int</span> <span class="n">den</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">num_of_strips</span> <span class="o">/</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">samples_per_pixel</span><span class="p">;</span>
<a name="line-354"></a>
<a name="line-355"></a> <span class="k">if</span> <span class="p">(</span><span class="n">den</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-356"></a> <span class="p">{</span>
<a name="line-357"></a> <span class="kt">int</span> <span class="n">val</span> <span class="o">=</span> <span class="n">st</span> <span class="o">/</span> <span class="n">den</span><span class="p">;</span>
<a name="line-358"></a>
<a name="line-359"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">val</span><span class="p">)</span>
<a name="line-360"></a> <span class="p">{</span>
<a name="line-361"></a> <span class="k">case</span> <span class="mi">0</span><span class="o">:</span>
<a name="line-362"></a> <span class="n">p</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span><span class="p">;</span>
<a name="line-363"></a> <span class="n">p</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="mh">0xFFFF</span><span class="p">;</span>
<a name="line-364"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-365"></a>
<a name="line-366"></a> <span class="k">case</span> <span class="mi">1</span><span class="o">:</span>
<a name="line-367"></a> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span><span class="p">;</span>
<a name="line-368"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-369"></a>
<a name="line-370"></a> <span class="k">case</span> <span class="mi">2</span><span class="o">:</span>
<a name="line-371"></a> <span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span><span class="p">;</span>
<a name="line-372"></a> <span class="k">break</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">dataPtr</span> <span class="o">+=</span> <span class="mi">4</span><span class="p">;</span>
<a name="line-376"></a> <span class="p">}</span>
<a name="line-377"></a> <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">offset</span> <span class="o">+=</span> <span class="n">bytesRead</span> <span class="o">/</span> <span class="mi">2</span> <span class="o">*</span> <span class="mi">8</span><span class="p">;</span>
<a name="line-381"></a> <span class="p">}</span>
<a name="line-382"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">samples_per_pixel</span> <span class="o">==</span> <span class="mi">4</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
<a name="line-383"></a> <span class="p">(</span><span class="n">planar_config</span> <span class="o">==</span> <span class="n">PLANARCONFIG_CONTIG</span><span class="p">))</span>
<a name="line-384"></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="p">(</span><span class="n">bytesRead</span> <span class="o">/</span> <span class="mi">8</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">p</span> <span class="o">=</span> <span class="n">dataPtr</span><span class="p">;</span>
<a name="line-388"></a>
<a name="line-389"></a> <span class="n">p</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span><span class="p">;</span>
<a name="line-390"></a> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span><span class="p">;</span>
<a name="line-391"></a> <span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span><span class="p">;</span>
<a name="line-392"></a> <span class="n">p</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span><span class="p">;</span>
<a name="line-393"></a>
<a name="line-394"></a> <span class="n">dataPtr</span> <span class="o">+=</span> <span class="mi">4</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="n">offset</span> <span class="o">+=</span> <span class="n">bytesRead</span><span class="p">;</span>
<a name="line-398"></a> <span class="p">}</span>
<a name="line-399"></a><span class="hll"> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">samples_per_pixel</span> <span class="o">==</span> <span class="mi">4</span><span class="p">)</span> <span class="o">&amp;&amp;</span><span class='error2'>&lt;--- Assuming that condition 'samples_per_pixel==4' is not redundant</span>
</span><a name="line-400"></a> <span class="p">(</span><span class="n">planar_config</span> <span class="o">==</span> <span class="n">PLANARCONFIG_SEPARATE</span><span class="p">))</span>
<a name="line-401"></a> <span class="p">{</span>
<a name="line-402"></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="p">(</span><span class="n">bytesRead</span> <span class="o">/</span> <span class="mi">2</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-403"></a> <span class="p">{</span>
<a name="line-404"></a> <span class="n">p</span> <span class="o">=</span> <span class="n">dataPtr</span><span class="p">;</span>
<a name="line-405"></a>
<a name="line-406"></a><span class="hll"> <span class="k">if</span> <span class="p">(</span><span class="n">samples_per_pixel</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span><span class='error2'>&lt;--- Condition 'samples_per_pixel!=0' is always true</span>
</span><a name="line-407"></a> <span class="p">{</span>
<a name="line-408"></a> <span class="kt">int</span> <span class="n">den</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">num_of_strips</span> <span class="o">/</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">samples_per_pixel</span><span class="p">;</span>
<a name="line-409"></a>
<a name="line-410"></a> <span class="k">if</span> <span class="p">(</span><span class="n">den</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-411"></a> <span class="p">{</span>
<a name="line-412"></a> <span class="kt">int</span> <span class="n">val</span> <span class="o">=</span> <span class="n">st</span> <span class="o">/</span> <span class="n">den</span><span class="p">;</span>
<a name="line-413"></a>
<a name="line-414"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">val</span><span class="p">)</span>
<a name="line-415"></a> <span class="p">{</span>
<a name="line-416"></a> <span class="k">case</span> <span class="mi">0</span><span class="o">:</span>
<a name="line-417"></a> <span class="n">p</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span><span class="p">;</span>
<a name="line-418"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-419"></a>
<a name="line-420"></a> <span class="k">case</span> <span class="mi">1</span><span class="o">:</span>
<a name="line-421"></a> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span><span class="p">;</span>
<a name="line-422"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-423"></a>
<a name="line-424"></a> <span class="k">case</span> <span class="mi">2</span><span class="o">:</span>
<a name="line-425"></a> <span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span><span class="p">;</span>
<a name="line-426"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-427"></a>
<a name="line-428"></a> <span class="k">case</span> <span class="mi">3</span><span class="o">:</span>
<a name="line-429"></a> <span class="n">p</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span><span class="p">;</span>
<a name="line-430"></a> <span class="k">break</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="n">dataPtr</span> <span class="o">+=</span> <span class="mi">4</span><span class="p">;</span>
<a name="line-434"></a> <span class="p">}</span>
<a name="line-435"></a> <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="n">offset</span> <span class="o">+=</span> <span class="n">bytesRead</span> <span class="o">/</span> <span class="mi">2</span> <span class="o">*</span> <span class="mi">8</span><span class="p">;</span>
<a name="line-439"></a> <span class="p">}</span>
<a name="line-440"></a> <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">bits_per_sample</span> <span class="o">==</span> <span class="mi">32</span><span class="p">)</span> <span class="c1">// 32 bits image.</span>
<a name="line-443"></a> <span class="p">{</span>
<a name="line-444"></a> <span class="n">data</span><span class="p">.</span><span class="n">reset</span><span class="p">(</span><span class="n">new_failureTolerant</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="mi">8</span><span class="p">));</span>
<a name="line-445"></a> <span class="n">QScopedArrayPointer</span><span class="o">&lt;</span><span class="n">uchar</span><span class="o">&gt;</span> <span class="n">strip</span><span class="p">(</span><span class="n">new_failureTolerant</span><span class="p">(</span><span class="n">strip_size</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">data</span> <span class="o">||</span> <span class="n">strip</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-448"></a> <span class="p">{</span>
<a name="line-449"></a> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_DIMG_LOG_TIFF</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Failed to allocate memory for TIFF image&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">filePath</span><span class="p">;</span>
<a name="line-450"></a> <span class="n">TIFFClose</span><span class="p">(</span><span class="n">tif</span><span class="p">);</span>
<a name="line-451"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-452"></a> <span class="k">return</span> <span class="nb">false</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">long</span> <span class="n">offset</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-456"></a> <span class="kt">long</span> <span class="n">bytesRead</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-457"></a> <span class="n">uint</span> <span class="n">checkpoint</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-458"></a> <span class="kt">float</span> <span class="n">maxValue</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">;</span>
<a name="line-459"></a>
<a name="line-460"></a> <span class="k">for</span> <span class="p">(</span><span class="n">tstrip_t</span> <span class="n">st</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">st</span> <span class="o">&lt;</span> <span class="n">num_of_strips</span> <span class="p">;</span> <span class="o">++</span><span class="n">st</span><span class="p">)</span>
<a name="line-461"></a> <span class="p">{</span>
<a name="line-462"></a> <span class="k">if</span> <span class="p">(</span><span class="n">observer</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">observer</span><span class="o">-&gt;</span><span class="n">continueQuery</span><span class="p">())</span>
<a name="line-463"></a> <span class="p">{</span>
<a name="line-464"></a> <span class="n">TIFFClose</span><span class="p">(</span><span class="n">tif</span><span class="p">);</span>
<a name="line-465"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-466"></a> <span class="k">return</span> <span class="nb">false</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="n">bytesRead</span> <span class="o">=</span> <span class="n">TIFFReadEncodedStrip</span><span class="p">(</span><span class="n">tif</span><span class="p">,</span> <span class="n">st</span><span class="p">,</span> <span class="n">strip</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">strip_size</span><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="n">bytesRead</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<a name="line-472"></a> <span class="p">{</span>
<a name="line-473"></a> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_DIMG_LOG_TIFF</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Failed to read strip&quot;</span><span class="p">;</span>
<a name="line-474"></a> <span class="n">TIFFClose</span><span class="p">(</span><span class="n">tif</span><span class="p">);</span>
<a name="line-475"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-476"></a> <span class="k">return</span> <span class="nb">false</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">float</span><span class="o">*</span> <span class="n">stripPtr</span> <span class="o">=</span> <span class="k">reinterpret_cast</span><span class="o">&lt;</span><span class="kt">float</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">strip</span><span class="p">.</span><span class="n">data</span><span class="p">());</span>
<a name="line-480"></a>
<a name="line-481"></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="p">(</span><span class="n">bytesRead</span> <span class="o">/</span> <span class="mi">4</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-482"></a> <span class="p">{</span>
<a name="line-483"></a> <span class="n">maxValue</span> <span class="o">=</span> <span class="n">qMax</span><span class="p">(</span><span class="n">maxValue</span><span class="p">,</span> <span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span><span class="p">);</span>
<a name="line-484"></a> <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="kt">double</span> <span class="n">factor</span> <span class="o">=</span> <span class="p">(</span><span class="n">maxValue</span> <span class="o">&gt;</span> <span class="mf">10.0</span><span class="p">)</span> <span class="o">?</span> <span class="n">log10</span><span class="p">(</span><span class="n">maxValue</span><span class="p">)</span> <span class="o">*</span> <span class="mf">1.5</span> <span class="o">:</span> <span class="mf">1.0</span><span class="p">;</span>
<a name="line-488"></a> <span class="kt">double</span> <span class="n">scale</span> <span class="o">=</span> <span class="p">(</span><span class="n">factor</span> <span class="o">&gt;</span> <span class="mf">1.0</span><span class="p">)</span> <span class="o">?</span> <span class="mf">0.75</span> <span class="o">:</span> <span class="mf">1.0</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">factor</span> <span class="o">&gt;</span> <span class="mf">1.0</span><span class="p">)</span>
<a name="line-491"></a> <span class="p">{</span>
<a name="line-492"></a> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_DIMG_LOG_TIFF</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;TIFF image cannot be converted lossless from 32 to 16 bits&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">filePath</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="k">for</span> <span class="p">(</span><span class="n">tstrip_t</span> <span class="n">st</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">st</span> <span class="o">&lt;</span> <span class="n">num_of_strips</span> <span class="p">;</span> <span class="o">++</span><span class="n">st</span><span class="p">)</span>
<a name="line-496"></a> <span class="p">{</span>
<a name="line-497"></a> <span class="k">if</span> <span class="p">(</span><span class="n">observer</span> <span class="o">&amp;&amp;</span> <span class="n">st</span> <span class="o">==</span> <span class="n">checkpoint</span><span class="p">)</span>
<a name="line-498"></a> <span class="p">{</span>
<a name="line-499"></a> <span class="n">checkpoint</span> <span class="o">+=</span> <span class="n">granularity</span><span class="p">(</span><span class="n">observer</span><span class="p">,</span> <span class="n">num_of_strips</span><span class="p">,</span> <span class="mf">0.8F</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">observer</span><span class="o">-&gt;</span><span class="n">continueQuery</span><span class="p">())</span>
<a name="line-502"></a> <span class="p">{</span>
<a name="line-503"></a> <span class="n">TIFFClose</span><span class="p">(</span><span class="n">tif</span><span class="p">);</span>
<a name="line-504"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-505"></a> <span class="k">return</span> <span class="nb">false</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="n">observer</span><span class="o">-&gt;</span><span class="n">progressInfo</span><span class="p">(</span><span class="mf">0.1</span> <span class="o">+</span> <span class="p">(</span><span class="mf">0.8</span> <span class="o">*</span> <span class="p">(((</span><span class="kt">float</span><span class="p">)</span><span class="n">st</span><span class="p">)</span> <span class="o">/</span> <span class="p">((</span><span class="kt">float</span><span class="p">)</span><span class="n">num_of_strips</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">bytesRead</span> <span class="o">=</span> <span class="n">TIFFReadEncodedStrip</span><span class="p">(</span><span class="n">tif</span><span class="p">,</span> <span class="n">st</span><span class="p">,</span> <span class="n">strip</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">strip_size</span><span class="p">);</span>
<a name="line-512"></a>
<a name="line-513"></a> <span class="k">if</span> <span class="p">(</span><span class="n">bytesRead</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<a name="line-514"></a> <span class="p">{</span>
<a name="line-515"></a> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_DIMG_LOG_TIFF</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Failed to read strip&quot;</span><span class="p">;</span>
<a name="line-516"></a> <span class="n">TIFFClose</span><span class="p">(</span><span class="n">tif</span><span class="p">);</span>
<a name="line-517"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-518"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-519"></a> <span class="p">}</span>
<a name="line-520"></a>
<a name="line-521"></a>
<a name="line-522"></a> <span class="k">if</span> <span class="p">((</span><span class="n">num_of_strips</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">samples_per_pixel</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">))</span>
<a name="line-523"></a> <span class="p">{</span>
<a name="line-524"></a> <span class="k">if</span> <span class="p">((</span><span class="n">planar_config</span> <span class="o">==</span> <span class="n">PLANARCONFIG_SEPARATE</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
<a name="line-525"></a> <span class="p">(</span><span class="n">remainder</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span><span class="n">st</span><span class="p">,</span> <span class="p">(</span><span class="kt">double</span><span class="p">)(</span><span class="n">num_of_strips</span> <span class="o">/</span> <span class="n">samples_per_pixel</span><span class="p">))</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">))</span>
<a name="line-526"></a> <span class="p">{</span>
<a name="line-527"></a> <span class="n">offset</span> <span class="o">=</span> <span class="mi">0</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">float</span><span class="o">*</span> <span class="n">stripPtr</span> <span class="o">=</span> <span class="k">reinterpret_cast</span><span class="o">&lt;</span><span class="kt">float</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">strip</span><span class="p">.</span><span class="n">data</span><span class="p">());</span>
<a name="line-532"></a> <span class="n">ushort</span><span class="o">*</span> <span class="n">dataPtr</span> <span class="o">=</span> <span class="k">reinterpret_cast</span><span class="o">&lt;</span><span class="n">ushort</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">data</span><span class="p">.</span><span class="n">data</span><span class="p">()</span> <span class="o">+</span> <span class="n">offset</span><span class="p">);</span>
<a name="line-533"></a> <span class="n">ushort</span><span class="o">*</span> <span class="n">p</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-534"></a>
<a name="line-535"></a> <span class="k">if</span> <span class="p">((</span><span class="n">samples_per_pixel</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
<a name="line-536"></a> <span class="p">(</span><span class="n">planar_config</span> <span class="o">==</span> <span class="n">PLANARCONFIG_CONTIG</span><span class="p">))</span>
<a name="line-537"></a> <span class="p">{</span>
<a name="line-538"></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="p">(</span><span class="n">bytesRead</span> <span class="o">/</span> <span class="mi">12</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-539"></a> <span class="p">{</span>
<a name="line-540"></a> <span class="n">p</span> <span class="o">=</span> <span class="n">dataPtr</span><span class="p">;</span>
<a name="line-541"></a>
<a name="line-542"></a> <span class="n">p</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">ushort</span><span class="p">)</span><span class="n">qBound</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">pow</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span><span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span> <span class="o">/</span> <span class="n">factor</span><span class="p">,</span> <span class="n">scale</span><span class="p">)</span> <span class="o">*</span> <span class="mf">65535.0</span><span class="p">,</span> <span class="mf">65535.0</span><span class="p">);</span>
<a name="line-543"></a> <span class="n">p</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">ushort</span><span class="p">)</span><span class="n">qBound</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">pow</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span><span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span> <span class="o">/</span> <span class="n">factor</span><span class="p">,</span> <span class="n">scale</span><span class="p">)</span> <span class="o">*</span> <span class="mf">65535.0</span><span class="p">,</span> <span class="mf">65535.0</span><span class="p">);</span>
<a name="line-544"></a> <span class="n">p</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">ushort</span><span class="p">)</span><span class="n">qBound</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">pow</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span><span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span> <span class="o">/</span> <span class="n">factor</span><span class="p">,</span> <span class="n">scale</span><span class="p">)</span> <span class="o">*</span> <span class="mf">65535.0</span><span class="p">,</span> <span class="mf">65535.0</span><span class="p">);</span>
<a name="line-545"></a> <span class="n">p</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="mh">0xFFFF</span><span class="p">;</span>
<a name="line-546"></a>
<a name="line-547"></a> <span class="n">dataPtr</span> <span class="o">+=</span> <span class="mi">4</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">offset</span> <span class="o">+=</span> <span class="n">bytesRead</span> <span class="o">/</span> <span class="mi">12</span> <span class="o">*</span> <span class="mi">8</span><span class="p">;</span>
<a name="line-551"></a> <span class="p">}</span>
<a name="line-552"></a><span class="hll"> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">samples_per_pixel</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span> <span class="o">&amp;&amp;</span><span class='error2'>&lt;--- Assuming that condition 'samples_per_pixel==3' is not redundant</span>
</span><a name="line-553"></a> <span class="p">(</span><span class="n">planar_config</span> <span class="o">==</span> <span class="n">PLANARCONFIG_SEPARATE</span><span class="p">))</span>
<a name="line-554"></a> <span class="p">{</span>
<a name="line-555"></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="p">(</span><span class="n">bytesRead</span> <span class="o">/</span> <span class="mi">4</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-556"></a> <span class="p">{</span>
<a name="line-557"></a> <span class="n">p</span> <span class="o">=</span> <span class="n">dataPtr</span><span class="p">;</span>
<a name="line-558"></a>
<a name="line-559"></a><span class="hll"> <span class="k">if</span> <span class="p">(</span><span class="n">samples_per_pixel</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span><span class='error2'>&lt;--- Condition 'samples_per_pixel!=0' is always true</span>
</span><a name="line-560"></a> <span class="p">{</span>
<a name="line-561"></a> <span class="kt">int</span> <span class="n">den</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">num_of_strips</span> <span class="o">/</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">samples_per_pixel</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">den</span> <span class="o">!=</span> <span class="mi">0</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">val</span> <span class="o">=</span> <span class="n">st</span> <span class="o">/</span> <span class="n">den</span><span class="p">;</span>
<a name="line-566"></a>
<a name="line-567"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">val</span><span class="p">)</span>
<a name="line-568"></a> <span class="p">{</span>
<a name="line-569"></a> <span class="k">case</span> <span class="mi">0</span><span class="o">:</span>
<a name="line-570"></a> <span class="n">p</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">ushort</span><span class="p">)</span><span class="n">qBound</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">pow</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span><span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span> <span class="o">/</span> <span class="n">factor</span><span class="p">,</span> <span class="n">scale</span><span class="p">)</span> <span class="o">*</span> <span class="mf">65535.0</span><span class="p">,</span> <span class="mf">65535.0</span><span class="p">);</span>
<a name="line-571"></a> <span class="n">p</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="mh">0xFFFF</span><span class="p">;</span>
<a name="line-572"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-573"></a>
<a name="line-574"></a> <span class="k">case</span> <span class="mi">1</span><span class="o">:</span>
<a name="line-575"></a> <span class="n">p</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">ushort</span><span class="p">)</span><span class="n">qBound</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">pow</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span><span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span> <span class="o">/</span> <span class="n">factor</span><span class="p">,</span> <span class="n">scale</span><span class="p">)</span> <span class="o">*</span> <span class="mf">65535.0</span><span class="p">,</span> <span class="mf">65535.0</span><span class="p">);</span>
<a name="line-576"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-577"></a>
<a name="line-578"></a> <span class="k">case</span> <span class="mi">2</span><span class="o">:</span>
<a name="line-579"></a> <span class="n">p</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">ushort</span><span class="p">)</span><span class="n">qBound</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">pow</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span><span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span> <span class="o">/</span> <span class="n">factor</span><span class="p">,</span> <span class="n">scale</span><span class="p">)</span> <span class="o">*</span> <span class="mf">65535.0</span><span class="p">,</span> <span class="mf">65535.0</span><span class="p">);</span>
<a name="line-580"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-581"></a> <span class="p">}</span>
<a name="line-582"></a>
<a name="line-583"></a> <span class="n">dataPtr</span> <span class="o">+=</span> <span class="mi">4</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> <span class="p">}</span>
<a name="line-587"></a>
<a name="line-588"></a> <span class="n">offset</span> <span class="o">+=</span> <span class="n">bytesRead</span> <span class="o">/</span> <span class="mi">4</span> <span class="o">*</span> <span class="mi">8</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">samples_per_pixel</span> <span class="o">==</span> <span class="mi">4</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
<a name="line-591"></a> <span class="p">(</span><span class="n">planar_config</span> <span class="o">==</span> <span class="n">PLANARCONFIG_CONTIG</span><span class="p">))</span>
<a name="line-592"></a> <span class="p">{</span>
<a name="line-593"></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="p">(</span><span class="n">bytesRead</span> <span class="o">/</span> <span class="mi">16</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-594"></a> <span class="p">{</span>
<a name="line-595"></a> <span class="n">p</span> <span class="o">=</span> <span class="n">dataPtr</span><span class="p">;</span>
<a name="line-596"></a>
<a name="line-597"></a> <span class="n">p</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">ushort</span><span class="p">)</span><span class="n">qBound</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">pow</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span><span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span> <span class="o">/</span> <span class="n">factor</span><span class="p">,</span> <span class="n">scale</span><span class="p">)</span> <span class="o">*</span> <span class="mf">65535.0</span><span class="p">,</span> <span class="mf">65535.0</span><span class="p">);</span>
<a name="line-598"></a> <span class="n">p</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">ushort</span><span class="p">)</span><span class="n">qBound</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">pow</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span><span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span> <span class="o">/</span> <span class="n">factor</span><span class="p">,</span> <span class="n">scale</span><span class="p">)</span> <span class="o">*</span> <span class="mf">65535.0</span><span class="p">,</span> <span class="mf">65535.0</span><span class="p">);</span>
<a name="line-599"></a> <span class="n">p</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">ushort</span><span class="p">)</span><span class="n">qBound</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">pow</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span><span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span> <span class="o">/</span> <span class="n">factor</span><span class="p">,</span> <span class="n">scale</span><span class="p">)</span> <span class="o">*</span> <span class="mf">65535.0</span><span class="p">,</span> <span class="mf">65535.0</span><span class="p">);</span>
<a name="line-600"></a> <span class="n">p</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">ushort</span><span class="p">)</span><span class="n">qBound</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span> <span class="o">*</span> <span class="mf">65535.0</span><span class="p">,</span> <span class="mf">65535.0</span><span class="p">);</span>
<a name="line-601"></a>
<a name="line-602"></a> <span class="n">dataPtr</span> <span class="o">+=</span> <span class="mi">4</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">offset</span> <span class="o">+=</span> <span class="n">bytesRead</span> <span class="o">/</span> <span class="mi">16</span> <span class="o">*</span> <span class="mi">8</span><span class="p">;</span>
<a name="line-606"></a> <span class="p">}</span>
<a name="line-607"></a><span class="hll"> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">samples_per_pixel</span> <span class="o">==</span> <span class="mi">4</span><span class="p">)</span> <span class="o">&amp;&amp;</span><span class='error2'>&lt;--- Assuming that condition 'samples_per_pixel==4' is not redundant</span>
</span><a name="line-608"></a> <span class="p">(</span><span class="n">planar_config</span> <span class="o">==</span> <span class="n">PLANARCONFIG_SEPARATE</span><span class="p">))</span>
<a name="line-609"></a> <span class="p">{</span>
<a name="line-610"></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">bytesRead</span> <span class="o">/</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-611"></a> <span class="p">{</span>
<a name="line-612"></a> <span class="n">p</span> <span class="o">=</span> <span class="n">dataPtr</span><span class="p">;</span>
<a name="line-613"></a>
<a name="line-614"></a><span class="hll"> <span class="k">if</span> <span class="p">(</span><span class="n">samples_per_pixel</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span><span class='error2'>&lt;--- Condition 'samples_per_pixel!=0' is always true</span>
</span><a name="line-615"></a> <span class="p">{</span>
<a name="line-616"></a> <span class="kt">int</span> <span class="n">den</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">num_of_strips</span> <span class="o">/</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">samples_per_pixel</span><span class="p">;</span>
<a name="line-617"></a>
<a name="line-618"></a> <span class="k">if</span> <span class="p">(</span><span class="n">den</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-619"></a> <span class="p">{</span>
<a name="line-620"></a> <span class="kt">int</span> <span class="n">val</span> <span class="o">=</span> <span class="n">st</span> <span class="o">/</span> <span class="n">den</span><span class="p">;</span>
<a name="line-621"></a>
<a name="line-622"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">val</span><span class="p">)</span>
<a name="line-623"></a> <span class="p">{</span>
<a name="line-624"></a> <span class="k">case</span> <span class="mi">0</span><span class="o">:</span>
<a name="line-625"></a> <span class="n">p</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">ushort</span><span class="p">)</span><span class="n">qBound</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">pow</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span><span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span> <span class="o">/</span> <span class="n">factor</span><span class="p">,</span> <span class="n">scale</span><span class="p">)</span> <span class="o">*</span> <span class="mf">65535.0</span><span class="p">,</span> <span class="mf">65535.0</span><span class="p">);</span>
<a name="line-626"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-627"></a>
<a name="line-628"></a> <span class="k">case</span> <span class="mi">1</span><span class="o">:</span>
<a name="line-629"></a> <span class="n">p</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">ushort</span><span class="p">)</span><span class="n">qBound</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">pow</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span><span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span> <span class="o">/</span> <span class="n">factor</span><span class="p">,</span> <span class="n">scale</span><span class="p">)</span> <span class="o">*</span> <span class="mf">65535.0</span><span class="p">,</span> <span class="mf">65535.0</span><span class="p">);</span>
<a name="line-630"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-631"></a>
<a name="line-632"></a> <span class="k">case</span> <span class="mi">2</span><span class="o">:</span>
<a name="line-633"></a> <span class="n">p</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">ushort</span><span class="p">)</span><span class="n">qBound</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="n">pow</span><span class="p">((</span><span class="kt">double</span><span class="p">)</span><span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span> <span class="o">/</span> <span class="n">factor</span><span class="p">,</span> <span class="n">scale</span><span class="p">)</span> <span class="o">*</span> <span class="mf">65535.0</span><span class="p">,</span> <span class="mf">65535.0</span><span class="p">);</span>
<a name="line-634"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-635"></a>
<a name="line-636"></a> <span class="k">case</span> <span class="mi">3</span><span class="o">:</span>
<a name="line-637"></a> <span class="n">p</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">ushort</span><span class="p">)</span><span class="n">qBound</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span> <span class="o">*</span> <span class="mf">65535.0</span><span class="p">,</span> <span class="mf">65535.0</span><span class="p">);</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">dataPtr</span> <span class="o">+=</span> <span class="mi">4</span><span class="p">;</span>
<a name="line-642"></a> <span class="p">}</span>
<a name="line-643"></a> <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">offset</span> <span class="o">+=</span> <span class="n">bytesRead</span> <span class="o">/</span> <span class="mi">4</span> <span class="o">*</span> <span class="mi">8</span><span class="p">;</span>
<a name="line-647"></a> <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> <span class="k">else</span> <span class="c1">// Non 16 or 32 bits images ==&gt; get it on BGRA 8 bits.</span>
<a name="line-651"></a> <span class="p">{</span>
<a name="line-652"></a> <span class="n">data</span><span class="p">.</span><span class="n">reset</span><span class="p">(</span><span class="n">new_failureTolerant</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="mi">4</span><span class="p">));</span>
<a name="line-653"></a> <span class="n">QScopedArrayPointer</span><span class="o">&lt;</span><span class="n">uchar</span><span class="o">&gt;</span> <span class="n">strip</span><span class="p">(</span><span class="n">new_failureTolerant</span><span class="p">(</span><span class="n">w</span><span class="p">,</span> <span class="n">rows_per_strip</span><span class="p">,</span> <span class="mi">4</span><span class="p">));</span>
<a name="line-654"></a>
<a name="line-655"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">data</span> <span class="o">||</span> <span class="n">strip</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-656"></a> <span class="p">{</span>
<a name="line-657"></a> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_DIMG_LOG_TIFF</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Failed to allocate memory for TIFF image&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">filePath</span><span class="p">;</span>
<a name="line-658"></a> <span class="n">TIFFClose</span><span class="p">(</span><span class="n">tif</span><span class="p">);</span>
<a name="line-659"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-660"></a> <span class="k">return</span> <span class="nb">false</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="kt">long</span> <span class="n">offset</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-664"></a> <span class="kt">long</span> <span class="n">pixelsRead</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-665"></a>
<a name="line-666"></a> <span class="c1">// this is inspired by TIFFReadRGBAStrip, tif_getimage.c</span>
<a name="line-667"></a> <span class="kt">char</span> <span class="n">emsg</span><span class="p">[</span><span class="mi">1024</span><span class="p">]</span> <span class="o">=</span> <span class="s">&quot;&quot;</span><span class="p">;</span>
<a name="line-668"></a> <span class="n">uint32</span> <span class="n">rows_to_read</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-669"></a> <span class="n">uint</span> <span class="n">checkpoint</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-670"></a> <span class="n">TIFFRGBAImage</span> <span class="n">img</span><span class="p">;</span>
<a name="line-671"></a>
<a name="line-672"></a> <span class="c1">// test whether libtiff can read format and initiate reading</span>
<a name="line-673"></a>
<a name="line-674"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">TIFFRGBAImageOK</span><span class="p">(</span><span class="n">tif</span><span class="p">,</span> <span class="n">emsg</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">TIFFRGBAImageBegin</span><span class="p">(</span><span class="o">&amp;</span><span class="n">img</span><span class="p">,</span> <span class="n">tif</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">emsg</span><span class="p">))</span>
<a name="line-675"></a> <span class="p">{</span>
<a name="line-676"></a> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_DIMG_LOG_TIFF</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Failed to set up RGBA reading of image, filename &quot;</span>
<a name="line-677"></a> <span class="o">&lt;&lt;</span> <span class="n">TIFFFileName</span><span class="p">(</span><span class="n">tif</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; error message from Libtiff: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">emsg</span><span class="p">;</span>
<a name="line-678"></a> <span class="n">TIFFClose</span><span class="p">(</span><span class="n">tif</span><span class="p">);</span>
<a name="line-679"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-680"></a> <span class="k">return</span> <span class="nb">false</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="c1">// libtiff cannot handle all possible orientations, it give weird results.</span>
<a name="line-684"></a> <span class="c1">// We rotate ourselves. (Bug 274865)</span>
<a name="line-685"></a> <span class="n">img</span><span class="p">.</span><span class="n">req_orientation</span> <span class="o">=</span> <span class="n">img</span><span class="p">.</span><span class="n">orientation</span><span class="p">;</span>
<a name="line-686"></a>
<a name="line-687"></a> <span class="c1">// read strips from image: read rows_per_strip, so always start at beginning of a strip</span>
<a name="line-688"></a> <span class="k">for</span> <span class="p">(</span><span class="n">uint</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">h</span> <span class="p">;</span> <span class="n">row</span> <span class="o">+=</span> <span class="n">rows_per_strip</span><span class="p">)</span>
<a name="line-689"></a> <span class="p">{</span>
<a name="line-690"></a> <span class="k">if</span> <span class="p">(</span><span class="n">observer</span> <span class="o">&amp;&amp;</span> <span class="n">row</span> <span class="o">&gt;=</span> <span class="n">checkpoint</span><span class="p">)</span>
<a name="line-691"></a> <span class="p">{</span>
<a name="line-692"></a> <span class="n">checkpoint</span> <span class="o">+=</span> <span class="n">granularity</span><span class="p">(</span><span class="n">observer</span><span class="p">,</span> <span class="n">h</span><span class="p">,</span> <span class="mf">0.8F</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="o">!</span><span class="n">observer</span><span class="o">-&gt;</span><span class="n">continueQuery</span><span class="p">())</span>
<a name="line-695"></a> <span class="p">{</span>
<a name="line-696"></a> <span class="n">TIFFClose</span><span class="p">(</span><span class="n">tif</span><span class="p">);</span>
<a name="line-697"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-698"></a> <span class="k">return</span> <span class="nb">false</span><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="n">observer</span><span class="o">-&gt;</span><span class="n">progressInfo</span><span class="p">(</span><span class="mf">0.1</span> <span class="o">+</span> <span class="p">(</span><span class="mf">0.8</span> <span class="o">*</span> <span class="p">(((</span><span class="kt">float</span><span class="p">)</span><span class="n">row</span><span class="p">)</span> <span class="o">/</span> <span class="p">((</span><span class="kt">float</span><span class="p">)</span><span class="n">h</span><span class="p">))));</span>
<a name="line-702"></a> <span class="p">}</span>
<a name="line-703"></a>
<a name="line-704"></a> <span class="n">img</span><span class="p">.</span><span class="n">row_offset</span> <span class="o">=</span> <span class="n">row</span><span class="p">;</span>
<a name="line-705"></a> <span class="n">img</span><span class="p">.</span><span class="n">col_offset</span> <span class="o">=</span> <span class="mi">0</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">row</span> <span class="o">+</span> <span class="n">rows_per_strip</span> <span class="o">&gt;</span> <span class="n">img</span><span class="p">.</span><span class="n">height</span><span class="p">)</span>
<a name="line-708"></a> <span class="p">{</span>
<a name="line-709"></a> <span class="n">rows_to_read</span> <span class="o">=</span> <span class="n">img</span><span class="p">.</span><span class="n">height</span> <span class="o">-</span> <span class="n">row</span><span class="p">;</span>
<a name="line-710"></a> <span class="p">}</span>
<a name="line-711"></a> <span class="k">else</span>
<a name="line-712"></a> <span class="p">{</span>
<a name="line-713"></a> <span class="n">rows_to_read</span> <span class="o">=</span> <span class="n">rows_per_strip</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="c1">// Read data</span>
<a name="line-717"></a>
<a name="line-718"></a> <span class="k">if</span> <span class="p">(</span><span class="n">TIFFRGBAImageGet</span><span class="p">(</span><span class="o">&amp;</span><span class="n">img</span><span class="p">,</span> <span class="k">reinterpret_cast</span><span class="o">&lt;</span><span class="n">uint32</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">strip</span><span class="p">.</span><span class="n">data</span><span class="p">()),</span> <span class="n">img</span><span class="p">.</span><span class="n">width</span><span class="p">,</span> <span class="n">rows_to_read</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-719"></a> <span class="p">{</span>
<a name="line-720"></a> <span class="n">qCWarning</span><span class="p">(</span><span class="n">DIGIKAM_DIMG_LOG_TIFF</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Failed to read image data&quot;</span><span class="p">;</span>
<a name="line-721"></a> <span class="n">TIFFClose</span><span class="p">(</span><span class="n">tif</span><span class="p">);</span>
<a name="line-722"></a> <span class="n">loadingFailed</span><span class="p">();</span>
<a name="line-723"></a> <span class="k">return</span> <span class="nb">false</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="n">pixelsRead</span> <span class="o">=</span> <span class="n">rows_to_read</span> <span class="o">*</span> <span class="n">img</span><span class="p">.</span><span class="n">width</span><span class="p">;</span>
<a name="line-727"></a>
<a name="line-728"></a> <span class="n">uchar</span><span class="o">*</span> <span class="n">stripPtr</span> <span class="o">=</span> <span class="p">(</span><span class="n">uchar</span><span class="o">*</span><span class="p">)(</span><span class="n">strip</span><span class="p">.</span><span class="n">data</span><span class="p">());</span>
<a name="line-729"></a> <span class="n">uchar</span><span class="o">*</span> <span class="n">dataPtr</span> <span class="o">=</span> <span class="p">(</span><span class="n">uchar</span><span class="o">*</span><span class="p">)(</span><span class="n">data</span><span class="p">.</span><span class="n">data</span><span class="p">()</span> <span class="o">+</span> <span class="n">offset</span><span class="p">);</span>
<a name="line-730"></a> <span class="n">uchar</span><span class="o">*</span> <span class="n">p</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-731"></a>
<a name="line-732"></a> <span class="c1">// Reverse red and blue</span>
<a name="line-733"></a>
<a name="line-734"></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">pixelsRead</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-735"></a> <span class="p">{</span>
<a name="line-736"></a> <span class="n">p</span> <span class="o">=</span> <span class="n">dataPtr</span><span class="p">;</span>
<a name="line-737"></a>
<a name="line-738"></a> <span class="n">p</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span><span class="p">;</span>
<a name="line-739"></a> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span><span class="p">;</span>
<a name="line-740"></a> <span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span><span class="p">;</span>
<a name="line-741"></a> <span class="n">p</span><span class="p">[</span><span class="mi">3</span><span class="p">]</span> <span class="o">=</span> <span class="o">*</span><span class="n">stripPtr</span><span class="o">++</span><span class="p">;</span>
<a name="line-742"></a>
<a name="line-743"></a> <span class="n">dataPtr</span> <span class="o">+=</span> <span class="mi">4</span><span class="p">;</span>
<a name="line-744"></a> <span class="p">}</span>
<a name="line-745"></a>
<a name="line-746"></a> <span class="n">offset</span> <span class="o">+=</span> <span class="n">pixelsRead</span> <span class="o">*</span> <span class="mi">4</span><span class="p">;</span>
<a name="line-747"></a> <span class="p">}</span>
<a name="line-748"></a>
<a name="line-749"></a> <span class="n">TIFFRGBAImageEnd</span><span class="p">(</span><span class="o">&amp;</span><span class="n">img</span><span class="p">);</span>
<a name="line-750"></a> <span class="p">}</span>
<a name="line-751"></a> <span class="p">}</span>
<a name="line-752"></a>
<a name="line-753"></a> <span class="c1">// -------------------------------------------------------------------</span>
<a name="line-754"></a>
<a name="line-755"></a> <span class="n">TIFFClose</span><span class="p">(</span><span class="n">tif</span><span class="p">);</span>
<a name="line-756"></a>
<a name="line-757"></a> <span class="k">if</span> <span class="p">(</span><span class="n">observer</span><span class="p">)</span>
<a name="line-758"></a> <span class="p">{</span>
<a name="line-759"></a> <span class="n">observer</span><span class="o">-&gt;</span><span class="n">progressInfo</span><span class="p">(</span><span class="mf">1.0</span><span class="p">);</span>
<a name="line-760"></a> <span class="p">}</span>
<a name="line-761"></a>
<a name="line-762"></a> <span class="n">imageWidth</span><span class="p">()</span> <span class="o">=</span> <span class="n">w</span><span class="p">;</span>
<a name="line-763"></a> <span class="n">imageHeight</span><span class="p">()</span> <span class="o">=</span> <span class="n">h</span><span class="p">;</span>
<a name="line-764"></a> <span class="n">imageData</span><span class="p">()</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">take</span><span class="p">();</span>
<a name="line-765"></a> <span class="n">imageSetAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;format&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;TIFF&quot;</span><span class="p">));</span>
<a name="line-766"></a> <span class="n">imageSetAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;originalColorModel&quot;</span><span class="p">),</span> <span class="n">colorModel</span><span class="p">);</span>
<a name="line-767"></a> <span class="n">imageSetAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;originalBitDepth&quot;</span><span class="p">),</span> <span class="n">bits_per_sample</span><span class="p">);</span>
<a name="line-768"></a> <span class="n">imageSetAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;originalSize&quot;</span><span class="p">),</span> <span class="n">QSize</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-769"></a>
<a name="line-770"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-771"></a><span class="p">}</span>
<a name="line-772"></a>
<a name="line-773"></a><span class="p">}</span> <span class="c1">// namespace DigikamTIFFDImgPlugin</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 193bdc17b..fb2c14615 100644
--- a/static/reports/cppcheck/master/10.html
+++ b/static/reports/cppcheck/master/10.html
@@ -1,713 +1,1561 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/tools/printcreator/tools/atkinspagelayouttree.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/generic/tools/printcreator/manager/advprinttask.cpp </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> atkinspagelayouttree.cpp</p>
-<a href='10.html#line-216'> shadowVar 216</a><a href='10.html#line-233'> shadowVar 233</a>
+ <p id="filename"><a href="index.html">Defects:</a> advprinttask.cpp</p>
+<a href='10.html#line-373'> shadowVar 373</a><a href='10.html#line-374'> shadowVar 374</a><a href='10.html#line-410'> shadowVar 410</a><a href='10.html#line-411'> shadowVar 411</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</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
+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</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-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) 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-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-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-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;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-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="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-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">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> <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-91"></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-92"></a>
-<a name="line-93"></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-94"></a> <span class="p">{</span>
-<a name="line-95"></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-96"></a> <span class="p">{</span>
-<a name="line-97"></a> <span class="c1">// create temporary tree</span>
-<a name="line-98"></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-99"></a>
-<a name="line-100"></a> <span class="c1">// select the subtree which will be replace by a new internal node</span>
-<a name="line-101"></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-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="c1">// find parent node</span>
-<a name="line-104"></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-105"></a>
-<a name="line-106"></a> <span class="c1">// create new terminal node</span>
-<a name="line-107"></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-108"></a> <span class="n">relativeArea</span><span class="p">,</span>
-<a name="line-109"></a> <span class="n">index</span><span class="p">);</span>
-<a name="line-110"></a>
-<a name="line-111"></a> <span class="c1">// create new internal node</span>
-<a name="line-112"></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-113"></a> <span class="n">newTerminalNode</span><span class="p">,</span>
-<a name="line-114"></a> <span class="n">horizontal</span><span class="p">,</span>
-<a name="line-115"></a> <span class="n">index</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span>
-<a name="line-116"></a>
-<a name="line-117"></a> <span class="c1">// replace in tree</span>
-<a name="line-118"></a> <span class="k">if</span> <span class="p">(</span><span class="n">parentNode</span><span class="p">)</span>
-<a name="line-119"></a> <span class="p">{</span>
-<a name="line-120"></a> <span class="c1">// replace in tree</span>
-<a name="line-121"></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-122"></a> <span class="p">}</span>
-<a name="line-123"></a> <span class="k">else</span>
-<a name="line-124"></a> <span class="p">{</span>
-<a name="line-125"></a> <span class="c1">// candidateTree is candidateSubtree is root</span>
-<a name="line-126"></a> <span class="n">candidateTree</span> <span class="o">=</span> <span class="n">newInternalNode</span><span class="p">;</span>
-<a name="line-127"></a> <span class="p">}</span>
+<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="c1">// recompute sizes</span>
-<a name="line-130"></a> <span class="n">candidateTree</span><span class="o">-&gt;</span><span class="n">computeRelativeSizes</span><span class="p">();</span>
+<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="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-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">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-135"></a> <span class="p">{</span>
-<a name="line-136"></a> <span class="n">highScore</span> <span class="o">=</span> <span class="n">candidateScore</span><span class="p">;</span>
-<a name="line-137"></a> <span class="k">delete</span> <span class="n">bestTree</span><span class="p">;</span>
-<a name="line-138"></a> <span class="n">bestTree</span> <span class="o">=</span> <span class="n">candidateTree</span><span class="p">;</span>
-<a name="line-139"></a> <span class="p">}</span>
-<a name="line-140"></a> <span class="k">else</span>
-<a name="line-141"></a> <span class="p">{</span>
-<a name="line-142"></a> <span class="k">delete</span> <span class="n">candidateTree</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> <span class="p">}</span>
-<a name="line-146"></a>
-<a name="line-147"></a> <span class="k">delete</span> <span class="n">m_root</span><span class="p">;</span>
-<a name="line-148"></a> <span class="n">m_root</span> <span class="o">=</span> <span class="n">bestTree</span><span class="p">;</span>
-<a name="line-149"></a>
-<a name="line-150"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_root</span><span class="p">)</span>
-<a name="line-151"></a> <span class="n">m_root</span><span class="o">-&gt;</span><span class="n">computeDivisions</span><span class="p">();</span>
+<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="n">m_count</span> <span class="o">+=</span> <span class="mi">2</span><span class="p">;</span>
-<a name="line-154"></a> <span class="k">return</span> <span class="n">index</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="c1">// Section 2.2.1</span>
-<a name="line-158"></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-159"></a> <span class="kt">int</span> <span class="n">nodeCount</span><span class="p">)</span>
-<a name="line-160"></a><span class="p">{</span>
-<a name="line-161"></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-162"></a> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-163"></a>
-<a name="line-164"></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-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="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-167"></a> <span class="p">{</span>
-<a name="line-168"></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-169"></a>
-<a name="line-170"></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-171"></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-172"></a> <span class="p">}</span>
-<a name="line-173"></a>
-<a name="line-174"></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-175"></a> <span class="o">:</span> <span class="n">m_aspectRatioPage</span><span class="p">;</span>
-<a name="line-176"></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-177"></a> <span class="o">:</span> <span class="n">m_aspectRatioPage</span><span class="p">;</span>
-<a name="line-178"></a>
-<a name="line-179"></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-180"></a><span class="p">}</span>
-<a name="line-181"></a>
-<a name="line-182"></a><span class="c1">// Section 2.2.2</span>
-<a name="line-183"></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-184"></a><span class="p">{</span>
-<a name="line-185"></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-186"></a><span class="p">}</span>
-<a name="line-187"></a>
-<a name="line-188"></a><span class="c1">// Section 2.2.2</span>
-<a name="line-189"></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-190"></a><span class="p">{</span>
-<a name="line-191"></a> <span class="c1">// min(a_pbb, a_page), max(a_pbb, a_page)</span>
-<a name="line-192"></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-193"></a> <span class="o">:</span> <span class="n">m_aspectRatioPage</span><span class="p">;</span>
-<a name="line-194"></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-195"></a> <span class="o">:</span> <span class="n">m_aspectRatioPage</span><span class="p">;</span>
-<a name="line-196"></a>
-<a name="line-197"></a> <span class="c1">// A_pbb</span>
-<a name="line-198"></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-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="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-201"></a> <span class="k">return</span> <span class="n">absoluteAreaRoot</span><span class="p">;</span>
-<a name="line-202"></a>
-<a name="line-203"></a> <span class="c1">// A_i</span>
-<a name="line-204"></a> <span class="k">return</span> <span class="nf">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-205"></a><span class="p">}</span>
-<a name="line-206"></a>
-<a name="line-207"></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-208"></a><span class="p">{</span>
-<a name="line-209"></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-210"></a>
-<a name="line-211"></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-212"></a> <span class="k">return</span> <span class="n">QRectF</span><span class="p">();</span>
-<a name="line-213"></a>
-<a name="line-214"></a> <span class="c1">// find out the &quot;line of ancestry&quot; of the node</span>
-<a name="line-215"></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-216"></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-217"></a>
-<a name="line-218"></a> <span class="k">while</span> <span class="p">(</span><span class="n">parent</span><span class="p">)</span>
-<a name="line-219"></a> <span class="p">{</span>
-<a name="line-220"></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-221"></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-222"></a> <span class="p">}</span>
-<a name="line-223"></a>
-<a name="line-224"></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-225"></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-226"></a> <span class="n">m_root</span><span class="o">-&gt;</span><span class="n">aspectRatio</span><span class="p">(),</span>
-<a name="line-227"></a> <span class="n">absoluteArea</span><span class="p">(</span><span class="n">m_root</span><span class="p">));</span>
-<a name="line-228"></a>
-<a name="line-229"></a> <span class="c1">// go along the line of ancestry and narrow down the bounding rectangle,</span>
-<a name="line-230"></a> <span class="c1">// as described in section 2.2.2</span>
-<a name="line-231"></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-232"></a> <span class="p">{</span>
-<a name="line-233"></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-234"></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-235"></a>
-<a name="line-236"></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-237"></a> <span class="p">{</span>
-<a name="line-238"></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-239"></a>
-<a name="line-240"></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-241"></a> <span class="p">{</span>
-<a name="line-242"></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-243"></a> <span class="p">}</span>
-<a name="line-244"></a> <span class="k">else</span> <span class="c1">// right child</span>
-<a name="line-245"></a> <span class="p">{</span>
-<a name="line-246"></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-247"></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-248"></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-249"></a> <span class="p">}</span>
-<a name="line-250"></a> <span class="p">}</span>
-<a name="line-251"></a> <span class="k">else</span> <span class="c1">// horizontal division: one on top of the other</span>
-<a name="line-252"></a> <span class="p">{</span>
-<a name="line-253"></a> <span class="c1">// left child is topmost</span>
-<a name="line-254"></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-255"></a>
-<a name="line-256"></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-257"></a> <span class="p">{</span>
-<a name="line-258"></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-259"></a> <span class="p">}</span>
-<a name="line-260"></a> <span class="k">else</span> <span class="c1">// right child</span>
-<a name="line-261"></a> <span class="p">{</span>
-<a name="line-262"></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-263"></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-264"></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-265"></a> <span class="p">}</span>
-<a name="line-266"></a> <span class="p">}</span>
-<a name="line-267"></a> <span class="p">}</span>
+<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> <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-259"></a>
+<a name="line-260"></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-261"></a> <span class="p">{</span>
+<a name="line-262"></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-263"></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-264"></a> <span class="p">}</span>
+<a name="line-265"></a>
+<a name="line-266"></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-267"></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-268"></a>
-<a name="line-269"></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-270"></a><span class="p">}</span>
-<a name="line-271"></a>
-<a name="line-272"></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-273"></a> <span class="kt">double</span> <span class="n">aspectRatio</span><span class="p">,</span>
-<a name="line-274"></a> <span class="kt">double</span> <span class="n">absoluteArea</span><span class="p">)</span>
-<a name="line-275"></a><span class="p">{</span>
-<a name="line-276"></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-277"></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-278"></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-279"></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-280"></a>
-<a name="line-281"></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-282"></a><span class="p">}</span>
-<a name="line-283"></a>
-<a name="line-284"></a><span class="p">}</span> <span class="c1">// Namespace Digikam</span>
+<a name="line-269"></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-270"></a> <span class="n">QPainter</span> <span class="n">painter</span><span class="p">;</span>
+<a name="line-271"></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-272"></a>
+<a name="line-273"></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-274"></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-275"></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-276"></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-277"></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-278"></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-279"></a>
+<a name="line-280"></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-281"></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-282"></a> <span class="p">{</span>
+<a name="line-283"></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-284"></a> <span class="p">}</span>
+<a name="line-285"></a>
+<a name="line-286"></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-287"></a>
+<a name="line-288"></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-289"></a> <span class="n">photos</span><span class="p">,</span>
+<a name="line-290"></a> <span class="n">layouts</span><span class="o">-&gt;</span><span class="n">m_layouts</span><span class="p">,</span>
+<a name="line-291"></a> <span class="n">current</span><span class="p">,</span>
+<a name="line-292"></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-293"></a>
+<a name="line-294"></a> <span class="n">painter</span><span class="p">.</span><span class="n">end</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="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-297"></a> <span class="p">{</span>
+<a name="line-298"></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-299"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-300"></a> <span class="p">}</span>
+<a name="line-301"></a> <span class="k">else</span>
+<a name="line-302"></a> <span class="p">{</span>
+<a name="line-303"></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-304"></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-305"></a> <span class="p">}</span>
+<a name="line-306"></a>
+<a name="line-307"></a> <span class="n">pageCount</span><span class="o">++</span><span class="p">;</span>
+<a name="line-308"></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-309"></a>
+<a name="line-310"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_cancel</span><span class="p">)</span>
+<a name="line-311"></a> <span class="p">{</span>
+<a name="line-312"></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-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>
+<a name="line-317"></a> <span class="k">return</span> <span class="n">files</span><span class="p">;</span>
+<a name="line-318"></a><span class="p">}</span>
+<a name="line-319"></a>
+<a name="line-320"></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-321"></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-322"></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-323"></a> <span class="kt">int</span><span class="o">&amp;</span> <span class="n">current</span><span class="p">,</span>
+<a name="line-324"></a> <span class="kt">bool</span> <span class="n">cropDisabled</span><span class="p">,</span>
+<a name="line-325"></a> <span class="kt">bool</span> <span class="n">useThumbnails</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">layouts</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-328"></a> <span class="p">{</span>
+<a name="line-329"></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-330"></a> <span class="k">return</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="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-334"></a> <span class="p">{</span>
+<a name="line-335"></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-336"></a> <span class="c1">// no photos =&gt; last photo</span>
+<a name="line-337"></a> <span class="k">return</span> <span class="nb">true</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">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-341"></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-342"></a> <span class="o">++</span><span class="n">it</span><span class="p">;</span>
+<a name="line-343"></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-344"></a>
+<a name="line-345"></a> <span class="c1">// scale the page size to best fit the painter</span>
+<a name="line-346"></a> <span class="c1">// size the rectangle based on the minimum image dimension</span>
+<a name="line-347"></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-348"></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-349"></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-350"></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-351"></a>
+<a name="line-352"></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-353"></a> <span class="p">{</span>
+<a name="line-354"></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-355"></a>
+<a name="line-356"></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-357"></a> <span class="p">{</span>
+<a name="line-358"></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-359"></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-360"></a> <span class="p">}</span>
+<a name="line-361"></a> <span class="p">}</span>
+<a name="line-362"></a> <span class="k">else</span>
+<a name="line-363"></a> <span class="p">{</span>
+<a name="line-364"></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-365"></a>
+<a name="line-366"></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-367"></a> <span class="p">{</span>
+<a name="line-368"></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-369"></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-370"></a> <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="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-374"></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-375"></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-376"></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-377"></a>
+<a name="line-378"></a> <span class="c1">// FIXME: may not want to erase the background page</span>
+<a name="line-379"></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-380"></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-381"></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-382"></a>
+<a name="line-383"></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-384"></a> <span class="p">{</span>
+<a name="line-385"></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-386"></a> <span class="c1">// crop</span>
+<a name="line-387"></a> <span class="n">QImage</span> <span class="n">img</span><span class="p">;</span>
+<a name="line-388"></a>
+<a name="line-389"></a> <span class="k">if</span> <span class="p">(</span><span class="n">useThumbnails</span><span class="p">)</span>
+<a name="line-390"></a> <span class="p">{</span>
+<a name="line-391"></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-392"></a> <span class="p">}</span>
+<a name="line-393"></a> <span class="k">else</span>
+<a name="line-394"></a> <span class="p">{</span>
+<a name="line-395"></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-396"></a> <span class="p">}</span>
+<a name="line-397"></a>
+<a name="line-398"></a> <span class="c1">// next, do we rotate?</span>
+<a name="line-399"></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-400"></a> <span class="p">{</span>
+<a name="line-401"></a> <span class="c1">// rotate</span>
+<a name="line-402"></a> <span class="n">QMatrix</span> <span class="n">matrix</span><span class="p">;</span>
+<a name="line-403"></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-404"></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-405"></a> <span class="p">}</span>
+<a name="line-406"></a>
+<a name="line-407"></a> <span class="k">if</span> <span class="p">(</span><span class="n">useThumbnails</span><span class="p">)</span>
+<a name="line-408"></a> <span class="p">{</span>
+<a name="line-409"></a> <span class="c1">// scale the crop region to thumbnail coords</span>
+<a name="line-410"></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-411"></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-412"></a>
+<a name="line-413"></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-414"></a> <span class="p">{</span>
+<a name="line-415"></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-416"></a> <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="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-419"></a> <span class="p">{</span>
+<a name="line-420"></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-421"></a> <span class="p">}</span>
+<a name="line-422"></a>
+<a name="line-423"></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-424"></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-425"></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-426"></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-427"></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-428"></a> <span class="p">}</span>
+<a name="line-429"></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-430"></a> <span class="p">{</span>
+<a name="line-431"></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-432"></a> <span class="p">}</span>
+<a name="line-433"></a>
+<a name="line-434"></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-435"></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-436"></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-437"></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-438"></a>
+<a name="line-439"></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-440"></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-441"></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-442"></a><span class="cm">/*</span>
+<a name="line-443"></a><span class="cm"> qCDebug(DIGIKAM_DPLUGIN_GENERIC_LOG) &lt;&lt; &quot;Image &quot;</span>
+<a name="line-444"></a><span class="cm"> &lt;&lt; photo-&gt;filename</span>
+<a name="line-445"></a><span class="cm"> &lt;&lt; &quot; size &quot; &lt;&lt; imageSize;</span>
+<a name="line-446"></a><span class="cm"> qCDebug(DIGIKAM_DPLUGIN_GENERIC_LOG) &lt;&lt; &quot;viewport size &quot;</span>
+<a name="line-447"></a><span class="cm"> &lt;&lt; newRectViewPort.size();</span>
+<a name="line-448"></a><span class="cm">*/</span>
+<a name="line-449"></a> <span class="n">QPoint</span> <span class="n">point</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">cropDisabled</span><span class="p">)</span>
+<a name="line-452"></a> <span class="p">{</span>
+<a name="line-453"></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-454"></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-455"></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-456"></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-457"></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-458"></a> <span class="n">imageSize</span><span class="p">.</span><span class="n">width</span><span class="p">(),</span>
+<a name="line-459"></a> <span class="n">imageSize</span><span class="p">.</span><span class="n">height</span><span class="p">());</span>
+<a name="line-460"></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-461"></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-462"></a> <span class="p">}</span>
+<a name="line-463"></a> <span class="k">else</span>
+<a name="line-464"></a> <span class="p">{</span>
+<a name="line-465"></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-466"></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-467"></a> <span class="p">}</span>
+<a name="line-468"></a>
+<a name="line-469"></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-470"></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-471"></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-472"></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-473"></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-474"></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-475"></a>
+<a name="line-476"></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-477"></a> <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-478"></a> <span class="p">{</span>
+<a name="line-479"></a> <span class="n">p</span><span class="p">.</span><span class="n">save</span><span class="p">();</span>
+<a name="line-480"></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-481"></a>
+<a name="line-482"></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-483"></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-484"></a> <span class="o">&lt;&lt;</span> <span class="s">&quot;:&quot;</span>
+<a name="line-485"></a> <span class="o">&lt;&lt;</span> <span class="n">caption</span><span class="p">;</span>
+<a name="line-486"></a>
+<a name="line-487"></a> <span class="c1">// draw the text at (0,0), but we will translate and rotate the world</span>
+<a name="line-488"></a> <span class="c1">// before drawing so the text will be in the correct location</span>
+<a name="line-489"></a> <span class="c1">// next, do we rotate?</span>
+<a name="line-490"></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-491"></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-492"></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-493"></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-494"></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-495"></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-496"></a>
+<a name="line-497"></a>
+<a name="line-498"></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-499"></a> <span class="p">{</span>
+<a name="line-500"></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-501"></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-502"></a> <span class="p">}</span>
+<a name="line-503"></a> <span class="k">else</span>
+<a name="line-504"></a> <span class="p">{</span>
+<a name="line-505"></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-506"></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-507"></a> <span class="p">}</span>
+<a name="line-508"></a>
+<a name="line-509"></a> <span class="c1">// ROT_90_HFLIP .. ROT_270</span>
+<a name="line-510"></a>
+<a name="line-511"></a> <span class="k">if</span> <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="o">||</span>
+<a name="line-512"></a> <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="o">||</span>
+<a name="line-513"></a> <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="o">||</span>
+<a name="line-514"></a> <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-515"></a> <span class="p">{</span>
+<a name="line-516"></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-517"></a> <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">orientatation</span> <span class="o">==</span> <span class="mi">90</span> <span class="o">||</span> <span class="n">orientatation</span> <span class="o">==</span> <span class="mi">270</span><span class="p">)</span>
+<a name="line-520"></a> <span class="p">{</span>
+<a name="line-521"></a> <span class="n">captionW</span> <span class="o">=</span> <span class="n">h</span><span class="p">;</span>
+<a name="line-522"></a> <span class="p">}</span>
+<a name="line-523"></a>
+<a name="line-524"></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-525"></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-526"></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-527"></a> <span class="o">&lt;&lt;</span> <span class="s">&quot; orientation &quot;</span>
+<a name="line-528"></a> <span class="o">&lt;&lt;</span> <span class="n">orientatation</span><span class="p">;</span>
+<a name="line-529"></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-530"></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-531"></a>
+<a name="line-532"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">orientatation</span><span class="p">)</span>
+<a name="line-533"></a> <span class="p">{</span>
+<a name="line-534"></a> <span class="k">case</span> <span class="mi">0</span><span class="o">:</span>
+<a name="line-535"></a> <span class="p">{</span>
+<a name="line-536"></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-537"></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-538"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-539"></a> <span class="p">}</span>
+<a name="line-540"></a> <span class="k">case</span> <span class="mi">90</span><span class="o">:</span>
+<a name="line-541"></a> <span class="p">{</span>
+<a name="line-542"></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-543"></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-544"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-545"></a> <span class="p">}</span>
+<a name="line-546"></a> <span class="k">case</span> <span class="mi">180</span><span class="o">:</span>
+<a name="line-547"></a> <span class="p">{</span>
+<a name="line-548"></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-549"></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-550"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-551"></a> <span class="p">}</span>
+<a name="line-552"></a> <span class="k">case</span> <span class="mi">270</span><span class="o">:</span>
+<a name="line-553"></a> <span class="p">{</span>
+<a name="line-554"></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-555"></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-556"></a> <span class="k">break</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="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-561"></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-562"></a> <span class="n">p</span><span class="p">.</span><span class="n">restore</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="c1">// iterate to the next position</span>
+<a name="line-566"></a> <span class="o">++</span><span class="n">it</span><span class="p">;</span>
+<a name="line-567"></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-568"></a>
+<a name="line-569"></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-570"></a> <span class="p">{</span>
+<a name="line-571"></a> <span class="n">current</span><span class="o">++</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="c1">// did we print the last photo?</span>
+<a name="line-577"></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-578"></a><span class="p">}</span>
+<a name="line-579"></a>
+<a name="line-580"></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-581"></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-582"></a> <span class="kt">int</span> <span class="n">current</span><span class="p">)</span>
+<a name="line-583"></a><span class="p">{</span>
+<a name="line-584"></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-585"></a>
+<a name="line-586"></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-587"></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-588"></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-589"></a>
+<a name="line-590"></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-591"></a> <span class="p">{</span>
+<a name="line-592"></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-593"></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-594"></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-595"></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-596"></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-597"></a>
+<a name="line-598"></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-599"></a> <span class="n">maxDPI</span> <span class="o">=</span> <span class="n">dpi</span><span class="p">;</span>
+<a name="line-600"></a>
+<a name="line-601"></a> <span class="c1">// iterate to the next position</span>
+<a name="line-602"></a> <span class="o">++</span><span class="n">it</span><span class="p">;</span>
+<a name="line-603"></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-604"></a>
+<a name="line-605"></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-606"></a> <span class="p">{</span>
+<a name="line-607"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-608"></a> <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="k">return</span> <span class="n">maxDPI</span><span class="p">;</span>
+<a name="line-612"></a><span class="p">}</span>
+<a name="line-613"></a>
+<a name="line-614"></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-615"></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-616"></a> <span class="kt">int</span> <span class="n">captionW</span><span class="p">,</span>
+<a name="line-617"></a> <span class="kt">int</span> <span class="n">captionH</span><span class="p">,</span>
+<a name="line-618"></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-619"></a><span class="p">{</span>
+<a name="line-620"></a> <span class="n">QStringList</span> <span class="n">captionByLines</span><span class="p">;</span>
+<a name="line-621"></a>
+<a name="line-622"></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-623"></a>
+<a name="line-624"></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-625"></a> <span class="p">{</span>
+<a name="line-626"></a> <span class="n">QString</span> <span class="n">newLine</span><span class="p">;</span>
+<a name="line-627"></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-628"></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-629"></a>
+<a name="line-630"></a> <span class="c1">// Check minimal lines dimension</span>
+<a name="line-631"></a> <span class="c1">// TODO: fix length, maybe useless</span>
+<a name="line-632"></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-633"></a>
+<a name="line-634"></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-635"></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-636"></a> <span class="p">{</span>
+<a name="line-637"></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-638"></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-639"></a> <span class="p">{</span>
+<a name="line-640"></a> <span class="n">breakLine</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-641"></a> <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">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-645"></a> <span class="p">{</span>
+<a name="line-646"></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-647"></a> <span class="p">}</span>
+<a name="line-648"></a>
+<a name="line-649"></a> <span class="n">breakLine</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-650"></a>
+<a name="line-651"></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-652"></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-653"></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-654"></a> <span class="o">++</span><span class="n">currIndex</span><span class="p">)</span>
+<a name="line-655"></a> <span class="p">{</span>
+<a name="line-656"></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-657"></a>
+<a name="line-658"></a> <span class="k">if</span> <span class="p">(</span><span class="n">breakLine</span><span class="p">)</span>
+<a name="line-659"></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-660"></a> <span class="k">else</span>
+<a name="line-661"></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-662"></a> <span class="p">}</span>
+<a name="line-663"></a>
+<a name="line-664"></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-665"></a>
+<a name="line-666"></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-667"></a> <span class="p">{</span>
+<a name="line-668"></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-669"></a> <span class="p">{</span>
+<a name="line-670"></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-671"></a> <span class="n">captionIndex</span><span class="o">--</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="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-676"></a> <span class="p">}</span>
+<a name="line-677"></a>
+<a name="line-678"></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-679"></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-680"></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-681"></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-682"></a>
+<a name="line-683"></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-684"></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-685"></a>
+<a name="line-686"></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-687"></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-688"></a>
+<a name="line-689"></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-690"></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-691"></a>
+<a name="line-692"></a> <span class="c1">// Now draw the caption</span>
+<a name="line-693"></a> <span class="c1">// TODO allow printing captions per photo and on top, bottom and vertically</span>
+<a name="line-694"></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-695"></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-696"></a> <span class="p">{</span>
+<a name="line-697"></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-698"></a> <span class="p">{</span>
+<a name="line-699"></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-700"></a> <span class="p">}</span>
+<a name="line-701"></a>
+<a name="line-702"></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-703"></a>
+<a name="line-704"></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-705"></a> <span class="p">}</span>
+<a name="line-706"></a><span class="p">}</span>
+<a name="line-707"></a>
+<a name="line-708"></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/11.html b/static/reports/cppcheck/master/11.html
index ed759f517..1e569c7ad 100644
--- a/static/reports/cppcheck/master/11.html
+++ b/static/reports/cppcheck/master/11.html
@@ -1,961 +1,961 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/tools/printcreator/wizard/advprintwizard.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../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='11.html#line-279'> shadowVar 279</a><a href='11.html#line-326'> shadowVar 326</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</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> <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-279"></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-280"></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-281"></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-282"></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-283"></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-284"></a>
<a name="line-285"></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-286"></a> <span class="p">{</span>
<a name="line-287"></a> <span class="c1">// how many pages? Recall that the first layout item is the paper size</span>
<a name="line-288"></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-289"></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-290"></a>
<a name="line-291"></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-292"></a> <span class="p">{</span>
<a name="line-293"></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-294"></a> <span class="p">}</span>
<a name="line-295"></a>
<a name="line-296"></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-297"></a>
<a name="line-298"></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-299"></a> <span class="p">{</span>
<a name="line-300"></a> <span class="n">pageCount</span><span class="o">++</span><span class="p">;</span>
<a name="line-301"></a> <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="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-305"></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-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">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-307"></a>
<a name="line-308"></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-309"></a> <span class="p">{</span>
<a name="line-310"></a> <span class="c1">// photo previews</span>
<a name="line-311"></a> <span class="c1">// preview the first page.</span>
<a name="line-312"></a> <span class="c1">// find the first page of photos</span>
<a name="line-313"></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-314"></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-315"></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-316"></a>
<a name="line-317"></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-318"></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-319"></a> <span class="p">{</span>
<a name="line-320"></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-321"></a>
<a name="line-322"></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-323"></a> <span class="p">{</span>
<a name="line-324"></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-325"></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-326"></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-327"></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-328"></a> <span class="n">curr</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">(),</span>
<a name="line-329"></a> <span class="n">s</span><span class="o">-&gt;</span><span class="n">m_autoRotate</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="n">count</span><span class="o">++</span><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">count</span> <span class="o">&gt;=</span> <span class="n">photosPerPage</span><span class="p">)</span>
<a name="line-335"></a> <span class="p">{</span>
<a name="line-336"></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-337"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-338"></a>
<a name="line-339"></a> <span class="n">page</span><span class="o">++</span><span class="p">;</span>
<a name="line-340"></a> <span class="n">current</span> <span class="o">+=</span> <span class="n">photosPerPage</span><span class="p">;</span>
<a name="line-341"></a> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-342"></a> <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="c1">// send this photo list to the painter</span>
<a name="line-346"></a>
<a name="line-347"></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-348"></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-349"></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-350"></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-351"></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-352"></a>
<a name="line-353"></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-354"></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-355"></a> <span class="p">}</span>
<a name="line-356"></a> <span class="k">else</span>
<a name="line-357"></a> <span class="p">{</span>
<a name="line-358"></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-359"></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-360"></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-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">manageBtnPreviewPage</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">update</span><span class="p">();</span>
<a name="line-363"></a> <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="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-367"></a><span class="p">{</span>
<a name="line-368"></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-369"></a>
<a name="line-370"></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-371"></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-372"></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-373"></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-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">getPageCount</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">manageBtnPreviewPage</span><span class="p">();</span>
<a name="line-376"></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-377"></a><span class="p">}</span>
<a name="line-378"></a>
<a name="line-379"></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-380"></a><span class="p">{</span>
<a name="line-381"></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-382"></a><span class="p">}</span>
<a name="line-383"></a>
<a name="line-384"></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-385"></a><span class="p">{</span>
<a name="line-386"></a> <span class="k">if</span> <span class="p">(</span><span class="n">e</span> <span class="o">&amp;&amp;</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-387"></a> <span class="p">{</span>
<a name="line-388"></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-389"></a>
<a name="line-390"></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-391"></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-392"></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-393"></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-394"></a> <span class="p">{</span>
<a name="line-395"></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-396"></a> <span class="p">{</span>
<a name="line-397"></a> <span class="c1">// Pass the key event to move crop frame region.</span>
<a name="line-398"></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-399"></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-400"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span> <span class="c1">// eat event</span>
<a name="line-401"></a> <span class="p">}</span>
<a name="line-402"></a> <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="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-406"></a><span class="p">}</span>
<a name="line-407"></a>
<a name="line-408"></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/12.html b/static/reports/cppcheck/master/12.html
index 47d6ae773..cebc4c285 100644
--- a/static/reports/cppcheck/master/12.html
+++ b/static/reports/cppcheck/master/12.html
@@ -1,429 +1,429 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/tools/sendbymail/manager/mailsettings.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/generic/tools/sendbymail/manager/mailsettings.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> mailsettings.cpp</p>
<a href='12.html#line-41'> useInitializationList 41</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</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 : mail settings container.</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"> * Copyright (C) 2010 by Andi Clemens &lt;andi dot clemens at googlemail 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;mailsettings.h&quot;</span><span class="cp"></span>
<a name="line-25"></a>
<a name="line-26"></a><span class="c1">// KDE includes</span>
<a name="line-27"></a>
<a name="line-28"></a><span class="cp">#include</span> <span class="cpf">&lt;kconfig.h&gt;</span><span class="cp"></span>
<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;kconfiggroup.h&gt;</span><span class="cp"></span>
<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&gt;</span><span class="cp"></span>
<a name="line-31"></a>
<a name="line-32"></a><span class="k">namespace</span> <span class="n">DigikamGenericSendByMailPlugin</span>
<a name="line-33"></a><span class="p">{</span>
<a name="line-34"></a>
<a name="line-35"></a><span class="n">MailSettings</span><span class="o">::</span><span class="n">MailSettings</span><span class="p">()</span>
<a name="line-36"></a><span class="p">{</span>
<a name="line-37"></a> <span class="n">selMode</span> <span class="o">=</span> <span class="n">IMAGES</span><span class="p">;</span>
<a name="line-38"></a> <span class="n">addFileProperties</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-39"></a> <span class="n">imagesChangeProp</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-40"></a> <span class="n">removeMetadata</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-41"></a><span class="hll"> <span class="n">attLimitInMbytes</span> <span class="o">=</span> <span class="mi">17</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'attLimitInMbytes' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;attLimitInMbytes&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-42"></a> <span class="n">imageCompression</span> <span class="o">=</span> <span class="mi">75</span><span class="p">;</span>
<a name="line-43"></a> <span class="n">mailProgram</span> <span class="o">=</span> <span class="n">THUNDERBIRD</span><span class="p">;</span>
<a name="line-44"></a> <span class="n">imageSize</span> <span class="o">=</span> <span class="mi">1024</span><span class="p">;</span>
<a name="line-45"></a> <span class="n">imageFormat</span> <span class="o">=</span> <span class="n">JPEG</span><span class="p">;</span>
<a name="line-46"></a><span class="p">}</span>
<a name="line-47"></a>
<a name="line-48"></a><span class="n">MailSettings</span><span class="o">::~</span><span class="n">MailSettings</span><span class="p">()</span>
<a name="line-49"></a><span class="p">{</span>
<a name="line-50"></a><span class="p">}</span>
<a name="line-51"></a>
<a name="line-52"></a><span class="kt">void</span> <span class="n">MailSettings</span><span class="o">::</span><span class="n">readSettings</span><span class="p">(</span><span class="n">KConfigGroup</span><span class="o">&amp;</span> <span class="n">group</span><span class="p">)</span>
<a name="line-53"></a><span class="p">{</span>
<a name="line-54"></a> <span class="n">selMode</span> <span class="o">=</span> <span class="p">(</span><span class="n">Selection</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;SelMode&quot;</span><span class="p">,</span>
<a name="line-55"></a> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">IMAGES</span><span class="p">);</span>
<a name="line-56"></a> <span class="n">addFileProperties</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;AddCommentsAndTags&quot;</span><span class="p">,</span>
<a name="line-57"></a> <span class="nb">false</span><span class="p">);</span>
<a name="line-58"></a> <span class="n">imagesChangeProp</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;ImagesChangeProp&quot;</span><span class="p">,</span>
<a name="line-59"></a> <span class="nb">false</span><span class="p">);</span>
<a name="line-60"></a> <span class="n">removeMetadata</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;RemoveMetadata&quot;</span><span class="p">,</span>
<a name="line-61"></a> <span class="nb">false</span><span class="p">);</span>
<a name="line-62"></a> <span class="n">attLimitInMbytes</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;AttLimitInMbytes&quot;</span><span class="p">,</span>
<a name="line-63"></a> <span class="mi">17</span><span class="p">);</span>
<a name="line-64"></a> <span class="n">imageCompression</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;ImageCompression&quot;</span><span class="p">,</span>
<a name="line-65"></a> <span class="mi">75</span><span class="p">);</span>
<a name="line-66"></a> <span class="n">mailProgram</span> <span class="o">=</span> <span class="p">(</span><span class="n">MailClient</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;MailProgram&quot;</span><span class="p">,</span>
<a name="line-67"></a> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">THUNDERBIRD</span><span class="p">);</span>
<a name="line-68"></a> <span class="n">imageSize</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;ImageSize&quot;</span><span class="p">,</span>
<a name="line-69"></a> <span class="mi">1024</span><span class="p">);</span>
<a name="line-70"></a> <span class="n">imageFormat</span> <span class="o">=</span> <span class="p">(</span><span class="n">ImageFormat</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;ImageFormat&quot;</span><span class="p">,</span>
<a name="line-71"></a> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">JPEG</span><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="kt">void</span> <span class="n">MailSettings</span><span class="o">::</span><span class="n">writeSettings</span><span class="p">(</span><span class="n">KConfigGroup</span><span class="o">&amp;</span> <span class="n">group</span><span class="p">)</span>
<a name="line-75"></a><span class="p">{</span>
<a name="line-76"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;SelMode&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">selMode</span><span class="p">);</span>
<a name="line-77"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;AddCommentsAndTags&quot;</span><span class="p">,</span> <span class="n">addFileProperties</span><span class="p">);</span>
<a name="line-78"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;ImagesChangeProp&quot;</span><span class="p">,</span> <span class="n">imagesChangeProp</span><span class="p">);</span>
<a name="line-79"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;RemoveMetadata&quot;</span><span class="p">,</span> <span class="n">removeMetadata</span><span class="p">);</span>
<a name="line-80"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;AttLimitInMbytes&quot;</span><span class="p">,</span> <span class="n">attLimitInMbytes</span><span class="p">);</span>
<a name="line-81"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;ImageCompression&quot;</span><span class="p">,</span> <span class="n">imageCompression</span><span class="p">);</span>
<a name="line-82"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;MailProgram&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">mailProgram</span><span class="p">);</span>
<a name="line-83"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;ImageSize&quot;</span><span class="p">,</span> <span class="n">imageSize</span><span class="p">);</span>
<a name="line-84"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;ImageFormat&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">imageFormat</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="n">QString</span> <span class="n">MailSettings</span><span class="o">::</span><span class="n">format</span><span class="p">()</span> <span class="k">const</span>
<a name="line-88"></a><span class="p">{</span>
<a name="line-89"></a> <span class="k">if</span> <span class="p">(</span><span class="n">imageFormat</span> <span class="o">==</span> <span class="n">JPEG</span><span class="p">)</span>
<a name="line-90"></a> <span class="k">return</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;JPEG&quot;</span><span class="p">);</span>
<a name="line-91"></a>
<a name="line-92"></a> <span class="k">return</span> <span class="nf">QLatin1String</span><span class="p">(</span><span class="s">&quot;PNG&quot;</span><span class="p">);</span>
<a name="line-93"></a><span class="p">}</span>
<a name="line-94"></a>
<a name="line-95"></a><span class="kt">void</span> <span class="n">MailSettings</span><span class="o">::</span><span class="n">setMailUrl</span><span class="p">(</span><span class="k">const</span> <span class="n">QUrl</span><span class="o">&amp;</span> <span class="n">orgUrl</span><span class="p">,</span> <span class="k">const</span> <span class="n">QUrl</span><span class="o">&amp;</span> <span class="n">emailUrl</span><span class="p">)</span>
<a name="line-96"></a><span class="p">{</span>
<a name="line-97"></a> <span class="n">itemsList</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">orgUrl</span><span class="p">,</span> <span class="n">emailUrl</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">QUrl</span> <span class="n">MailSettings</span><span class="o">::</span><span class="n">mailUrl</span><span class="p">(</span><span class="k">const</span> <span class="n">QUrl</span><span class="o">&amp;</span> <span class="n">orgUrl</span><span class="p">)</span> <span class="k">const</span>
<a name="line-101"></a><span class="p">{</span>
<a name="line-102"></a> <span class="k">if</span> <span class="p">(</span><span class="n">itemsList</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">orgUrl</span><span class="p">))</span>
<a name="line-103"></a> <span class="p">{</span>
<a name="line-104"></a> <span class="k">return</span> <span class="n">itemsList</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="n">orgUrl</span><span class="p">).</span><span class="n">value</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">return</span> <span class="n">QUrl</span><span class="p">();</span>
<a name="line-108"></a><span class="p">}</span>
<a name="line-109"></a>
<a name="line-110"></a><span class="n">qint64</span> <span class="n">MailSettings</span><span class="o">::</span><span class="n">attachementLimit</span><span class="p">()</span> <span class="k">const</span>
<a name="line-111"></a><span class="p">{</span>
<a name="line-112"></a> <span class="n">qint64</span> <span class="n">val</span> <span class="o">=</span> <span class="n">attLimitInMbytes</span> <span class="o">*</span> <span class="mi">1024</span> <span class="o">*</span> <span class="mi">1024</span><span class="p">;</span>
<a name="line-113"></a> <span class="k">return</span> <span class="n">val</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">QMap</span><span class="o">&lt;</span><span class="n">MailSettings</span><span class="o">::</span><span class="n">MailClient</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="n">MailSettings</span><span class="o">::</span><span class="n">mailClientNames</span><span class="p">()</span>
<a name="line-117"></a><span class="p">{</span>
<a name="line-118"></a> <span class="n">QMap</span><span class="o">&lt;</span><span class="n">MailClient</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="n">clients</span><span class="p">;</span>
<a name="line-119"></a>
<a name="line-120"></a> <span class="n">clients</span><span class="p">[</span><span class="n">BALSA</span><span class="p">]</span> <span class="o">=</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;Mail client: BALSA&quot;</span><span class="p">,</span> <span class="s">&quot;Balsa&quot;</span><span class="p">);</span>
<a name="line-121"></a> <span class="n">clients</span><span class="p">[</span><span class="n">CLAWSMAIL</span><span class="p">]</span> <span class="o">=</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;Mail client: CLAWSMAIL&quot;</span><span class="p">,</span> <span class="s">&quot;Clawsmail&quot;</span><span class="p">);</span>
<a name="line-122"></a> <span class="n">clients</span><span class="p">[</span><span class="n">EVOLUTION</span><span class="p">]</span> <span class="o">=</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;Mail client: EVOLUTION&quot;</span><span class="p">,</span> <span class="s">&quot;Evolution&quot;</span><span class="p">);</span>
<a name="line-123"></a> <span class="n">clients</span><span class="p">[</span><span class="n">KMAIL</span><span class="p">]</span> <span class="o">=</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;Mail client: KMAIL&quot;</span><span class="p">,</span> <span class="s">&quot;Kmail&quot;</span><span class="p">);</span>
<a name="line-124"></a> <span class="n">clients</span><span class="p">[</span><span class="n">NETSCAPE</span><span class="p">]</span> <span class="o">=</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;Mail client: NETSCAPE&quot;</span><span class="p">,</span> <span class="s">&quot;Netscape Messenger&quot;</span><span class="p">);</span>
<a name="line-125"></a> <span class="n">clients</span><span class="p">[</span><span class="n">OUTLOOK</span><span class="p">]</span> <span class="o">=</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;Mail client: OUTLOOK&quot;</span><span class="p">,</span> <span class="s">&quot;Outlook&quot;</span><span class="p">);</span>
<a name="line-126"></a> <span class="n">clients</span><span class="p">[</span><span class="n">SYLPHEED</span><span class="p">]</span> <span class="o">=</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;Mail client: SYLPHEED&quot;</span><span class="p">,</span> <span class="s">&quot;Sylpheed&quot;</span><span class="p">);</span>
<a name="line-127"></a> <span class="n">clients</span><span class="p">[</span><span class="n">THUNDERBIRD</span><span class="p">]</span> <span class="o">=</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;Mail client: THUNDERBIRD&quot;</span><span class="p">,</span> <span class="s">&quot;Thunderbird&quot;</span><span class="p">);</span>
<a name="line-128"></a>
<a name="line-129"></a> <span class="k">return</span> <span class="n">clients</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">QMap</span><span class="o">&lt;</span><span class="n">MailSettings</span><span class="o">::</span><span class="n">ImageFormat</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="n">MailSettings</span><span class="o">::</span><span class="n">imageFormatNames</span><span class="p">()</span>
<a name="line-133"></a><span class="p">{</span>
<a name="line-134"></a> <span class="n">QMap</span><span class="o">&lt;</span><span class="n">ImageFormat</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="n">frms</span><span class="p">;</span>
<a name="line-135"></a>
<a name="line-136"></a> <span class="n">frms</span><span class="p">[</span><span class="n">JPEG</span><span class="p">]</span> <span class="o">=</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;Image format: JPEG&quot;</span><span class="p">,</span> <span class="s">&quot;Jpeg&quot;</span><span class="p">);</span>
<a name="line-137"></a> <span class="n">frms</span><span class="p">[</span><span class="n">PNG</span><span class="p">]</span> <span class="o">=</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;Image format: PNG&quot;</span><span class="p">,</span> <span class="s">&quot;Png&quot;</span><span class="p">);</span>
<a name="line-138"></a>
<a name="line-139"></a> <span class="k">return</span> <span class="n">frms</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="p">}</span> <span class="c1">// namespace DigikamGenericSendByMailPlugin</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 8255b3325..545fd8825 100644
--- a/static/reports/cppcheck/master/13.html
+++ b/static/reports/cppcheck/master/13.html
@@ -1,2023 +1,303 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/view/glviewer/glviewerwidget.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/generic/view/presentation/common/presentationcontainer.cpp </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> glviewerwidget.cpp</p>
-<a href='13.html#line-93'> useInitializationList 93</a>
+ <p id="filename"><a href="index.html">Defects:</a> presentationcontainer.cpp</p>
+<a href='13.html#line-35'> useInitializationList 35</a><a href='13.html#line-52'> useInitializationList 52</a><a href='13.html#line-53'> useInitializationList 53</a><a href='13.html#line-55'> useInitializationList 55</a><a href='13.html#line-69'> useInitializationList 69</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</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</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-11</span>
-<a name="line-7"></a><span class="cm"> * Description : a tool to show image using an OpenGL interface.</span>
+<a name="line-6"></a><span class="cm"> * Date : 2008-10-02</span>
+<a name="line-7"></a><span class="cm"> * Description : a presentation tool.</span>
<a name="line-8"></a><span class="cm"> *</span>
-<a name="line-9"></a><span class="cm"> * Copyright (C) 2007-2008 by Markus Leuthold &lt;kusi at forum dot titlis dot org&gt;</span>
-<a name="line-10"></a><span class="cm"> * Copyright (C) 2008-2016 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;glviewerwidget.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;QApplication&gt;</span><span class="cp"></span>
-<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QScreen&gt;</span><span class="cp"></span>
-<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QWindow&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;QList&gt;</span><span class="cp"></span>
-<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QIcon&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;QMimeType&gt;</span><span class="cp"></span>
-<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&lt;QMimeDatabase&gt;</span><span class="cp"></span>
-<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&lt;QStandardPaths&gt;</span><span class="cp"></span>
-<a name="line-38"></a>
-<a name="line-39"></a><span class="c1">// KDE includes</span>
-<a name="line-40"></a>
-<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&gt;</span><span class="cp"></span>
-<a name="line-42"></a>
-<a name="line-43"></a><span class="c1">// Local includes</span>
-<a name="line-44"></a>
-<a name="line-45"></a><span class="cp">#include</span> <span class="cpf">&quot;glviewertimer.h&quot;</span><span class="cp"></span>
-<a name="line-46"></a><span class="cp">#include</span> <span class="cpf">&quot;glviewertexture.h&quot;</span><span class="cp"></span>
-<a name="line-47"></a><span class="cp">#include</span> <span class="cpf">&quot;glviewerhelpdlg.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>
-<a name="line-50"></a><span class="cp">#ifndef GL_TEXTURE_RECTANGLE_ARB</span>
-<a name="line-51"></a><span class="cp"># define GL_TEXTURE_RECTANGLE_ARB 0x84F5</span>
-<a name="line-52"></a><span class="cp">#endif</span>
-<a name="line-53"></a>
-<a name="line-54"></a><span class="cp">#ifndef GL_TEXTURE_RECTANGLE_NV</span>
-<a name="line-55"></a><span class="cp"># define GL_TEXTURE_RECTANGLE_NV 0x84F5</span>
-<a name="line-56"></a><span class="cp">#endif</span>
-<a name="line-57"></a>
-<a name="line-58"></a><span class="k">namespace</span> <span class="n">DigikamGenericGLViewerPlugin</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">GLViewerWidget</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">struct</span> <span class="n">Cache</span>
-<a name="line-66"></a> <span class="p">{</span>
-<a name="line-67"></a> <span class="kt">int</span> <span class="n">file_index</span><span class="p">;</span>
-<a name="line-68"></a> <span class="n">GLViewerTexture</span><span class="o">*</span> <span class="n">texture</span><span class="p">;</span>
-<a name="line-69"></a> <span class="p">};</span>
-<a name="line-70"></a>
-<a name="line-71"></a> <span class="k">enum</span> <span class="n">WheelAction</span>
-<a name="line-72"></a> <span class="p">{</span>
-<a name="line-73"></a> <span class="n">zoomImage</span><span class="p">,</span>
-<a name="line-74"></a> <span class="n">changeImage</span>
-<a name="line-75"></a> <span class="p">};</span>
-<a name="line-76"></a>
-<a name="line-77"></a><span class="k">public</span><span class="o">:</span>
+<a name="line-9"></a><span class="cm"> * Copyright (C) 2008-2009 by Valerio Fuoglio &lt;valerio dot fuoglio 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="c1">// Local includes</span>
+<a name="line-24"></a>
+<a name="line-25"></a><span class="cp">#include</span> <span class="cpf">&quot;presentationcontainer.h&quot;</span><span class="cp"></span>
+<a name="line-26"></a>
+<a name="line-27"></a><span class="k">namespace</span> <span class="n">DigikamGenericPresentationPlugin</span>
+<a name="line-28"></a><span class="p">{</span>
+<a name="line-29"></a>
+<a name="line-30"></a><span class="n">PresentationContainer</span><span class="o">::</span><span class="n">PresentationContainer</span><span class="p">()</span>
+<a name="line-31"></a><span class="p">{</span>
+<a name="line-32"></a> <span class="n">delayMsMaxValue</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-33"></a> <span class="n">delayMsMinValue</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-34"></a> <span class="n">delayMsLineStep</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-35"></a><span class="hll"> <span class="n">urlList</span> <span class="o">=</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="o">&gt;</span><span class="p">();</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'urlList' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;urlList&apos; a value by passing the value to the constructor in the initialization list.</div></div>
+</span><a name="line-36"></a> <span class="n">mainPage</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-37"></a> <span class="n">captionPage</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-38"></a> <span class="n">advancedPage</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-39"></a>
+<a name="line-40"></a><span class="cp">#ifdef HAVE_MEDIAPLAYER</span>
+<a name="line-41"></a> <span class="n">soundtrackPage</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-42"></a><span class="cp">#endif</span>
+<a name="line-43"></a>
+<a name="line-44"></a> <span class="n">opengl</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-45"></a> <span class="n">openGlFullScale</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-46"></a> <span class="n">delay</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-47"></a> <span class="n">printFileName</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-48"></a> <span class="n">printProgress</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-49"></a> <span class="n">printFileComments</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-50"></a> <span class="n">loop</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-51"></a> <span class="n">shuffle</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-52"></a><span class="hll"> <span class="n">commentsFontColor</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'commentsFontColor' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;commentsFontColor&apos; a value by passing the value to the constructor in the initialization list.</div></div>
+</span><a name="line-53"></a><span class="hll"> <span class="n">commentsBgColor</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'commentsBgColor' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;commentsBgColor&apos; a value by passing the value to the constructor in the initialization list.</div></div>
+</span><a name="line-54"></a> <span class="n">commentsDrawOutline</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-55"></a><span class="hll"> <span class="n">bgOpacity</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'bgOpacity' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;bgOpacity&apos; a value by passing the value to the constructor in the initialization list.</div></div>
+</span><a name="line-56"></a> <span class="n">commentsLinesLength</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-57"></a> <span class="n">captionFont</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-58"></a>
+<a name="line-59"></a> <span class="n">soundtrackLoop</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-60"></a> <span class="n">soundtrackPlay</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-61"></a> <span class="n">soundtrackRememberPlaylist</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-62"></a> <span class="n">soundtrackPlayListNeedsUpdate</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-63"></a>
+<a name="line-64"></a> <span class="n">useMilliseconds</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-65"></a> <span class="n">enableMouseWheel</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-66"></a> <span class="n">enableCache</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-67"></a> <span class="n">kbDisableFadeInOut</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-68"></a> <span class="n">kbDisableCrossFade</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-69"></a><span class="hll"> <span class="n">cacheSize</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'cacheSize' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;cacheSize&apos; a value by passing the value to the constructor in the initialization list.</div></div>
+</span><a name="line-70"></a>
+<a name="line-71"></a> <span class="n">iface</span> <span class="o">=</span> <span class="k">nullptr</span><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="n">PresentationContainer</span><span class="o">::~</span><span class="n">PresentationContainer</span><span class="p">()</span>
+<a name="line-75"></a><span class="p">{</span>
+<a name="line-76"></a> <span class="k">delete</span> <span class="n">captionFont</span><span class="p">;</span>
+<a name="line-77"></a><span class="p">}</span>
<a name="line-78"></a>
-<a name="line-79"></a> <span class="n">Private</span><span class="p">()</span>
-<a name="line-80"></a> <span class="p">{</span>
-<a name="line-81"></a> <span class="n">texture</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-82"></a> <span class="n">firstImage</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="c1">// index of picture to be displayed</span>
-<a name="line-85"></a> <span class="n">file_idx</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-86"></a>
-<a name="line-87"></a> <span class="c1">// define zoomfactors for one zoom step</span>
-<a name="line-88"></a> <span class="n">zoomfactor_scrollwheel</span> <span class="o">=</span> <span class="mf">1.1F</span><span class="p">;</span>
-<a name="line-89"></a> <span class="n">zoomfactor_mousemove</span> <span class="o">=</span> <span class="mf">1.03F</span><span class="p">;</span>
-<a name="line-90"></a> <span class="n">zoomfactor_keyboard</span> <span class="o">=</span> <span class="mf">1.05F</span><span class="p">;</span>
-<a name="line-91"></a>
-<a name="line-92"></a> <span class="c1">// load cursors for zooming and panning</span>
-<a name="line-93"></a><span class="hll"> <span class="n">zoomCursor</span> <span class="o">=</span> <span class="n">QCursor</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;zoom-in&quot;</span><span class="p">)).</span><span class="n">pixmap</span><span class="p">(</span><span class="mi">64</span><span class="p">));</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'zoomCursor' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;zoomCursor&apos; a value by passing the value to the constructor in the initialization list.</div></div>
-</span><a name="line-94"></a> <span class="n">moveCursor</span> <span class="o">=</span> <span class="n">QCursor</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">PointingHandCursor</span><span class="p">);</span>
-<a name="line-95"></a>
-<a name="line-96"></a> <span class="c1">// get path of nullImage in case QImage can&#39;t load the image</span>
-<a name="line-97"></a> <span class="n">nullImage</span> <span class="o">=</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;image-jpeg&quot;</span><span class="p">)).</span><span class="n">pixmap</span><span class="p">(</span><span class="mi">256</span><span class="p">);</span>
-<a name="line-98"></a>
-<a name="line-99"></a> <span class="c1">// while zooming is performed, the image is downsampled to d-&gt;zoomsize. This seems to</span>
-<a name="line-100"></a> <span class="c1">// be the optimal way for a PentiumM 1.4G, Nvidia FX5200. For a faster setup, this might</span>
-<a name="line-101"></a> <span class="c1">// not be necessary anymore</span>
-<a name="line-102"></a> <span class="n">zoomsize</span> <span class="o">=</span> <span class="n">QSize</span><span class="p">(</span><span class="mi">1024</span><span class="p">,</span> <span class="mi">768</span><span class="p">);</span>
-<a name="line-103"></a>
-<a name="line-104"></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">CACHESIZE</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-105"></a> <span class="p">{</span>
-<a name="line-106"></a> <span class="n">cache</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">file_index</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-107"></a> <span class="n">cache</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">texture</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-108"></a> <span class="p">}</span>
-<a name="line-109"></a>
-<a name="line-110"></a> <span class="n">ratio_view_x</span> <span class="o">=</span> <span class="mf">0.0F</span><span class="p">;</span>
-<a name="line-111"></a> <span class="n">ratio_view_y</span> <span class="o">=</span> <span class="mf">0.0F</span><span class="p">;</span>
-<a name="line-112"></a> <span class="n">delta</span> <span class="o">=</span> <span class="mf">0.0F</span><span class="p">;</span>
-<a name="line-113"></a> <span class="n">vertex_height</span> <span class="o">=</span> <span class="mf">0.0F</span><span class="p">;</span>
-<a name="line-114"></a> <span class="n">vertex_width</span> <span class="o">=</span> <span class="mf">0.0F</span><span class="p">;</span>
-<a name="line-115"></a> <span class="n">vertex_left</span> <span class="o">=</span> <span class="mf">0.0F</span><span class="p">;</span>
-<a name="line-116"></a> <span class="n">vertex_top</span> <span class="o">=</span> <span class="mf">0.0F</span><span class="p">;</span>
-<a name="line-117"></a> <span class="n">vertex_right</span> <span class="o">=</span> <span class="mf">0.0F</span><span class="p">;</span>
-<a name="line-118"></a> <span class="n">vertex_bottom</span> <span class="o">=</span> <span class="mf">0.0F</span><span class="p">;</span>
-<a name="line-119"></a> <span class="n">wheelAction</span> <span class="o">=</span> <span class="n">zoomImage</span><span class="p">;</span>
-<a name="line-120"></a> <span class="n">iface</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-121"></a> <span class="n">plugin</span> <span class="o">=</span> <span class="k">nullptr</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="n">QStringList</span> <span class="n">files</span><span class="p">;</span>
-<a name="line-125"></a> <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">file_idx</span><span class="p">;</span>
-<a name="line-126"></a> <span class="n">Cache</span> <span class="n">cache</span><span class="p">[</span><span class="n">CACHESIZE</span><span class="p">];</span>
-<a name="line-127"></a> <span class="n">GLViewerTexture</span><span class="o">*</span> <span class="n">texture</span><span class="p">;</span>
-<a name="line-128"></a>
-<a name="line-129"></a> <span class="kt">float</span> <span class="n">ratio_view_y</span><span class="p">;</span>
-<a name="line-130"></a> <span class="kt">float</span> <span class="n">ratio_view_x</span><span class="p">;</span>
-<a name="line-131"></a> <span class="kt">float</span> <span class="n">delta</span><span class="p">;</span>
-<a name="line-132"></a> <span class="kt">float</span> <span class="n">vertex_height</span><span class="p">;</span>
-<a name="line-133"></a> <span class="kt">float</span> <span class="n">vertex_width</span><span class="p">;</span>
-<a name="line-134"></a> <span class="kt">float</span> <span class="n">vertex_left</span><span class="p">;</span>
-<a name="line-135"></a> <span class="kt">float</span> <span class="n">vertex_top</span><span class="p">;</span>
-<a name="line-136"></a> <span class="kt">float</span> <span class="n">vertex_right</span><span class="p">;</span>
-<a name="line-137"></a> <span class="kt">float</span> <span class="n">vertex_bottom</span><span class="p">;</span>
-<a name="line-138"></a>
-<a name="line-139"></a> <span class="n">QPoint</span> <span class="n">startdrag</span><span class="p">,</span> <span class="n">previous_pos</span><span class="p">;</span>
-<a name="line-140"></a> <span class="n">WheelAction</span> <span class="n">wheelAction</span><span class="p">;</span>
-<a name="line-141"></a> <span class="kt">bool</span> <span class="n">firstImage</span><span class="p">;</span>
-<a name="line-142"></a> <span class="n">QSize</span> <span class="n">zoomsize</span><span class="p">;</span>
-<a name="line-143"></a> <span class="n">QTimer</span> <span class="n">timerMouseMove</span><span class="p">;</span>
-<a name="line-144"></a> <span class="n">QCursor</span> <span class="n">moveCursor</span><span class="p">,</span> <span class="n">zoomCursor</span><span class="p">;</span>
-<a name="line-145"></a> <span class="kt">float</span> <span class="n">zoomfactor_scrollwheel</span><span class="p">;</span>
-<a name="line-146"></a> <span class="kt">float</span> <span class="n">zoomfactor_mousemove</span><span class="p">;</span>
-<a name="line-147"></a> <span class="kt">float</span> <span class="n">zoomfactor_keyboard</span><span class="p">;</span>
-<a name="line-148"></a> <span class="n">QPixmap</span> <span class="n">nullImage</span><span class="p">;</span>
-<a name="line-149"></a> <span class="n">QSize</span> <span class="n">screenSize</span><span class="p">;</span>
-<a name="line-150"></a>
-<a name="line-151"></a> <span class="n">DInfoInterface</span><span class="o">*</span> <span class="n">iface</span><span class="p">;</span>
-<a name="line-152"></a> <span class="n">DPlugin</span><span class="o">*</span> <span class="n">plugin</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">GLViewerWidget</span><span class="o">::</span><span class="n">GLViewerWidget</span><span class="p">(</span><span class="n">DPlugin</span><span class="o">*</span> <span class="k">const</span> <span class="n">plugin</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-156"></a> <span class="o">:</span> <span class="n">QOpenGLWidget</span><span class="p">(),</span>
-<a name="line-157"></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-158"></a><span class="p">{</span>
-<a name="line-159"></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>
-<a name="line-160"></a>
-<a name="line-161"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">plugin</span> <span class="o">=</span> <span class="n">plugin</span><span class="p">;</span>
-<a name="line-162"></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-163"></a>
-<a name="line-164"></a> <span class="c1">// Determine screen size for isReallyFullScreen</span>
-<a name="line-165"></a>
-<a name="line-166"></a> <span class="n">QScreen</span><span class="o">*</span> <span class="n">screen</span> <span class="o">=</span> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">primaryScreen</span><span class="p">();</span>
-<a name="line-167"></a>
-<a name="line-168"></a> <span class="k">if</span> <span class="p">(</span><span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">widget</span> <span class="o">=</span> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">activeWindow</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">QWindow</span><span class="o">*</span> <span class="k">const</span> <span class="n">window</span> <span class="o">=</span> <span class="n">widget</span><span class="o">-&gt;</span><span class="n">windowHandle</span><span class="p">())</span>
-<a name="line-171"></a> <span class="p">{</span>
-<a name="line-172"></a> <span class="n">screen</span> <span class="o">=</span> <span class="n">window</span><span class="o">-&gt;</span><span class="n">screen</span><span class="p">();</span>
-<a name="line-173"></a> <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="n">d</span><span class="o">-&gt;</span><span class="n">screenSize</span> <span class="o">=</span> <span class="n">screen</span><span class="o">-&gt;</span><span class="n">size</span><span class="p">();</span>
-<a name="line-177"></a>
-<a name="line-178"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="o">&gt;</span> <span class="n">myfiles</span><span class="p">;</span> <span class="c1">// pics which are displayed in imageviewer</span>
-<a name="line-179"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="o">&gt;</span> <span class="n">selection</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-180"></a> <span class="n">QString</span> <span class="n">selectedImage</span><span class="p">;</span> <span class="c1">// selected pic in hostapp</span>
-<a name="line-181"></a>
-<a name="line-182"></a> <span class="kt">int</span> <span class="n">foundNumber</span> <span class="o">=</span> <span class="mi">0</span><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">selection</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-185"></a> <span class="p">{</span>
-<a name="line-186"></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;no image selected, load entire album&quot;</span><span class="p">;</span>
-<a name="line-187"></a> <span class="n">myfiles</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">currentAlbumItems</span><span class="p">();</span>
-<a name="line-188"></a> <span class="p">}</span>
-<a name="line-189"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">selection</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-190"></a> <span class="p">{</span>
-<a name="line-191"></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;one image selected, load entire album and start with selected image&quot;</span><span class="p">;</span>
-<a name="line-192"></a> <span class="n">selectedImage</span> <span class="o">=</span> <span class="n">selection</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-193"></a> <span class="n">myfiles</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">currentAlbumItems</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">selection</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-196"></a> <span class="p">{</span>
-<a name="line-197"></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;load&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">selection</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;selected images&quot;</span><span class="p">;</span>
-<a name="line-198"></a> <span class="n">myfiles</span> <span class="o">=</span> <span class="n">selection</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="c1">// populate QStringList::d-&gt;files</span>
-<a name="line-202"></a>
-<a name="line-203"></a> <span class="k">for</span> <span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="o">&gt;::</span><span class="n">Iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">myfiles</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">myfiles</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-204"></a> <span class="p">{</span>
-<a name="line-205"></a> <span class="c1">// find selected image in album in order to determine the first displayed image</span>
-<a name="line-206"></a> <span class="c1">// in case one image was selected and the entire album was loaded</span>
-<a name="line-207"></a>
-<a name="line-208"></a> <span class="n">QString</span> <span class="n">s</span> <span class="o">=</span> <span class="n">it</span><span class="o">-&gt;</span><span class="n">toLocalFile</span><span class="p">();</span>
-<a name="line-209"></a>
-<a name="line-210"></a> <span class="k">if</span> <span class="p">(</span><span class="n">s</span> <span class="o">==</span> <span class="n">selectedImage</span><span class="p">)</span>
-<a name="line-211"></a> <span class="p">{</span>
-<a name="line-212"></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;selected img&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">selectedImage</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;has idx=&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">foundNumber</span><span class="p">;</span>
-<a name="line-213"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">file_idx</span> <span class="o">=</span> <span class="n">foundNumber</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="c1">// only add images to d-&gt;files</span>
-<a name="line-217"></a>
-<a name="line-218"></a> <span class="n">QString</span> <span class="n">mimeTypeName</span> <span class="o">=</span> <span class="n">QMimeDatabase</span><span class="p">().</span><span class="n">mimeTypeForUrl</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">s</span><span class="p">)).</span><span class="n">name</span><span class="p">();</span>
-<a name="line-219"></a> <span class="kt">bool</span> <span class="n">isImage</span> <span class="o">=</span> <span class="n">mimeTypeName</span><span class="p">.</span><span class="n">contains</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;image&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">CaseInsensitive</span><span class="p">);</span>
-<a name="line-220"></a>
-<a name="line-221"></a> <span class="k">if</span> <span class="p">(</span><span class="n">isImage</span><span class="p">)</span>
-<a name="line-222"></a> <span class="p">{</span>
-<a name="line-223"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">files</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">s</span><span class="p">);</span>
-<a name="line-224"></a> <span class="n">foundNumber</span><span class="o">++</span><span class="p">;</span> <span class="c1">// counter for searching the start image in case one image is selected</span>
-<a name="line-225"></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">s</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;type=&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">mimeTypeName</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>
-<a name="line-229"></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">d</span><span class="o">-&gt;</span><span class="n">files</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;images loaded&quot;</span><span class="p">;</span>
-<a name="line-230"></a>
-<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">files</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-232"></a> <span class="p">{</span>
-<a name="line-233"></a> <span class="k">return</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="n">showFullScreen</span><span class="p">();</span> <span class="c1">// krazy:exclude=qmethods</span>
-<a name="line-237"></a>
-<a name="line-238"></a> <span class="c1">// let the cursor dissapear after 2sec of inactivity</span>
-<a name="line-239"></a>
-<a name="line-240"></a> <span class="n">connect</span><span class="p">(</span><span class="o">&amp;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">timerMouseMove</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">timeout</span><span class="p">()),</span>
-<a name="line-241"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotTimeoutMouseMove</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">timerMouseMove</span><span class="p">.</span><span class="n">start</span><span class="p">(</span><span class="mi">2000</span><span class="p">);</span>
-<a name="line-244"></a> <span class="n">setMouseTracking</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-245"></a>
-<a name="line-246"></a> <span class="c1">// other initialisations</span>
-<a name="line-247"></a>
-<a name="line-248"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">wheelAction</span> <span class="o">=</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">changeImage</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="n">GLViewerWidget</span><span class="o">::~</span><span class="n">GLViewerWidget</span><span class="p">()</span>
-<a name="line-252"></a><span class="p">{</span>
-<a name="line-253"></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">CACHESIZE</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-254"></a> <span class="p">{</span>
-<a name="line-255"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cache</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">file_index</span> <span class="o">=</span> <span class="n">EMPTY</span><span class="p">;</span>
-<a name="line-256"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cache</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">texture</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="k">delete</span> <span class="n">d</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="cm">/**</span>
-<a name="line-263"></a><span class="cm"> * \todo blending</span>
-<a name="line-264"></a><span class="cm"> */</span>
-<a name="line-265"></a><span class="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">initializeGL</span><span class="p">()</span>
-<a name="line-266"></a><span class="p">{</span>
-<a name="line-267"></a> <span class="n">glEnable</span><span class="p">(</span><span class="n">GL_TEXTURE_RECTANGLE_ARB</span><span class="p">);</span>
-<a name="line-268"></a>
-<a name="line-269"></a> <span class="c1">// Clear The Background Color</span>
-<a name="line-270"></a> <span class="n">glClearColor</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">,</span> <span class="mf">1.0f</span><span class="p">);</span>
-<a name="line-271"></a>
-<a name="line-272"></a> <span class="c1">// Turn Blending On</span>
-<a name="line-273"></a> <span class="n">glEnable</span><span class="p">(</span><span class="n">GL_BLEND</span><span class="p">);</span>
-<a name="line-274"></a>
-<a name="line-275"></a> <span class="c1">// Blending Function For Translucency Based On Source Alpha Value</span>
-<a name="line-276"></a> <span class="n">glBlendFunc</span><span class="p">(</span><span class="n">GL_SRC_ALPHA</span><span class="p">,</span> <span class="n">GL_ONE_MINUS_SRC_ALPHA</span><span class="p">);</span>
-<a name="line-277"></a>
-<a name="line-278"></a> <span class="c1">// Enable perspective vision</span>
-<a name="line-279"></a> <span class="n">glClearDepth</span><span class="p">(</span><span class="mf">1.0f</span><span class="p">);</span>
-<a name="line-280"></a>
-<a name="line-281"></a> <span class="c1">// initialize cache</span>
-<a name="line-282"></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">CACHESIZE</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-283"></a> <span class="p">{</span>
-<a name="line-284"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cache</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">file_index</span> <span class="o">=</span> <span class="n">EMPTY</span><span class="p">;</span>
-<a name="line-285"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cache</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">texture</span> <span class="o">=</span> <span class="k">new</span> <span class="n">GLViewerTexture</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-286"></a> <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="kt">bool</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">listOfFilesIsEmpty</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-290"></a><span class="p">{</span>
-<a name="line-291"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">files</span><span class="p">.</span><span class="n">isEmpty</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">GLViewerWidget</span><span class="o">::</span><span class="n">paintGL</span><span class="p">()</span>
-<a name="line-295"></a><span class="p">{</span>
-<a name="line-296"></a> <span class="c1">// this test has to be performed here since QWidget::width() is only updated now</span>
-<a name="line-297"></a><span class="cm">/*</span>
-<a name="line-298"></a><span class="cm"> qCDebug(DIGIKAM_DPLUGIN_GENERIC_LOG) &lt;&lt; &quot;enter paintGL: isReallyFullscreen=&quot; &lt;&lt; isReallyFullScreen();</span>
-<a name="line-299"></a><span class="cm">*/</span>
-<a name="line-300"></a> <span class="c1">// prepare 1st image</span>
-<a name="line-301"></a>
-<a name="line-302"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">firstImage</span> <span class="o">&amp;&amp;</span> <span class="n">isReallyFullScreen</span><span class="p">())</span>
-<a name="line-303"></a> <span class="p">{</span>
-<a name="line-304"></a><span class="cm">/*</span>
-<a name="line-305"></a><span class="cm"> qCDebug(DIGIKAM_DPLUGIN_GENERIC_LOG) &lt;&lt; &quot;first image&quot;;</span>
-<a name="line-306"></a><span class="cm">*/</span>
-<a name="line-307"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span> <span class="o">=</span> <span class="n">loadImage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">file_idx</span><span class="p">);</span>
-<a name="line-308"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">reset</span><span class="p">();</span>
-<a name="line-309"></a> <span class="n">downloadTexture</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="p">);</span>
-<a name="line-310"></a><span class="cm">/*</span>
-<a name="line-311"></a><span class="cm"> qCDebug(DIGIKAM_DPLUGIN_GENERIC_LOG) &lt;&lt; &quot;width=&quot; &lt;&lt; width();</span>
-<a name="line-312"></a><span class="cm">*/</span>
-<a name="line-313"></a> <span class="n">glClear</span><span class="p">(</span><span class="n">GL_COLOR_BUFFER_BIT</span> <span class="o">|</span> <span class="n">GL_DEPTH_BUFFER_BIT</span><span class="p">);</span>
-<a name="line-314"></a> <span class="n">glLoadIdentity</span><span class="p">();</span>
-<a name="line-315"></a> <span class="n">glTranslatef</span><span class="p">(</span><span class="mf">0.0f</span><span class="p">,</span> <span class="mf">0.0f</span><span class="p">,</span> <span class="o">-</span><span class="mf">5.0f</span><span class="p">);</span>
-<a name="line-316"></a> <span class="n">drawImage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="p">);</span>
-<a name="line-317"></a>
-<a name="line-318"></a> <span class="c1">// trigger a redraw NOW. the user wants to see a picture as soon as possible</span>
-<a name="line-319"></a> <span class="c1">// only load the second image after the first is displayed</span>
-<a name="line-320"></a>
-<a name="line-321"></a> <span class="n">glFlush</span><span class="p">();</span>
-<a name="line-322"></a>
-<a name="line-323"></a> <span class="c1">// preload the 2nd image</span>
-<a name="line-324"></a>
-<a name="line-325"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">firstImage</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">file_idx</span> <span class="o">&lt;</span> <span class="p">(</span><span class="kt">unsigned</span> <span class="kt">int</span><span class="p">)(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">files</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-328"></a> <span class="p">{</span>
-<a name="line-329"></a> <span class="n">loadImage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">file_idx</span><span class="o">+</span><span class="mi">1</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="n">d</span><span class="o">-&gt;</span><span class="n">firstImage</span><span class="o">=</span><span class="nb">false</span><span class="p">;</span>
-<a name="line-333"></a> <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="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">firstImage</span><span class="p">)</span>
-<a name="line-337"></a> <span class="p">{</span>
-<a name="line-338"></a><span class="cm">/*</span>
-<a name="line-339"></a><span class="cm"> qCDebug(DIGIKAM_DPLUGIN_GENERIC_LOG) &lt;&lt; &quot;width=&quot; &lt;&lt; width();</span>
-<a name="line-340"></a><span class="cm">*/</span>
-<a name="line-341"></a> <span class="n">glClear</span><span class="p">(</span><span class="n">GL_COLOR_BUFFER_BIT</span> <span class="o">|</span> <span class="n">GL_DEPTH_BUFFER_BIT</span><span class="p">);</span>
-<a name="line-342"></a> <span class="n">glLoadIdentity</span><span class="p">();</span>
-<a name="line-343"></a> <span class="n">glTranslatef</span><span class="p">(</span><span class="mf">0.0f</span><span class="p">,</span> <span class="mf">0.0f</span><span class="p">,</span> <span class="o">-</span><span class="mf">5.0f</span><span class="p">);</span>
-<a name="line-344"></a> <span class="n">drawImage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</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"> qCDebug(DIGIKAM_DPLUGIN_GENERIC_LOG) &lt;&lt; &quot;exit paintGL&quot;;</span>
-<a name="line-348"></a><span class="cm">*/</span>
-<a name="line-349"></a><span class="p">}</span>
-<a name="line-350"></a>
-<a name="line-351"></a><span class="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">resizeGL</span><span class="p">(</span><span class="kt">int</span> <span class="n">w</span><span class="p">,</span> <span class="kt">int</span> <span class="n">h</span><span class="p">)</span>
-<a name="line-352"></a><span class="p">{</span>
-<a name="line-353"></a><span class="cm">/*</span>
-<a name="line-354"></a><span class="cm"> qCDebug(DIGIKAM_DPLUGIN_GENERIC_LOG) &lt;&lt; &quot;resizeGL,w=&quot; &lt;&lt; w;</span>
-<a name="line-355"></a><span class="cm">*/</span>
-<a name="line-356"></a> <span class="n">glViewport</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="p">(</span><span class="n">GLint</span><span class="p">)</span><span class="n">w</span><span class="p">,</span> <span class="p">(</span><span class="n">GLint</span><span class="p">)</span><span class="n">h</span><span class="p">);</span>
-<a name="line-357"></a> <span class="n">glMatrixMode</span><span class="p">(</span><span class="n">GL_PROJECTION</span><span class="p">);</span>
-<a name="line-358"></a> <span class="n">glLoadIdentity</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">h</span> <span class="o">&gt;</span> <span class="n">w</span><span class="p">)</span>
-<a name="line-361"></a> <span class="p">{</span>
-<a name="line-362"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">ratio_view_x</span> <span class="o">=</span> <span class="mf">1.0</span><span class="p">;</span>
-<a name="line-363"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">ratio_view_y</span> <span class="o">=</span> <span class="n">h</span> <span class="o">/</span> <span class="kt">float</span><span class="p">(</span><span class="n">w</span><span class="p">);</span>
-<a name="line-364"></a> <span class="p">}</span>
-<a name="line-365"></a> <span class="k">else</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">ratio_view_x</span> <span class="o">=</span> <span class="n">w</span> <span class="o">/</span> <span class="kt">float</span><span class="p">(</span><span class="n">h</span><span class="p">);</span>
-<a name="line-368"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">ratio_view_y</span> <span class="o">=</span> <span class="mf">1.0</span><span class="p">;</span>
-<a name="line-369"></a> <span class="p">}</span>
-<a name="line-370"></a>
-<a name="line-371"></a> <span class="n">glFrustum</span><span class="p">(</span><span class="o">-</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">ratio_view_x</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">ratio_view_x</span><span class="p">,</span> <span class="o">-</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">ratio_view_y</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">ratio_view_y</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mf">5000.0</span><span class="p">);</span>
-<a name="line-372"></a> <span class="n">glMatrixMode</span><span class="p">(</span><span class="n">GL_MODELVIEW</span><span class="p">);</span>
-<a name="line-373"></a> <span class="n">glLoadIdentity</span><span class="p">();</span>
-<a name="line-374"></a>
-<a name="line-375"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span> <span class="o">==</span> <span class="k">nullptr</span><span class="p">)</span>
-<a name="line-376"></a> <span class="p">{</span>
-<a name="line-377"></a> <span class="k">return</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="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">firstImage</span><span class="p">)</span>
-<a name="line-381"></a> <span class="p">{</span>
-<a name="line-382"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">setViewport</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-383"></a> <span class="p">}</span>
-<a name="line-384"></a><span class="p">}</span>
-<a name="line-385"></a>
-<a name="line-386"></a><span class="cm">/**</span>
-<a name="line-387"></a><span class="cm"> * render the image</span>
-<a name="line-388"></a><span class="cm"> */</span>
-<a name="line-389"></a><span class="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">drawImage</span><span class="p">(</span><span class="n">GLViewerTexture</span><span class="o">*</span> <span class="k">const</span> <span class="n">tex</span><span class="p">)</span>
-<a name="line-390"></a><span class="p">{</span>
-<a name="line-391"></a> <span class="c1">// qCDebug(DIGIKAM_DPLUGIN_GENERIC_LOG) &lt;&lt; &quot;enter drawImage: target=&quot; &lt;&lt; d-&gt;texture-&gt;textureId()</span>
-<a name="line-392"></a> <span class="c1">// &lt;&lt; &quot;dim=&quot; &lt;&lt; d-&gt;texture-&gt;height() &lt;&lt; d-&gt;texture-&gt;width();</span>
-<a name="line-393"></a> <span class="n">glBindTexture</span><span class="p">(</span><span class="n">GL_TEXTURE_RECTANGLE_NV</span><span class="p">,</span> <span class="n">tex</span><span class="o">-&gt;</span><span class="n">textureId</span><span class="p">());</span>
-<a name="line-394"></a> <span class="n">glBegin</span><span class="p">(</span><span class="n">GL_QUADS</span><span class="p">);</span>
-<a name="line-395"></a> <span class="n">glTexCoord2f</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-396"></a> <span class="n">glVertex3f</span><span class="p">(</span><span class="n">tex</span><span class="o">-&gt;</span><span class="n">vertex_left</span><span class="p">(),</span> <span class="n">tex</span><span class="o">-&gt;</span><span class="n">vertex_bottom</span><span class="p">(),</span> <span class="mi">0</span><span class="p">);</span>
-<a name="line-397"></a>
-<a name="line-398"></a> <span class="n">glTexCoord2f</span><span class="p">(</span><span class="n">tex</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">(),</span> <span class="mi">0</span><span class="p">);</span>
-<a name="line-399"></a> <span class="n">glVertex3f</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">vertex_right</span><span class="p">(),</span> <span class="n">tex</span><span class="o">-&gt;</span><span class="n">vertex_bottom</span><span class="p">(),</span> <span class="mi">0</span><span class="p">);</span>
-<a name="line-400"></a>
-<a name="line-401"></a> <span class="n">glTexCoord2f</span><span class="p">(</span><span class="n">tex</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">(),</span> <span class="n">tex</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">());</span>
-<a name="line-402"></a> <span class="n">glVertex3f</span><span class="p">(</span><span class="n">tex</span><span class="o">-&gt;</span><span class="n">vertex_right</span><span class="p">(),</span> <span class="n">tex</span><span class="o">-&gt;</span><span class="n">vertex_top</span><span class="p">(),</span> <span class="mi">0</span><span class="p">);</span>
-<a name="line-403"></a>
-<a name="line-404"></a> <span class="n">glTexCoord2f</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tex</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">());</span>
-<a name="line-405"></a> <span class="n">glVertex3f</span><span class="p">(</span><span class="n">tex</span><span class="o">-&gt;</span><span class="n">vertex_left</span><span class="p">(),</span> <span class="n">tex</span><span class="o">-&gt;</span><span class="n">vertex_top</span><span class="p">(),</span> <span class="mi">0</span><span class="p">);</span>
-<a name="line-406"></a> <span class="n">glEnd</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"> * Handle all keyboard events. All events which are not handled trigger</span>
-<a name="line-411"></a><span class="cm"> * a help window.</span>
-<a name="line-412"></a><span class="cm"> */</span>
-<a name="line-413"></a><span class="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">keyPressEvent</span><span class="p">(</span><span class="n">QKeyEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">)</span>
-<a name="line-414"></a><span class="p">{</span>
-<a name="line-415"></a> <span class="n">QPoint</span> <span class="n">middlepoint</span><span class="p">;</span>
-<a name="line-416"></a>
-<a name="line-417"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">key</span><span class="p">())</span>
-<a name="line-418"></a> <span class="p">{</span>
-<a name="line-419"></a> <span class="c1">// next image</span>
-<a name="line-420"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_N</span><span class="p">:</span>
-<a name="line-421"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_Right</span><span class="p">:</span>
-<a name="line-422"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_Down</span><span class="p">:</span>
-<a name="line-423"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_PageDown</span><span class="p">:</span>
-<a name="line-424"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_Space</span><span class="p">:</span>
-<a name="line-425"></a> <span class="n">nextImage</span><span class="p">();</span>
-<a name="line-426"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-427"></a>
-<a name="line-428"></a> <span class="c1">// previous image</span>
-<a name="line-429"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_P</span><span class="p">:</span>
-<a name="line-430"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_Left</span><span class="p">:</span>
-<a name="line-431"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_Up</span><span class="p">:</span>
-<a name="line-432"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_PageUp</span><span class="p">:</span>
-<a name="line-433"></a> <span class="n">prevImage</span><span class="p">();</span>
-<a name="line-434"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-435"></a>
-<a name="line-436"></a> <span class="c1">// rotate image</span>
-<a name="line-437"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_R</span><span class="p">:</span>
-<a name="line-438"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">rotate</span><span class="p">();</span>
-<a name="line-439"></a> <span class="n">downloadTexture</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="p">);</span>
-<a name="line-440"></a> <span class="n">update</span><span class="p">();</span>
-<a name="line-441"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-442"></a>
-<a name="line-443"></a> <span class="c1">// terminate image viewer</span>
-<a name="line-444"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_Escape</span><span class="p">:</span>
-<a name="line-445"></a> <span class="c1">// clean up: where does this have to be done?</span>
-<a name="line-446"></a> <span class="n">close</span><span class="p">();</span>
-<a name="line-447"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-448"></a>
-<a name="line-449"></a> <span class="c1">// full screen</span>
-<a name="line-450"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_F</span><span class="p">:</span>
-<a name="line-451"></a> <span class="c1">// according to QT documentation, showFullScreen() has some</span>
-<a name="line-452"></a> <span class="c1">// serious issues on window managers that do not follow modern</span>
-<a name="line-453"></a> <span class="c1">// post-ICCCM specifications</span>
-<a name="line-454"></a> <span class="k">if</span> <span class="p">(</span><span class="n">isFullScreen</span><span class="p">())</span>
-<a name="line-455"></a> <span class="p">{</span>
-<a name="line-456"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">reset</span><span class="p">();</span>
-<a name="line-457"></a> <span class="n">showNormal</span><span class="p">();</span> <span class="c1">// krazy:exclude=qmethods</span>
-<a name="line-458"></a> <span class="p">}</span>
-<a name="line-459"></a> <span class="k">else</span>
-<a name="line-460"></a> <span class="p">{</span>
-<a name="line-461"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">reset</span><span class="p">();</span>
-<a name="line-462"></a> <span class="n">showFullScreen</span><span class="p">();</span> <span class="c1">// krazy:exclude=qmethods</span>
-<a name="line-463"></a> <span class="p">}</span>
-<a name="line-464"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-465"></a>
-<a name="line-466"></a> <span class="c1">// reset size and redraw</span>
-<a name="line-467"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_Z</span><span class="p">:</span>
-<a name="line-468"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">reset</span><span class="p">();</span>
-<a name="line-469"></a> <span class="n">update</span><span class="p">();</span>
-<a name="line-470"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-471"></a>
-<a name="line-472"></a> <span class="c1">// toggle permanent between &quot;show next image&quot; and &quot;zoom&quot; on mousewheel change</span>
-<a name="line-473"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_C</span><span class="p">:</span>
-<a name="line-474"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">wheelAction</span> <span class="o">==</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">zoomImage</span><span class="p">)</span>
-<a name="line-475"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">wheelAction</span> <span class="o">=</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">changeImage</span><span class="p">;</span>
-<a name="line-476"></a> <span class="k">else</span>
-<a name="line-477"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">wheelAction</span> <span class="o">=</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">zoomImage</span><span class="p">;</span>
-<a name="line-478"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-479"></a>
-<a name="line-480"></a> <span class="c1">// zoom in</span>
-<a name="line-481"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_Plus</span><span class="p">:</span>
-<a name="line-482"></a> <span class="n">middlepoint</span> <span class="o">=</span> <span class="n">QPoint</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">height</span><span class="p">()</span> <span class="o">/</span> <span class="mi">2</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">texture</span><span class="o">-&gt;</span><span class="n">setNewSize</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">zoomsize</span><span class="p">))</span>
-<a name="line-485"></a> <span class="n">downloadTexture</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="p">);</span> <span class="c1">//load full resolution image</span>
-<a name="line-486"></a>
-<a name="line-487"></a> <span class="n">zoom</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">middlepoint</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">zoomfactor_keyboard</span><span class="p">);</span>
-<a name="line-488"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-489"></a>
-<a name="line-490"></a> <span class="c1">// zoom out</span>
-<a name="line-491"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_Minus</span><span class="p">:</span>
-<a name="line-492"></a> <span class="n">middlepoint</span> <span class="o">=</span> <span class="n">QPoint</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">height</span><span class="p">()</span> <span class="o">/</span> <span class="mi">2</span><span class="p">);</span>
-<a name="line-493"></a>
-<a name="line-494"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">setNewSize</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">zoomsize</span><span class="p">))</span>
-<a name="line-495"></a> <span class="p">{</span>
-<a name="line-496"></a> <span class="n">downloadTexture</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="p">);</span> <span class="c1">//load full resolution image</span>
-<a name="line-497"></a> <span class="p">}</span>
-<a name="line-498"></a>
-<a name="line-499"></a> <span class="n">zoom</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">middlepoint</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">zoomfactor_keyboard</span><span class="p">);</span>
-<a name="line-500"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-501"></a>
-<a name="line-502"></a> <span class="c1">// zoom to original size</span>
-<a name="line-503"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_O</span><span class="p">:</span>
-<a name="line-504"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">loadFullSize</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">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">setNewSize</span><span class="p">(</span><span class="n">QSize</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-507"></a> <span class="p">{</span>
-<a name="line-508"></a> <span class="n">downloadTexture</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="p">);</span> <span class="c1">//load full resolution image</span>
-<a name="line-509"></a> <span class="p">}</span>
-<a name="line-510"></a>
-<a name="line-511"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">zoomToOriginal</span><span class="p">();</span>
-<a name="line-512"></a> <span class="n">update</span><span class="p">();</span>
-<a name="line-513"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-514"></a>
-<a name="line-515"></a> <span class="c1">// toggle temorarily between &quot;show next image&quot; and &quot;zoom&quot; on mousewheel change</span>
-<a name="line-516"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_Control</span><span class="p">:</span>
-<a name="line-517"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">wheelAction</span> <span class="o">==</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">zoomImage</span><span class="p">)</span>
-<a name="line-518"></a> <span class="p">{</span>
-<a name="line-519"></a> <span class="c1">//scrollwheel changes to the next image</span>
-<a name="line-520"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">wheelAction</span> <span class="o">=</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">changeImage</span><span class="p">;</span>
-<a name="line-521"></a> <span class="p">}</span>
-<a name="line-522"></a> <span class="k">else</span>
-<a name="line-523"></a> <span class="p">{</span>
-<a name="line-524"></a> <span class="c1">//scrollwheel does zoom</span>
-<a name="line-525"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">wheelAction</span> <span class="o">=</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">zoomImage</span><span class="p">;</span>
-<a name="line-526"></a> <span class="n">setCursor</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">zoomCursor</span><span class="p">);</span>
-<a name="line-527"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timerMouseMove</span><span class="p">.</span><span class="n">stop</span><span class="p">();</span>
-<a name="line-528"></a> <span class="p">}</span>
-<a name="line-529"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-530"></a>
-<a name="line-531"></a> <span class="c1">//do noting, don&#39;t trigger the help dialog</span>
-<a name="line-532"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_Shift</span><span class="p">:</span>
-<a name="line-533"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-534"></a>
-<a name="line-535"></a> <span class="c1">//key is not bound to any action, therefore show help dialog to enlighten the user</span>
-<a name="line-536"></a> <span class="k">default</span><span class="o">:</span>
-<a name="line-537"></a> <span class="n">QPointer</span><span class="o">&lt;</span><span class="n">GLViewerHelpDlg</span><span class="o">&gt;</span> <span class="n">help</span> <span class="o">=</span> <span class="k">new</span> <span class="n">GLViewerHelpDlg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">plugin</span><span class="p">);</span>
-<a name="line-538"></a> <span class="n">help</span><span class="o">-&gt;</span><span class="n">exec</span><span class="p">();</span>
-<a name="line-539"></a> <span class="k">break</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>
-<a name="line-543"></a><span class="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">keyReleaseEvent</span><span class="p">(</span><span class="n">QKeyEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">)</span>
-<a name="line-544"></a><span class="p">{</span>
-<a name="line-545"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">key</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="n">Qt</span><span class="o">::</span><span class="nl">Key_Plus</span><span class="p">:</span>
-<a name="line-548"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_Minus</span><span class="p">:</span>
-<a name="line-549"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">isAutoRepeat</span><span class="p">())</span>
-<a name="line-550"></a> <span class="p">{</span>
-<a name="line-551"></a> <span class="n">unsetCursor</span><span class="p">();</span>
-<a name="line-552"></a>
-<a name="line-553"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">setNewSize</span><span class="p">(</span><span class="n">QSize</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-554"></a> <span class="p">{</span>
-<a name="line-555"></a> <span class="n">downloadTexture</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="p">);</span> <span class="c1">//load full resolution image</span>
-<a name="line-556"></a> <span class="p">}</span>
-<a name="line-557"></a>
-<a name="line-558"></a> <span class="n">update</span><span class="p">();</span>
-<a name="line-559"></a> <span class="p">}</span>
-<a name="line-560"></a> <span class="k">else</span>
-<a name="line-561"></a> <span class="p">{</span>
-<a name="line-562"></a> <span class="n">e</span><span class="o">-&gt;</span><span class="n">ignore</span><span class="p">();</span>
-<a name="line-563"></a> <span class="p">}</span>
-<a name="line-564"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-565"></a>
-<a name="line-566"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_Control</span><span class="p">:</span>
-<a name="line-567"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">wheelAction</span> <span class="o">==</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">zoomImage</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">wheelAction</span> <span class="o">=</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">changeImage</span><span class="p">;</span>
-<a name="line-570"></a> <span class="p">}</span>
-<a name="line-571"></a> <span class="k">else</span>
-<a name="line-572"></a> <span class="p">{</span>
-<a name="line-573"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">wheelAction</span> <span class="o">=</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">zoomImage</span><span class="p">;</span>
-<a name="line-574"></a> <span class="n">unsetCursor</span><span class="p">();</span>
-<a name="line-575"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timerMouseMove</span><span class="p">.</span><span class="n">start</span><span class="p">(</span><span class="mi">2000</span><span class="p">);</span>
-<a name="line-576"></a> <span class="p">}</span>
-<a name="line-577"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-578"></a>
-<a name="line-579"></a> <span class="k">default</span><span class="o">:</span>
-<a name="line-580"></a> <span class="n">e</span><span class="o">-&gt;</span><span class="n">ignore</span><span class="p">();</span>
-<a name="line-581"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-582"></a> <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="cm">/**</span>
-<a name="line-586"></a><span class="cm"> * download texture to video memory</span>
-<a name="line-587"></a><span class="cm"> */</span>
-<a name="line-588"></a><span class="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">downloadTexture</span><span class="p">(</span><span class="n">GLViewerTexture</span><span class="o">*</span> <span class="k">const</span> <span class="n">tex</span><span class="p">)</span>
-<a name="line-589"></a><span class="p">{</span>
-<a name="line-590"></a> <span class="n">glBindTexture</span><span class="p">(</span><span class="n">GL_TEXTURE_RECTANGLE_NV</span><span class="p">,</span> <span class="n">tex</span><span class="o">-&gt;</span><span class="n">textureId</span><span class="p">());</span>
-<a name="line-591"></a> <span class="c1">// glTexParameterf(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER_ARB);</span>
-<a name="line-592"></a> <span class="c1">// glTexParameterf(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER_ARB);</span>
-<a name="line-593"></a>
-<a name="line-594"></a> <span class="c1">// uncomment the following line to enable flat shading of texels -&gt; debugging</span>
-<a name="line-595"></a> <span class="c1">// glTexParameterf(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MAG_FILTER,GL_NEAREST);</span>
-<a name="line-596"></a>
-<a name="line-597"></a> <span class="c1">// glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGBA, tex-&gt;width(), tex-&gt;height(), 0,</span>
-<a name="line-598"></a> <span class="c1">// GL_RGBA, GL_UNSIGNED_BYTE, tex-&gt;data());</span>
-<a name="line-599"></a><span class="p">}</span>
-<a name="line-600"></a>
-<a name="line-601"></a><span class="cm">/**</span>
-<a name="line-602"></a><span class="cm"> * load d-&gt;files[file_index] into a texture object if it is not already cached</span>
-<a name="line-603"></a><span class="cm"> * \param file_index index to QStringList d-&gt;files</span>
-<a name="line-604"></a><span class="cm"> */</span>
-<a name="line-605"></a><span class="n">GLViewerTexture</span><span class="o">*</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">loadImage</span><span class="p">(</span><span class="kt">int</span> <span class="n">file_index</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-606"></a><span class="p">{</span>
-<a name="line-607"></a> <span class="kt">int</span> <span class="n">imod</span> <span class="o">=</span> <span class="n">file_index</span> <span class="o">%</span> <span class="n">CACHESIZE</span><span class="p">;</span> <span class="c1">//index for cache</span>
-<a name="line-608"></a>
-<a name="line-609"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cache</span><span class="p">[</span><span class="n">imod</span><span class="p">].</span><span class="n">file_index</span> <span class="o">==</span> <span class="n">file_index</span><span class="p">)</span>
-<a name="line-610"></a> <span class="p">{</span>
-<a name="line-611"></a> <span class="c1">// image is already cached</span>
-<a name="line-612"></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;image&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">file_index</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;is already in cache@&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">imod</span><span class="p">;</span>
-<a name="line-613"></a>
-<a name="line-614"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cache</span><span class="p">[</span><span class="n">imod</span><span class="p">].</span><span class="n">texture</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="c1">// image is net yet loaded</span>
-<a name="line-619"></a> <span class="n">QString</span> <span class="n">f</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">files</span><span class="p">[</span><span class="n">file_index</span><span class="p">];</span>
-<a name="line-620"></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;loading image&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">f</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;(idx=&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">file_index</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;) to cache@&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">imod</span><span class="p">;</span>
-<a name="line-621"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cache</span><span class="p">[</span><span class="n">imod</span><span class="p">].</span><span class="n">file_index</span> <span class="o">=</span> <span class="n">file_index</span><span class="p">;</span>
-<a name="line-622"></a>
-<a name="line-623"></a> <span class="c1">//when loadImage is called the first time, the frame is not yet fullscreen</span>
-<a name="line-624"></a> <span class="n">QSize</span> <span class="n">size</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">d</span><span class="o">-&gt;</span><span class="n">firstImage</span><span class="p">)</span>
-<a name="line-627"></a> <span class="p">{</span>
-<a name="line-628"></a> <span class="c1">//determine screensize since its not yet known by the widget</span>
-<a name="line-629"></a> <span class="n">size</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">screenSize</span><span class="p">;</span>
-<a name="line-630"></a> <span class="c1">//qCDebug(DIGIKAM_DPLUGIN_GENERIC_LOG) &lt;&lt; &quot;first image:size=&quot; &lt;&lt; size.width();</span>
-<a name="line-631"></a> <span class="p">}</span>
-<a name="line-632"></a> <span class="k">else</span>
-<a name="line-633"></a> <span class="p">{</span>
-<a name="line-634"></a> <span class="n">size</span> <span class="o">=</span> <span class="n">QSize</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-635"></a> <span class="c1">//qCDebug(DIGIKAM_DPLUGIN_GENERIC_LOG) &lt;&lt; &quot;next image:size=&quot; &lt;&lt; size.width();</span>
-<a name="line-636"></a> <span class="p">}</span>
-<a name="line-637"></a>
-<a name="line-638"></a> <span class="c1">// handle non-loadable images</span>
-<a name="line-639"></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">cache</span><span class="p">[</span><span class="n">imod</span><span class="p">].</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">load</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">size</span><span class="p">))</span>
-<a name="line-640"></a> <span class="p">{</span>
-<a name="line-641"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cache</span><span class="p">[</span><span class="n">imod</span><span class="p">].</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">load</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">nullImage</span><span class="p">.</span><span class="n">toImage</span><span class="p">(),</span> <span class="n">size</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="n">d</span><span class="o">-&gt;</span><span class="n">cache</span><span class="p">[</span><span class="n">imod</span><span class="p">].</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">setViewport</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="n">size</span><span class="p">.</span><span class="n">height</span><span class="p">());</span>
-<a name="line-645"></a>
-<a name="line-646"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cache</span><span class="p">[</span><span class="n">imod</span><span class="p">].</span><span class="n">texture</span><span class="p">;</span>
-<a name="line-647"></a> <span class="p">}</span>
-<a name="line-648"></a><span class="p">}</span>
-<a name="line-649"></a>
-<a name="line-650"></a><span class="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">wheelEvent</span><span class="p">(</span><span class="n">QWheelEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">)</span>
-<a name="line-651"></a><span class="p">{</span>
-<a name="line-652"></a> <span class="k">switch</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">wheelAction</span><span class="p">)</span>
-<a name="line-653"></a> <span class="p">{</span>
-<a name="line-654"></a> <span class="c1">// mousewheel triggers zoom</span>
-<a name="line-655"></a> <span class="k">case</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="nl">zoomImage</span><span class="p">:</span>
-<a name="line-656"></a> <span class="n">setCursor</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">zoomCursor</span><span class="p">);</span>
-<a name="line-657"></a> <span class="n">zoom</span><span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">delta</span><span class="p">(),</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">pos</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">zoomfactor_scrollwheel</span><span class="p">);</span>
-<a name="line-658"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-659"></a>
-<a name="line-660"></a> <span class="c1">// mousewheel triggers image change</span>
-<a name="line-661"></a> <span class="k">case</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="nl">changeImage</span><span class="p">:</span>
-<a name="line-662"></a> <span class="k">if</span> <span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">delta</span><span class="p">()</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-663"></a> <span class="n">nextImage</span><span class="p">();</span>
-<a name="line-664"></a> <span class="k">else</span>
-<a name="line-665"></a> <span class="nf">prevImage</span><span class="p">();</span>
-<a name="line-666"></a> <span class="k">break</span><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="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">mousePressEvent</span><span class="p">(</span><span class="n">QMouseEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">)</span>
-<a name="line-671"></a><span class="p">{</span>
-<a name="line-672"></a> <span class="c1">// begin zoom</span>
-<a name="line-673"></a> <span class="c1">// scale down d-&gt;texture for fast zooming</span>
-<a name="line-674"></a> <span class="c1">// d-&gt;texture will be set to original size on mouse up</span>
-<a name="line-675"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">setNewSize</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">zoomsize</span><span class="p">))</span>
-<a name="line-676"></a> <span class="p">{</span>
-<a name="line-677"></a> <span class="c1">//load downsampled image</span>
-<a name="line-678"></a> <span class="n">downloadTexture</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</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="n">d</span><span class="o">-&gt;</span><span class="n">timerMouseMove</span><span class="p">.</span><span class="n">stop</span><span class="p">();</span> <span class="c1">//user is something up to, therefore keep the cursor</span>
-<a name="line-682"></a>
-<a name="line-683"></a> <span class="k">if</span> <span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">button</span><span class="p">()</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">LeftButton</span><span class="p">)</span>
-<a name="line-684"></a> <span class="p">{</span>
-<a name="line-685"></a> <span class="n">setCursor</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">moveCursor</span><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="k">if</span> <span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">button</span><span class="p">()</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">RightButton</span><span class="p">)</span>
-<a name="line-689"></a> <span class="p">{</span>
-<a name="line-690"></a> <span class="n">setCursor</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">zoomCursor</span><span class="p">);</span>
-<a name="line-691"></a> <span class="p">}</span>
-<a name="line-692"></a>
-<a name="line-693"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">startdrag</span> <span class="o">=</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">pos</span><span class="p">();</span>
-<a name="line-694"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">previous_pos</span> <span class="o">=</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">pos</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="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">mouseMoveEvent</span><span class="p">(</span><span class="n">QMouseEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">)</span>
-<a name="line-698"></a><span class="p">{</span>
-<a name="line-699"></a> <span class="k">if</span> <span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">buttons</span><span class="p">()</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">LeftButton</span><span class="p">)</span>
-<a name="line-700"></a> <span class="p">{</span>
-<a name="line-701"></a> <span class="c1">//panning</span>
-<a name="line-702"></a> <span class="n">setCursor</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">moveCursor</span><span class="p">);</span>
-<a name="line-703"></a> <span class="n">QPoint</span> <span class="n">diff</span> <span class="o">=</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">pos</span><span class="p">()</span><span class="o">-</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">startdrag</span><span class="p">;</span>
-<a name="line-704"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">move</span><span class="p">(</span><span class="n">diff</span><span class="p">);</span>
-<a name="line-705"></a> <span class="n">update</span><span class="p">();</span>
-<a name="line-706"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">startdrag</span> <span class="o">=</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">pos</span><span class="p">();</span>
-<a name="line-707"></a> <span class="p">}</span>
-<a name="line-708"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">buttons</span><span class="p">()</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">RightButton</span><span class="p">)</span>
-<a name="line-709"></a> <span class="p">{</span>
-<a name="line-710"></a> <span class="kt">int</span> <span class="n">mdelta</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-711"></a>
-<a name="line-712"></a> <span class="c1">//zooming</span>
-<a name="line-713"></a> <span class="c1">//</span>
-<a name="line-714"></a> <span class="c1">//if mouse pointer reached upper or lower boder, special treatment in order</span>
-<a name="line-715"></a> <span class="c1">//to keep zooming enabled in that special case</span>
-<a name="line-716"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">previous_pos</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">==</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">y</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">e</span><span class="o">-&gt;</span><span class="n">y</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-719"></a> <span class="p">{</span>
-<a name="line-720"></a> <span class="c1">// mouse pointer is at upper edge, therefore assume zoom in</span>
-<a name="line-721"></a> <span class="n">mdelta</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
-<a name="line-722"></a> <span class="p">}</span>
-<a name="line-723"></a> <span class="k">else</span>
-<a name="line-724"></a> <span class="p">{</span>
-<a name="line-725"></a> <span class="c1">// mouse pointer is as lower edge, therefore assume zoom out</span>
-<a name="line-726"></a> <span class="n">mdelta</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
-<a name="line-727"></a> <span class="p">}</span>
-<a name="line-728"></a> <span class="p">}</span>
-<a name="line-729"></a> <span class="k">else</span>
-<a name="line-730"></a> <span class="p">{</span>
-<a name="line-731"></a> <span class="c1">// mouse pointer is in the middle of the screen, normal operation</span>
-<a name="line-732"></a> <span class="n">mdelta</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">previous_pos</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">-</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">y</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">setCursor</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">zoomCursor</span><span class="p">);</span>
-<a name="line-736"></a> <span class="n">zoom</span><span class="p">(</span><span class="n">mdelta</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">startdrag</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">zoomfactor_mousemove</span><span class="p">);</span>
-<a name="line-737"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">previous_pos</span> <span class="o">=</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">pos</span><span class="p">();</span>
-<a name="line-738"></a> <span class="p">}</span>
-<a name="line-739"></a> <span class="k">else</span>
-<a name="line-740"></a> <span class="p">{</span>
-<a name="line-741"></a> <span class="c1">//no key is pressed while moving mouse</span>
-<a name="line-742"></a> <span class="c1">//don&#39;t do anything if ctrl is pressed</span>
-<a name="line-743"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">timerMouseMove</span><span class="p">.</span><span class="n">isActive</span><span class="p">())</span>
-<a name="line-744"></a> <span class="p">{</span>
-<a name="line-745"></a> <span class="c1">//ctrl is not pressed, no zooming, therefore restore and hide cursor in 2 sec</span>
-<a name="line-746"></a> <span class="n">unsetCursor</span><span class="p">();</span>
-<a name="line-747"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timerMouseMove</span><span class="p">.</span><span class="n">start</span><span class="p">(</span><span class="mi">2000</span><span class="p">);</span>
-<a name="line-748"></a> <span class="p">}</span>
-<a name="line-749"></a> <span class="p">}</span>
-<a name="line-750"></a>
-<a name="line-751"></a> <span class="k">return</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">GLViewerWidget</span><span class="o">::</span><span class="n">mouseReleaseEvent</span><span class="p">(</span><span class="n">QMouseEvent</span><span class="o">*</span><span class="p">)</span>
-<a name="line-755"></a><span class="p">{</span>
-<a name="line-756"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timerMouseMove</span><span class="p">.</span><span class="n">start</span><span class="p">(</span><span class="mi">2000</span><span class="p">);</span>
-<a name="line-757"></a> <span class="n">unsetCursor</span><span class="p">();</span>
-<a name="line-758"></a>
-<a name="line-759"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">setNewSize</span><span class="p">(</span><span class="n">QSize</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-760"></a> <span class="p">{</span>
-<a name="line-761"></a> <span class="c1">//load full resolution image</span>
-<a name="line-762"></a> <span class="n">downloadTexture</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</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">update</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="cm">/**</span>
-<a name="line-769"></a><span class="cm"> * a double click resets the view (zoom and move)</span>
-<a name="line-770"></a><span class="cm"> */</span>
-<a name="line-771"></a><span class="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">mouseDoubleClickEvent</span><span class="p">(</span><span class="n">QMouseEvent</span><span class="o">*</span><span class="p">)</span>
-<a name="line-772"></a><span class="p">{</span>
-<a name="line-773"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">reset</span><span class="p">();</span>
-<a name="line-774"></a> <span class="n">update</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="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">prevImage</span><span class="p">()</span>
-<a name="line-778"></a><span class="p">{</span>
-<a name="line-779"></a><span class="cp">#ifdef PERFORMANCE_ANALYSIS</span>
-<a name="line-780"></a> <span class="n">GLViewerTimer</span> <span class="n">timer</span><span class="p">;</span>
-<a name="line-781"></a><span class="cp">#endif</span>
-<a name="line-782"></a>
-<a name="line-783"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">file_idx</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-784"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">file_idx</span><span class="o">--</span><span class="p">;</span>
-<a name="line-785"></a> <span class="k">else</span>
-<a name="line-786"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-787"></a>
-<a name="line-788"></a><span class="cp">#ifdef PERFORMANCE_ANALYSIS</span>
-<a name="line-789"></a> <span class="n">timer</span><span class="p">.</span><span class="n">start</span><span class="p">();</span>
-<a name="line-790"></a><span class="cp">#endif</span>
-<a name="line-791"></a>
-<a name="line-792"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span> <span class="o">=</span> <span class="n">loadImage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">file_idx</span><span class="p">);</span>
-<a name="line-793"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">reset</span><span class="p">();</span>
-<a name="line-794"></a>
-<a name="line-795"></a><span class="cp">#ifdef PERFORMANCE_ANALYSIS</span>
-<a name="line-796"></a> <span class="n">timer</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="s">&quot;loadImage&quot;</span><span class="p">);</span>
-<a name="line-797"></a><span class="cp">#endif</span>
-<a name="line-798"></a>
-<a name="line-799"></a> <span class="n">downloadTexture</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="p">);</span>
-<a name="line-800"></a>
-<a name="line-801"></a><span class="cp">#ifdef PERFORMANCE_ANALYSIS</span>
-<a name="line-802"></a> <span class="n">timer</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="s">&quot;downloadTexture&quot;</span><span class="p">);</span>
-<a name="line-803"></a><span class="cp">#endif</span>
-<a name="line-804"></a>
-<a name="line-805"></a> <span class="n">update</span><span class="p">();</span>
-<a name="line-806"></a>
-<a name="line-807"></a><span class="cp">#ifdef PERFORMANCE_ANALYSIS</span>
-<a name="line-808"></a> <span class="n">timer</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="s">&quot;update&quot;</span><span class="p">);</span>
-<a name="line-809"></a><span class="cp">#endif</span>
-<a name="line-810"></a>
-<a name="line-811"></a> <span class="c1">//image preloading</span>
-<a name="line-812"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">file_idx</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-813"></a> <span class="n">loadImage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">file_idx</span> <span class="o">-</span> <span class="mi">1</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="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">nextImage</span><span class="p">()</span>
-<a name="line-817"></a><span class="p">{</span>
-<a name="line-818"></a><span class="cp">#ifdef PERFORMANCE_ANALYSIS</span>
-<a name="line-819"></a> <span class="n">GLViewerTimer</span> <span class="n">timer</span><span class="p">;</span>
-<a name="line-820"></a><span class="cp">#endif</span>
-<a name="line-821"></a>
-<a name="line-822"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">file_idx</span> <span class="o">&lt;</span> <span class="p">(</span><span class="kt">unsigned</span> <span class="kt">int</span><span class="p">)(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">files</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-823"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">file_idx</span><span class="o">++</span><span class="p">;</span>
-<a name="line-824"></a> <span class="k">else</span>
-<a name="line-825"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-826"></a>
-<a name="line-827"></a><span class="cp">#ifdef PERFORMANCE_ANALYSIS</span>
-<a name="line-828"></a> <span class="n">timer</span><span class="p">.</span><span class="n">start</span><span class="p">();</span>
-<a name="line-829"></a><span class="cp">#endif</span>
-<a name="line-830"></a>
-<a name="line-831"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span> <span class="o">=</span> <span class="n">loadImage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">file_idx</span><span class="p">);</span>
-<a name="line-832"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">reset</span><span class="p">();</span>
-<a name="line-833"></a>
-<a name="line-834"></a><span class="cp">#ifdef PERFORMANCE_ANALYSIS</span>
-<a name="line-835"></a> <span class="n">timer</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="s">&quot;loadImage&quot;</span><span class="p">);</span>
-<a name="line-836"></a><span class="cp">#endif</span>
-<a name="line-837"></a>
-<a name="line-838"></a> <span class="n">downloadTexture</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="p">);</span>
-<a name="line-839"></a>
-<a name="line-840"></a><span class="cp">#ifdef PERFORMANCE_ANALYSIS</span>
-<a name="line-841"></a> <span class="n">timer</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="s">&quot;downloadTexture&quot;</span><span class="p">);</span>
-<a name="line-842"></a><span class="cp">#endif</span>
-<a name="line-843"></a>
-<a name="line-844"></a> <span class="n">update</span><span class="p">();</span>
-<a name="line-845"></a>
-<a name="line-846"></a><span class="cp">#ifdef PERFORMANCE_ANALYSIS</span>
-<a name="line-847"></a> <span class="n">timer</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="s">&quot;updateGL&quot;</span><span class="p">);</span>
-<a name="line-848"></a><span class="cp">#endif</span>
-<a name="line-849"></a>
-<a name="line-850"></a> <span class="c1">//image preloading</span>
-<a name="line-851"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">file_idx</span> <span class="o">&lt;</span> <span class="p">((</span><span class="kt">unsigned</span> <span class="kt">int</span><span class="p">)</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">files</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-852"></a> <span class="p">{</span>
-<a name="line-853"></a> <span class="n">loadImage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">file_idx</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-854"></a>
-<a name="line-855"></a><span class="cp">#ifdef PERFORMANCE_ANALYSIS</span>
-<a name="line-856"></a> <span class="n">timer</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="s">&quot;preloading&quot;</span><span class="p">);</span>
-<a name="line-857"></a><span class="cp">#endif</span>
-<a name="line-858"></a> <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="cm">/**</span>
-<a name="line-862"></a><span class="cm"> * \param mdelta delta of mouse movement:</span>
-<a name="line-863"></a><span class="cm"> * mdelta&gt;0: zoom in</span>
-<a name="line-864"></a><span class="cm"> * mdelta&lt;0: zoom out</span>
-<a name="line-865"></a><span class="cm"> * mdelta=0: do nothing</span>
-<a name="line-866"></a><span class="cm"> * \param pos position of mouse</span>
-<a name="line-867"></a><span class="cm"> * \param factor zoom factor:scrollwheel needs a higher factor that right click mouse move. factor=1 -&gt; no zoom</span>
-<a name="line-868"></a><span class="cm"> */</span>
-<a name="line-869"></a><span class="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">zoom</span><span class="p">(</span><span class="kt">int</span> <span class="n">mdelta</span><span class="p">,</span> <span class="k">const</span> <span class="n">QPoint</span><span class="o">&amp;</span> <span class="n">pos</span><span class="p">,</span> <span class="kt">float</span> <span class="n">factor</span><span class="p">)</span>
-<a name="line-870"></a><span class="p">{</span>
-<a name="line-871"></a> <span class="k">if</span> <span class="p">(</span><span class="n">mdelta</span> <span class="o">==</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="c1">//do nothing</span>
-<a name="line-874"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-875"></a> <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">mdelta</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-878"></a> <span class="p">{</span>
-<a name="line-879"></a> <span class="c1">//multiplicator for zooming in</span>
-<a name="line-880"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">delta</span> <span class="o">=</span> <span class="n">factor</span><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">mdelta</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-884"></a> <span class="p">{</span>
-<a name="line-885"></a> <span class="c1">//multiplicator for zooming out</span>
-<a name="line-886"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">delta</span> <span class="o">=</span> <span class="mf">2.0</span> <span class="o">-</span> <span class="n">factor</span><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="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">zoom</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">delta</span><span class="p">,</span> <span class="n">pos</span><span class="p">);</span>
-<a name="line-890"></a> <span class="n">update</span><span class="p">();</span>
-<a name="line-891"></a><span class="p">}</span>
-<a name="line-892"></a>
-<a name="line-893"></a><span class="cm">/**</span>
-<a name="line-894"></a><span class="cm"> * being called if user didn&#39;t move the mouse for longer than 2 sec</span>
-<a name="line-895"></a><span class="cm"> */</span>
-<a name="line-896"></a><span class="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">slotTimeoutMouseMove</span><span class="p">()</span>
-<a name="line-897"></a><span class="p">{</span>
-<a name="line-898"></a> <span class="n">setCursor</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">BlankCursor</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="cm">/**</span>
-<a name="line-902"></a><span class="cm"> * check if OpenGL engine is ready. This function is called from outside the widget.</span>
-<a name="line-903"></a><span class="cm"> * If OpenGL doen&#39;t work correctly, the widget can be destroyed</span>
-<a name="line-904"></a><span class="cm"> * \return OGLstate::oglNoContext No OpenGl context could be retrieved</span>
-<a name="line-905"></a><span class="cm"> * \return OGLstate::oglNoRectangularTexture GLGL_ARB_texture_rectangle is not supported</span>
-<a name="line-906"></a><span class="cm"> * \return OGLstate::oglOK all is fine</span>
-<a name="line-907"></a><span class="cm"> */</span>
-<a name="line-908"></a><span class="n">OGLstate</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">getOGLstate</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-909"></a><span class="p">{</span>
-<a name="line-910"></a> <span class="c1">// No OpenGL context is found. Are the drivers ok?</span>
-<a name="line-911"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">isValid</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">oglNoContext</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="c1">// GL_ARB_texture_rectangle is not supported</span>
-<a name="line-917"></a> <span class="n">QString</span> <span class="n">s</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="k">reinterpret_cast</span><span class="o">&lt;</span><span class="k">const</span> <span class="kt">char</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">glGetString</span><span class="p">(</span><span class="n">GL_EXTENSIONS</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">s</span><span class="p">.</span><span class="n">contains</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;GL_ARB_texture_rectangle&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">CaseInsensitive</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">oglNoRectangularTexture</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="c1">// Everything is ok!</span>
-<a name="line-925"></a> <span class="k">return</span> <span class="n">oglOK</span><span class="p">;</span>
-<a name="line-926"></a><span class="p">}</span>
-<a name="line-927"></a>
-<a name="line-928"></a><span class="cm">/**</span>
-<a name="line-929"></a><span class="cm"> * QGLWidget::isFullscreen() returns true if the internal state is already true</span>
-<a name="line-930"></a><span class="cm"> * but the actually displayed size is still windowed. isReallyFullscreen() returns the</span>
-<a name="line-931"></a><span class="cm"> * value of the visible size.</span>
-<a name="line-932"></a><span class="cm"> * \return true if (screenwidth == widgedwidth)</span>
-<a name="line-933"></a><span class="cm"> */</span>
-<a name="line-934"></a><span class="kt">bool</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">isReallyFullScreen</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-935"></a><span class="p">{</span>
-<a name="line-936"></a> <span class="k">return</span> <span class="p">(</span><span class="n">width</span><span class="p">()</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">screenSize</span><span class="p">.</span><span class="n">width</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="p">}</span> <span class="c1">// namespace DigikamGenericGLViewerPlugin</span>
+<a name="line-79"></a><span class="p">}</span> <span class="c1">// namespace DigikamGenericPresentationPlugin</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 51b3e34f0..c092ea847 100644
--- a/static/reports/cppcheck/master/14.html
+++ b/static/reports/cppcheck/master/14.html
@@ -1,303 +1,2023 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/view/presentation/common/presentationcontainer.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/generic/view/glviewer/glviewerwidget.cpp </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> presentationcontainer.cpp</p>
-<a href='14.html#line-35'> useInitializationList 35</a><a href='14.html#line-52'> useInitializationList 52</a><a href='14.html#line-53'> useInitializationList 53</a><a href='14.html#line-55'> useInitializationList 55</a><a href='14.html#line-69'> useInitializationList 69</a>
+ <p id="filename"><a href="index.html">Defects:</a> glviewerwidget.cpp</p>
+<a href='14.html#line-93'> useInitializationList 93</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</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</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-10-02</span>
-<a name="line-7"></a><span class="cm"> * Description : a presentation tool.</span>
+<a name="line-6"></a><span class="cm"> * Date : 2007-02-11</span>
+<a name="line-7"></a><span class="cm"> * Description : a tool to show image using an OpenGL interface.</span>
<a name="line-8"></a><span class="cm"> *</span>
-<a name="line-9"></a><span class="cm"> * Copyright (C) 2008-2009 by Valerio Fuoglio &lt;valerio dot fuoglio 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="c1">// Local includes</span>
-<a name="line-24"></a>
-<a name="line-25"></a><span class="cp">#include</span> <span class="cpf">&quot;presentationcontainer.h&quot;</span><span class="cp"></span>
-<a name="line-26"></a>
-<a name="line-27"></a><span class="k">namespace</span> <span class="n">DigikamGenericPresentationPlugin</span>
-<a name="line-28"></a><span class="p">{</span>
-<a name="line-29"></a>
-<a name="line-30"></a><span class="n">PresentationContainer</span><span class="o">::</span><span class="n">PresentationContainer</span><span class="p">()</span>
-<a name="line-31"></a><span class="p">{</span>
-<a name="line-32"></a> <span class="n">delayMsMaxValue</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-33"></a> <span class="n">delayMsMinValue</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-34"></a> <span class="n">delayMsLineStep</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-35"></a><span class="hll"> <span class="n">urlList</span> <span class="o">=</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="o">&gt;</span><span class="p">();</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'urlList' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;urlList&apos; a value by passing the value to the constructor in the initialization list.</div></div>
-</span><a name="line-36"></a> <span class="n">mainPage</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-37"></a> <span class="n">captionPage</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-38"></a> <span class="n">advancedPage</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-39"></a>
-<a name="line-40"></a><span class="cp">#ifdef HAVE_MEDIAPLAYER</span>
-<a name="line-41"></a> <span class="n">soundtrackPage</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-42"></a><span class="cp">#endif</span>
-<a name="line-43"></a>
-<a name="line-44"></a> <span class="n">opengl</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-45"></a> <span class="n">openGlFullScale</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-46"></a> <span class="n">delay</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-47"></a> <span class="n">printFileName</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-48"></a> <span class="n">printProgress</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-49"></a> <span class="n">printFileComments</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-50"></a> <span class="n">loop</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-51"></a> <span class="n">shuffle</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-52"></a><span class="hll"> <span class="n">commentsFontColor</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'commentsFontColor' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;commentsFontColor&apos; a value by passing the value to the constructor in the initialization list.</div></div>
-</span><a name="line-53"></a><span class="hll"> <span class="n">commentsBgColor</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'commentsBgColor' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;commentsBgColor&apos; a value by passing the value to the constructor in the initialization list.</div></div>
-</span><a name="line-54"></a> <span class="n">commentsDrawOutline</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-55"></a><span class="hll"> <span class="n">bgOpacity</span> <span class="o">=</span> <span class="mi">10</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'bgOpacity' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;bgOpacity&apos; a value by passing the value to the constructor in the initialization list.</div></div>
-</span><a name="line-56"></a> <span class="n">commentsLinesLength</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-57"></a> <span class="n">captionFont</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-58"></a>
-<a name="line-59"></a> <span class="n">soundtrackLoop</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-60"></a> <span class="n">soundtrackPlay</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-61"></a> <span class="n">soundtrackRememberPlaylist</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-62"></a> <span class="n">soundtrackPlayListNeedsUpdate</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-63"></a>
-<a name="line-64"></a> <span class="n">useMilliseconds</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-65"></a> <span class="n">enableMouseWheel</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-66"></a> <span class="n">enableCache</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-67"></a> <span class="n">kbDisableFadeInOut</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-68"></a> <span class="n">kbDisableCrossFade</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-69"></a><span class="hll"> <span class="n">cacheSize</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'cacheSize' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;cacheSize&apos; a value by passing the value to the constructor in the initialization list.</div></div>
-</span><a name="line-70"></a>
-<a name="line-71"></a> <span class="n">iface</span> <span class="o">=</span> <span class="k">nullptr</span><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="n">PresentationContainer</span><span class="o">::~</span><span class="n">PresentationContainer</span><span class="p">()</span>
-<a name="line-75"></a><span class="p">{</span>
-<a name="line-76"></a> <span class="k">delete</span> <span class="n">captionFont</span><span class="p">;</span>
-<a name="line-77"></a><span class="p">}</span>
+<a name="line-9"></a><span class="cm"> * Copyright (C) 2007-2008 by Markus Leuthold &lt;kusi at forum dot titlis dot org&gt;</span>
+<a name="line-10"></a><span class="cm"> * Copyright (C) 2008-2016 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;glviewerwidget.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;QApplication&gt;</span><span class="cp"></span>
+<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QScreen&gt;</span><span class="cp"></span>
+<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QWindow&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;QList&gt;</span><span class="cp"></span>
+<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QIcon&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;QMimeType&gt;</span><span class="cp"></span>
+<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&lt;QMimeDatabase&gt;</span><span class="cp"></span>
+<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&lt;QStandardPaths&gt;</span><span class="cp"></span>
+<a name="line-38"></a>
+<a name="line-39"></a><span class="c1">// KDE includes</span>
+<a name="line-40"></a>
+<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&gt;</span><span class="cp"></span>
+<a name="line-42"></a>
+<a name="line-43"></a><span class="c1">// Local includes</span>
+<a name="line-44"></a>
+<a name="line-45"></a><span class="cp">#include</span> <span class="cpf">&quot;glviewertimer.h&quot;</span><span class="cp"></span>
+<a name="line-46"></a><span class="cp">#include</span> <span class="cpf">&quot;glviewertexture.h&quot;</span><span class="cp"></span>
+<a name="line-47"></a><span class="cp">#include</span> <span class="cpf">&quot;glviewerhelpdlg.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>
+<a name="line-50"></a><span class="cp">#ifndef GL_TEXTURE_RECTANGLE_ARB</span>
+<a name="line-51"></a><span class="cp"># define GL_TEXTURE_RECTANGLE_ARB 0x84F5</span>
+<a name="line-52"></a><span class="cp">#endif</span>
+<a name="line-53"></a>
+<a name="line-54"></a><span class="cp">#ifndef GL_TEXTURE_RECTANGLE_NV</span>
+<a name="line-55"></a><span class="cp"># define GL_TEXTURE_RECTANGLE_NV 0x84F5</span>
+<a name="line-56"></a><span class="cp">#endif</span>
+<a name="line-57"></a>
+<a name="line-58"></a><span class="k">namespace</span> <span class="n">DigikamGenericGLViewerPlugin</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">GLViewerWidget</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">struct</span> <span class="n">Cache</span>
+<a name="line-66"></a> <span class="p">{</span>
+<a name="line-67"></a> <span class="kt">int</span> <span class="n">file_index</span><span class="p">;</span>
+<a name="line-68"></a> <span class="n">GLViewerTexture</span><span class="o">*</span> <span class="n">texture</span><span class="p">;</span>
+<a name="line-69"></a> <span class="p">};</span>
+<a name="line-70"></a>
+<a name="line-71"></a> <span class="k">enum</span> <span class="n">WheelAction</span>
+<a name="line-72"></a> <span class="p">{</span>
+<a name="line-73"></a> <span class="n">zoomImage</span><span class="p">,</span>
+<a name="line-74"></a> <span class="n">changeImage</span>
+<a name="line-75"></a> <span class="p">};</span>
+<a name="line-76"></a>
+<a name="line-77"></a><span class="k">public</span><span class="o">:</span>
<a name="line-78"></a>
-<a name="line-79"></a><span class="p">}</span> <span class="c1">// namespace DigikamGenericPresentationPlugin</span>
+<a name="line-79"></a> <span class="n">Private</span><span class="p">()</span>
+<a name="line-80"></a> <span class="p">{</span>
+<a name="line-81"></a> <span class="n">texture</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-82"></a> <span class="n">firstImage</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="c1">// index of picture to be displayed</span>
+<a name="line-85"></a> <span class="n">file_idx</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-86"></a>
+<a name="line-87"></a> <span class="c1">// define zoomfactors for one zoom step</span>
+<a name="line-88"></a> <span class="n">zoomfactor_scrollwheel</span> <span class="o">=</span> <span class="mf">1.1F</span><span class="p">;</span>
+<a name="line-89"></a> <span class="n">zoomfactor_mousemove</span> <span class="o">=</span> <span class="mf">1.03F</span><span class="p">;</span>
+<a name="line-90"></a> <span class="n">zoomfactor_keyboard</span> <span class="o">=</span> <span class="mf">1.05F</span><span class="p">;</span>
+<a name="line-91"></a>
+<a name="line-92"></a> <span class="c1">// load cursors for zooming and panning</span>
+<a name="line-93"></a><span class="hll"> <span class="n">zoomCursor</span> <span class="o">=</span> <span class="n">QCursor</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;zoom-in&quot;</span><span class="p">)).</span><span class="n">pixmap</span><span class="p">(</span><span class="mi">64</span><span class="p">));</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'zoomCursor' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;zoomCursor&apos; a value by passing the value to the constructor in the initialization list.</div></div>
+</span><a name="line-94"></a> <span class="n">moveCursor</span> <span class="o">=</span> <span class="n">QCursor</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">PointingHandCursor</span><span class="p">);</span>
+<a name="line-95"></a>
+<a name="line-96"></a> <span class="c1">// get path of nullImage in case QImage can&#39;t load the image</span>
+<a name="line-97"></a> <span class="n">nullImage</span> <span class="o">=</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;image-jpeg&quot;</span><span class="p">)).</span><span class="n">pixmap</span><span class="p">(</span><span class="mi">256</span><span class="p">);</span>
+<a name="line-98"></a>
+<a name="line-99"></a> <span class="c1">// while zooming is performed, the image is downsampled to d-&gt;zoomsize. This seems to</span>
+<a name="line-100"></a> <span class="c1">// be the optimal way for a PentiumM 1.4G, Nvidia FX5200. For a faster setup, this might</span>
+<a name="line-101"></a> <span class="c1">// not be necessary anymore</span>
+<a name="line-102"></a> <span class="n">zoomsize</span> <span class="o">=</span> <span class="n">QSize</span><span class="p">(</span><span class="mi">1024</span><span class="p">,</span> <span class="mi">768</span><span class="p">);</span>
+<a name="line-103"></a>
+<a name="line-104"></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">CACHESIZE</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-105"></a> <span class="p">{</span>
+<a name="line-106"></a> <span class="n">cache</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">file_index</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-107"></a> <span class="n">cache</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">texture</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-108"></a> <span class="p">}</span>
+<a name="line-109"></a>
+<a name="line-110"></a> <span class="n">ratio_view_x</span> <span class="o">=</span> <span class="mf">0.0F</span><span class="p">;</span>
+<a name="line-111"></a> <span class="n">ratio_view_y</span> <span class="o">=</span> <span class="mf">0.0F</span><span class="p">;</span>
+<a name="line-112"></a> <span class="n">delta</span> <span class="o">=</span> <span class="mf">0.0F</span><span class="p">;</span>
+<a name="line-113"></a> <span class="n">vertex_height</span> <span class="o">=</span> <span class="mf">0.0F</span><span class="p">;</span>
+<a name="line-114"></a> <span class="n">vertex_width</span> <span class="o">=</span> <span class="mf">0.0F</span><span class="p">;</span>
+<a name="line-115"></a> <span class="n">vertex_left</span> <span class="o">=</span> <span class="mf">0.0F</span><span class="p">;</span>
+<a name="line-116"></a> <span class="n">vertex_top</span> <span class="o">=</span> <span class="mf">0.0F</span><span class="p">;</span>
+<a name="line-117"></a> <span class="n">vertex_right</span> <span class="o">=</span> <span class="mf">0.0F</span><span class="p">;</span>
+<a name="line-118"></a> <span class="n">vertex_bottom</span> <span class="o">=</span> <span class="mf">0.0F</span><span class="p">;</span>
+<a name="line-119"></a> <span class="n">wheelAction</span> <span class="o">=</span> <span class="n">zoomImage</span><span class="p">;</span>
+<a name="line-120"></a> <span class="n">iface</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-121"></a> <span class="n">plugin</span> <span class="o">=</span> <span class="k">nullptr</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="n">QStringList</span> <span class="n">files</span><span class="p">;</span>
+<a name="line-125"></a> <span class="kt">unsigned</span> <span class="kt">int</span> <span class="n">file_idx</span><span class="p">;</span>
+<a name="line-126"></a> <span class="n">Cache</span> <span class="n">cache</span><span class="p">[</span><span class="n">CACHESIZE</span><span class="p">];</span>
+<a name="line-127"></a> <span class="n">GLViewerTexture</span><span class="o">*</span> <span class="n">texture</span><span class="p">;</span>
+<a name="line-128"></a>
+<a name="line-129"></a> <span class="kt">float</span> <span class="n">ratio_view_y</span><span class="p">;</span>
+<a name="line-130"></a> <span class="kt">float</span> <span class="n">ratio_view_x</span><span class="p">;</span>
+<a name="line-131"></a> <span class="kt">float</span> <span class="n">delta</span><span class="p">;</span>
+<a name="line-132"></a> <span class="kt">float</span> <span class="n">vertex_height</span><span class="p">;</span>
+<a name="line-133"></a> <span class="kt">float</span> <span class="n">vertex_width</span><span class="p">;</span>
+<a name="line-134"></a> <span class="kt">float</span> <span class="n">vertex_left</span><span class="p">;</span>
+<a name="line-135"></a> <span class="kt">float</span> <span class="n">vertex_top</span><span class="p">;</span>
+<a name="line-136"></a> <span class="kt">float</span> <span class="n">vertex_right</span><span class="p">;</span>
+<a name="line-137"></a> <span class="kt">float</span> <span class="n">vertex_bottom</span><span class="p">;</span>
+<a name="line-138"></a>
+<a name="line-139"></a> <span class="n">QPoint</span> <span class="n">startdrag</span><span class="p">,</span> <span class="n">previous_pos</span><span class="p">;</span>
+<a name="line-140"></a> <span class="n">WheelAction</span> <span class="n">wheelAction</span><span class="p">;</span>
+<a name="line-141"></a> <span class="kt">bool</span> <span class="n">firstImage</span><span class="p">;</span>
+<a name="line-142"></a> <span class="n">QSize</span> <span class="n">zoomsize</span><span class="p">;</span>
+<a name="line-143"></a> <span class="n">QTimer</span> <span class="n">timerMouseMove</span><span class="p">;</span>
+<a name="line-144"></a> <span class="n">QCursor</span> <span class="n">moveCursor</span><span class="p">,</span> <span class="n">zoomCursor</span><span class="p">;</span>
+<a name="line-145"></a> <span class="kt">float</span> <span class="n">zoomfactor_scrollwheel</span><span class="p">;</span>
+<a name="line-146"></a> <span class="kt">float</span> <span class="n">zoomfactor_mousemove</span><span class="p">;</span>
+<a name="line-147"></a> <span class="kt">float</span> <span class="n">zoomfactor_keyboard</span><span class="p">;</span>
+<a name="line-148"></a> <span class="n">QPixmap</span> <span class="n">nullImage</span><span class="p">;</span>
+<a name="line-149"></a> <span class="n">QSize</span> <span class="n">screenSize</span><span class="p">;</span>
+<a name="line-150"></a>
+<a name="line-151"></a> <span class="n">DInfoInterface</span><span class="o">*</span> <span class="n">iface</span><span class="p">;</span>
+<a name="line-152"></a> <span class="n">DPlugin</span><span class="o">*</span> <span class="n">plugin</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">GLViewerWidget</span><span class="o">::</span><span class="n">GLViewerWidget</span><span class="p">(</span><span class="n">DPlugin</span><span class="o">*</span> <span class="k">const</span> <span class="n">plugin</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-156"></a> <span class="o">:</span> <span class="n">QOpenGLWidget</span><span class="p">(),</span>
+<a name="line-157"></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-158"></a><span class="p">{</span>
+<a name="line-159"></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>
+<a name="line-160"></a>
+<a name="line-161"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">plugin</span> <span class="o">=</span> <span class="n">plugin</span><span class="p">;</span>
+<a name="line-162"></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-163"></a>
+<a name="line-164"></a> <span class="c1">// Determine screen size for isReallyFullScreen</span>
+<a name="line-165"></a>
+<a name="line-166"></a> <span class="n">QScreen</span><span class="o">*</span> <span class="n">screen</span> <span class="o">=</span> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">primaryScreen</span><span class="p">();</span>
+<a name="line-167"></a>
+<a name="line-168"></a> <span class="k">if</span> <span class="p">(</span><span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">widget</span> <span class="o">=</span> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">activeWindow</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">QWindow</span><span class="o">*</span> <span class="k">const</span> <span class="n">window</span> <span class="o">=</span> <span class="n">widget</span><span class="o">-&gt;</span><span class="n">windowHandle</span><span class="p">())</span>
+<a name="line-171"></a> <span class="p">{</span>
+<a name="line-172"></a> <span class="n">screen</span> <span class="o">=</span> <span class="n">window</span><span class="o">-&gt;</span><span class="n">screen</span><span class="p">();</span>
+<a name="line-173"></a> <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="n">d</span><span class="o">-&gt;</span><span class="n">screenSize</span> <span class="o">=</span> <span class="n">screen</span><span class="o">-&gt;</span><span class="n">size</span><span class="p">();</span>
+<a name="line-177"></a>
+<a name="line-178"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="o">&gt;</span> <span class="n">myfiles</span><span class="p">;</span> <span class="c1">// pics which are displayed in imageviewer</span>
+<a name="line-179"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="o">&gt;</span> <span class="n">selection</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-180"></a> <span class="n">QString</span> <span class="n">selectedImage</span><span class="p">;</span> <span class="c1">// selected pic in hostapp</span>
+<a name="line-181"></a>
+<a name="line-182"></a> <span class="kt">int</span> <span class="n">foundNumber</span> <span class="o">=</span> <span class="mi">0</span><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">selection</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-185"></a> <span class="p">{</span>
+<a name="line-186"></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;no image selected, load entire album&quot;</span><span class="p">;</span>
+<a name="line-187"></a> <span class="n">myfiles</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">currentAlbumItems</span><span class="p">();</span>
+<a name="line-188"></a> <span class="p">}</span>
+<a name="line-189"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">selection</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-190"></a> <span class="p">{</span>
+<a name="line-191"></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;one image selected, load entire album and start with selected image&quot;</span><span class="p">;</span>
+<a name="line-192"></a> <span class="n">selectedImage</span> <span class="o">=</span> <span class="n">selection</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-193"></a> <span class="n">myfiles</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">currentAlbumItems</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">selection</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-196"></a> <span class="p">{</span>
+<a name="line-197"></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;load&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">selection</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;selected images&quot;</span><span class="p">;</span>
+<a name="line-198"></a> <span class="n">myfiles</span> <span class="o">=</span> <span class="n">selection</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="c1">// populate QStringList::d-&gt;files</span>
+<a name="line-202"></a>
+<a name="line-203"></a> <span class="k">for</span> <span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="o">&gt;::</span><span class="n">Iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">myfiles</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">myfiles</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-204"></a> <span class="p">{</span>
+<a name="line-205"></a> <span class="c1">// find selected image in album in order to determine the first displayed image</span>
+<a name="line-206"></a> <span class="c1">// in case one image was selected and the entire album was loaded</span>
+<a name="line-207"></a>
+<a name="line-208"></a> <span class="n">QString</span> <span class="n">s</span> <span class="o">=</span> <span class="n">it</span><span class="o">-&gt;</span><span class="n">toLocalFile</span><span class="p">();</span>
+<a name="line-209"></a>
+<a name="line-210"></a> <span class="k">if</span> <span class="p">(</span><span class="n">s</span> <span class="o">==</span> <span class="n">selectedImage</span><span class="p">)</span>
+<a name="line-211"></a> <span class="p">{</span>
+<a name="line-212"></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;selected img&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">selectedImage</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;has idx=&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">foundNumber</span><span class="p">;</span>
+<a name="line-213"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">file_idx</span> <span class="o">=</span> <span class="n">foundNumber</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="c1">// only add images to d-&gt;files</span>
+<a name="line-217"></a>
+<a name="line-218"></a> <span class="n">QString</span> <span class="n">mimeTypeName</span> <span class="o">=</span> <span class="n">QMimeDatabase</span><span class="p">().</span><span class="n">mimeTypeForUrl</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">s</span><span class="p">)).</span><span class="n">name</span><span class="p">();</span>
+<a name="line-219"></a> <span class="kt">bool</span> <span class="n">isImage</span> <span class="o">=</span> <span class="n">mimeTypeName</span><span class="p">.</span><span class="n">contains</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;image&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">CaseInsensitive</span><span class="p">);</span>
+<a name="line-220"></a>
+<a name="line-221"></a> <span class="k">if</span> <span class="p">(</span><span class="n">isImage</span><span class="p">)</span>
+<a name="line-222"></a> <span class="p">{</span>
+<a name="line-223"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">files</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">s</span><span class="p">);</span>
+<a name="line-224"></a> <span class="n">foundNumber</span><span class="o">++</span><span class="p">;</span> <span class="c1">// counter for searching the start image in case one image is selected</span>
+<a name="line-225"></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">s</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;type=&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">mimeTypeName</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>
+<a name="line-229"></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">d</span><span class="o">-&gt;</span><span class="n">files</span><span class="p">.</span><span class="n">count</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;images loaded&quot;</span><span class="p">;</span>
+<a name="line-230"></a>
+<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">files</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-232"></a> <span class="p">{</span>
+<a name="line-233"></a> <span class="k">return</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="n">showFullScreen</span><span class="p">();</span> <span class="c1">// krazy:exclude=qmethods</span>
+<a name="line-237"></a>
+<a name="line-238"></a> <span class="c1">// let the cursor dissapear after 2sec of inactivity</span>
+<a name="line-239"></a>
+<a name="line-240"></a> <span class="n">connect</span><span class="p">(</span><span class="o">&amp;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">timerMouseMove</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">timeout</span><span class="p">()),</span>
+<a name="line-241"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotTimeoutMouseMove</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">timerMouseMove</span><span class="p">.</span><span class="n">start</span><span class="p">(</span><span class="mi">2000</span><span class="p">);</span>
+<a name="line-244"></a> <span class="n">setMouseTracking</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-245"></a>
+<a name="line-246"></a> <span class="c1">// other initialisations</span>
+<a name="line-247"></a>
+<a name="line-248"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">wheelAction</span> <span class="o">=</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">changeImage</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="n">GLViewerWidget</span><span class="o">::~</span><span class="n">GLViewerWidget</span><span class="p">()</span>
+<a name="line-252"></a><span class="p">{</span>
+<a name="line-253"></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">CACHESIZE</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-254"></a> <span class="p">{</span>
+<a name="line-255"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cache</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">file_index</span> <span class="o">=</span> <span class="n">EMPTY</span><span class="p">;</span>
+<a name="line-256"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cache</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">texture</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="k">delete</span> <span class="n">d</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="cm">/**</span>
+<a name="line-263"></a><span class="cm"> * \todo blending</span>
+<a name="line-264"></a><span class="cm"> */</span>
+<a name="line-265"></a><span class="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">initializeGL</span><span class="p">()</span>
+<a name="line-266"></a><span class="p">{</span>
+<a name="line-267"></a> <span class="n">glEnable</span><span class="p">(</span><span class="n">GL_TEXTURE_RECTANGLE_ARB</span><span class="p">);</span>
+<a name="line-268"></a>
+<a name="line-269"></a> <span class="c1">// Clear The Background Color</span>
+<a name="line-270"></a> <span class="n">glClearColor</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">,</span> <span class="mf">0.0</span><span class="p">,</span> <span class="mf">1.0f</span><span class="p">);</span>
+<a name="line-271"></a>
+<a name="line-272"></a> <span class="c1">// Turn Blending On</span>
+<a name="line-273"></a> <span class="n">glEnable</span><span class="p">(</span><span class="n">GL_BLEND</span><span class="p">);</span>
+<a name="line-274"></a>
+<a name="line-275"></a> <span class="c1">// Blending Function For Translucency Based On Source Alpha Value</span>
+<a name="line-276"></a> <span class="n">glBlendFunc</span><span class="p">(</span><span class="n">GL_SRC_ALPHA</span><span class="p">,</span> <span class="n">GL_ONE_MINUS_SRC_ALPHA</span><span class="p">);</span>
+<a name="line-277"></a>
+<a name="line-278"></a> <span class="c1">// Enable perspective vision</span>
+<a name="line-279"></a> <span class="n">glClearDepth</span><span class="p">(</span><span class="mf">1.0f</span><span class="p">);</span>
+<a name="line-280"></a>
+<a name="line-281"></a> <span class="c1">// initialize cache</span>
+<a name="line-282"></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">CACHESIZE</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-283"></a> <span class="p">{</span>
+<a name="line-284"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cache</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">file_index</span> <span class="o">=</span> <span class="n">EMPTY</span><span class="p">;</span>
+<a name="line-285"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cache</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">texture</span> <span class="o">=</span> <span class="k">new</span> <span class="n">GLViewerTexture</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-286"></a> <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="kt">bool</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">listOfFilesIsEmpty</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-290"></a><span class="p">{</span>
+<a name="line-291"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">files</span><span class="p">.</span><span class="n">isEmpty</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">GLViewerWidget</span><span class="o">::</span><span class="n">paintGL</span><span class="p">()</span>
+<a name="line-295"></a><span class="p">{</span>
+<a name="line-296"></a> <span class="c1">// this test has to be performed here since QWidget::width() is only updated now</span>
+<a name="line-297"></a><span class="cm">/*</span>
+<a name="line-298"></a><span class="cm"> qCDebug(DIGIKAM_DPLUGIN_GENERIC_LOG) &lt;&lt; &quot;enter paintGL: isReallyFullscreen=&quot; &lt;&lt; isReallyFullScreen();</span>
+<a name="line-299"></a><span class="cm">*/</span>
+<a name="line-300"></a> <span class="c1">// prepare 1st image</span>
+<a name="line-301"></a>
+<a name="line-302"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">firstImage</span> <span class="o">&amp;&amp;</span> <span class="n">isReallyFullScreen</span><span class="p">())</span>
+<a name="line-303"></a> <span class="p">{</span>
+<a name="line-304"></a><span class="cm">/*</span>
+<a name="line-305"></a><span class="cm"> qCDebug(DIGIKAM_DPLUGIN_GENERIC_LOG) &lt;&lt; &quot;first image&quot;;</span>
+<a name="line-306"></a><span class="cm">*/</span>
+<a name="line-307"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span> <span class="o">=</span> <span class="n">loadImage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">file_idx</span><span class="p">);</span>
+<a name="line-308"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">reset</span><span class="p">();</span>
+<a name="line-309"></a> <span class="n">downloadTexture</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="p">);</span>
+<a name="line-310"></a><span class="cm">/*</span>
+<a name="line-311"></a><span class="cm"> qCDebug(DIGIKAM_DPLUGIN_GENERIC_LOG) &lt;&lt; &quot;width=&quot; &lt;&lt; width();</span>
+<a name="line-312"></a><span class="cm">*/</span>
+<a name="line-313"></a> <span class="n">glClear</span><span class="p">(</span><span class="n">GL_COLOR_BUFFER_BIT</span> <span class="o">|</span> <span class="n">GL_DEPTH_BUFFER_BIT</span><span class="p">);</span>
+<a name="line-314"></a> <span class="n">glLoadIdentity</span><span class="p">();</span>
+<a name="line-315"></a> <span class="n">glTranslatef</span><span class="p">(</span><span class="mf">0.0f</span><span class="p">,</span> <span class="mf">0.0f</span><span class="p">,</span> <span class="o">-</span><span class="mf">5.0f</span><span class="p">);</span>
+<a name="line-316"></a> <span class="n">drawImage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="p">);</span>
+<a name="line-317"></a>
+<a name="line-318"></a> <span class="c1">// trigger a redraw NOW. the user wants to see a picture as soon as possible</span>
+<a name="line-319"></a> <span class="c1">// only load the second image after the first is displayed</span>
+<a name="line-320"></a>
+<a name="line-321"></a> <span class="n">glFlush</span><span class="p">();</span>
+<a name="line-322"></a>
+<a name="line-323"></a> <span class="c1">// preload the 2nd image</span>
+<a name="line-324"></a>
+<a name="line-325"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">firstImage</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">file_idx</span> <span class="o">&lt;</span> <span class="p">(</span><span class="kt">unsigned</span> <span class="kt">int</span><span class="p">)(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">files</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-328"></a> <span class="p">{</span>
+<a name="line-329"></a> <span class="n">loadImage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">file_idx</span><span class="o">+</span><span class="mi">1</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="n">d</span><span class="o">-&gt;</span><span class="n">firstImage</span><span class="o">=</span><span class="nb">false</span><span class="p">;</span>
+<a name="line-333"></a> <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="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">firstImage</span><span class="p">)</span>
+<a name="line-337"></a> <span class="p">{</span>
+<a name="line-338"></a><span class="cm">/*</span>
+<a name="line-339"></a><span class="cm"> qCDebug(DIGIKAM_DPLUGIN_GENERIC_LOG) &lt;&lt; &quot;width=&quot; &lt;&lt; width();</span>
+<a name="line-340"></a><span class="cm">*/</span>
+<a name="line-341"></a> <span class="n">glClear</span><span class="p">(</span><span class="n">GL_COLOR_BUFFER_BIT</span> <span class="o">|</span> <span class="n">GL_DEPTH_BUFFER_BIT</span><span class="p">);</span>
+<a name="line-342"></a> <span class="n">glLoadIdentity</span><span class="p">();</span>
+<a name="line-343"></a> <span class="n">glTranslatef</span><span class="p">(</span><span class="mf">0.0f</span><span class="p">,</span> <span class="mf">0.0f</span><span class="p">,</span> <span class="o">-</span><span class="mf">5.0f</span><span class="p">);</span>
+<a name="line-344"></a> <span class="n">drawImage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</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"> qCDebug(DIGIKAM_DPLUGIN_GENERIC_LOG) &lt;&lt; &quot;exit paintGL&quot;;</span>
+<a name="line-348"></a><span class="cm">*/</span>
+<a name="line-349"></a><span class="p">}</span>
+<a name="line-350"></a>
+<a name="line-351"></a><span class="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">resizeGL</span><span class="p">(</span><span class="kt">int</span> <span class="n">w</span><span class="p">,</span> <span class="kt">int</span> <span class="n">h</span><span class="p">)</span>
+<a name="line-352"></a><span class="p">{</span>
+<a name="line-353"></a><span class="cm">/*</span>
+<a name="line-354"></a><span class="cm"> qCDebug(DIGIKAM_DPLUGIN_GENERIC_LOG) &lt;&lt; &quot;resizeGL,w=&quot; &lt;&lt; w;</span>
+<a name="line-355"></a><span class="cm">*/</span>
+<a name="line-356"></a> <span class="n">glViewport</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="p">(</span><span class="n">GLint</span><span class="p">)</span><span class="n">w</span><span class="p">,</span> <span class="p">(</span><span class="n">GLint</span><span class="p">)</span><span class="n">h</span><span class="p">);</span>
+<a name="line-357"></a> <span class="n">glMatrixMode</span><span class="p">(</span><span class="n">GL_PROJECTION</span><span class="p">);</span>
+<a name="line-358"></a> <span class="n">glLoadIdentity</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">h</span> <span class="o">&gt;</span> <span class="n">w</span><span class="p">)</span>
+<a name="line-361"></a> <span class="p">{</span>
+<a name="line-362"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">ratio_view_x</span> <span class="o">=</span> <span class="mf">1.0</span><span class="p">;</span>
+<a name="line-363"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">ratio_view_y</span> <span class="o">=</span> <span class="n">h</span> <span class="o">/</span> <span class="kt">float</span><span class="p">(</span><span class="n">w</span><span class="p">);</span>
+<a name="line-364"></a> <span class="p">}</span>
+<a name="line-365"></a> <span class="k">else</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">ratio_view_x</span> <span class="o">=</span> <span class="n">w</span> <span class="o">/</span> <span class="kt">float</span><span class="p">(</span><span class="n">h</span><span class="p">);</span>
+<a name="line-368"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">ratio_view_y</span> <span class="o">=</span> <span class="mf">1.0</span><span class="p">;</span>
+<a name="line-369"></a> <span class="p">}</span>
+<a name="line-370"></a>
+<a name="line-371"></a> <span class="n">glFrustum</span><span class="p">(</span><span class="o">-</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">ratio_view_x</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">ratio_view_x</span><span class="p">,</span> <span class="o">-</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">ratio_view_y</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">ratio_view_y</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mf">5000.0</span><span class="p">);</span>
+<a name="line-372"></a> <span class="n">glMatrixMode</span><span class="p">(</span><span class="n">GL_MODELVIEW</span><span class="p">);</span>
+<a name="line-373"></a> <span class="n">glLoadIdentity</span><span class="p">();</span>
+<a name="line-374"></a>
+<a name="line-375"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span> <span class="o">==</span> <span class="k">nullptr</span><span class="p">)</span>
+<a name="line-376"></a> <span class="p">{</span>
+<a name="line-377"></a> <span class="k">return</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="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">firstImage</span><span class="p">)</span>
+<a name="line-381"></a> <span class="p">{</span>
+<a name="line-382"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">setViewport</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-383"></a> <span class="p">}</span>
+<a name="line-384"></a><span class="p">}</span>
+<a name="line-385"></a>
+<a name="line-386"></a><span class="cm">/**</span>
+<a name="line-387"></a><span class="cm"> * render the image</span>
+<a name="line-388"></a><span class="cm"> */</span>
+<a name="line-389"></a><span class="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">drawImage</span><span class="p">(</span><span class="n">GLViewerTexture</span><span class="o">*</span> <span class="k">const</span> <span class="n">tex</span><span class="p">)</span>
+<a name="line-390"></a><span class="p">{</span>
+<a name="line-391"></a> <span class="c1">// qCDebug(DIGIKAM_DPLUGIN_GENERIC_LOG) &lt;&lt; &quot;enter drawImage: target=&quot; &lt;&lt; d-&gt;texture-&gt;textureId()</span>
+<a name="line-392"></a> <span class="c1">// &lt;&lt; &quot;dim=&quot; &lt;&lt; d-&gt;texture-&gt;height() &lt;&lt; d-&gt;texture-&gt;width();</span>
+<a name="line-393"></a> <span class="n">glBindTexture</span><span class="p">(</span><span class="n">GL_TEXTURE_RECTANGLE_NV</span><span class="p">,</span> <span class="n">tex</span><span class="o">-&gt;</span><span class="n">textureId</span><span class="p">());</span>
+<a name="line-394"></a> <span class="n">glBegin</span><span class="p">(</span><span class="n">GL_QUADS</span><span class="p">);</span>
+<a name="line-395"></a> <span class="n">glTexCoord2f</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-396"></a> <span class="n">glVertex3f</span><span class="p">(</span><span class="n">tex</span><span class="o">-&gt;</span><span class="n">vertex_left</span><span class="p">(),</span> <span class="n">tex</span><span class="o">-&gt;</span><span class="n">vertex_bottom</span><span class="p">(),</span> <span class="mi">0</span><span class="p">);</span>
+<a name="line-397"></a>
+<a name="line-398"></a> <span class="n">glTexCoord2f</span><span class="p">(</span><span class="n">tex</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">(),</span> <span class="mi">0</span><span class="p">);</span>
+<a name="line-399"></a> <span class="n">glVertex3f</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">vertex_right</span><span class="p">(),</span> <span class="n">tex</span><span class="o">-&gt;</span><span class="n">vertex_bottom</span><span class="p">(),</span> <span class="mi">0</span><span class="p">);</span>
+<a name="line-400"></a>
+<a name="line-401"></a> <span class="n">glTexCoord2f</span><span class="p">(</span><span class="n">tex</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">(),</span> <span class="n">tex</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">());</span>
+<a name="line-402"></a> <span class="n">glVertex3f</span><span class="p">(</span><span class="n">tex</span><span class="o">-&gt;</span><span class="n">vertex_right</span><span class="p">(),</span> <span class="n">tex</span><span class="o">-&gt;</span><span class="n">vertex_top</span><span class="p">(),</span> <span class="mi">0</span><span class="p">);</span>
+<a name="line-403"></a>
+<a name="line-404"></a> <span class="n">glTexCoord2f</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">tex</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">());</span>
+<a name="line-405"></a> <span class="n">glVertex3f</span><span class="p">(</span><span class="n">tex</span><span class="o">-&gt;</span><span class="n">vertex_left</span><span class="p">(),</span> <span class="n">tex</span><span class="o">-&gt;</span><span class="n">vertex_top</span><span class="p">(),</span> <span class="mi">0</span><span class="p">);</span>
+<a name="line-406"></a> <span class="n">glEnd</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"> * Handle all keyboard events. All events which are not handled trigger</span>
+<a name="line-411"></a><span class="cm"> * a help window.</span>
+<a name="line-412"></a><span class="cm"> */</span>
+<a name="line-413"></a><span class="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">keyPressEvent</span><span class="p">(</span><span class="n">QKeyEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">)</span>
+<a name="line-414"></a><span class="p">{</span>
+<a name="line-415"></a> <span class="n">QPoint</span> <span class="n">middlepoint</span><span class="p">;</span>
+<a name="line-416"></a>
+<a name="line-417"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">key</span><span class="p">())</span>
+<a name="line-418"></a> <span class="p">{</span>
+<a name="line-419"></a> <span class="c1">// next image</span>
+<a name="line-420"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_N</span><span class="p">:</span>
+<a name="line-421"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_Right</span><span class="p">:</span>
+<a name="line-422"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_Down</span><span class="p">:</span>
+<a name="line-423"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_PageDown</span><span class="p">:</span>
+<a name="line-424"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_Space</span><span class="p">:</span>
+<a name="line-425"></a> <span class="n">nextImage</span><span class="p">();</span>
+<a name="line-426"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-427"></a>
+<a name="line-428"></a> <span class="c1">// previous image</span>
+<a name="line-429"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_P</span><span class="p">:</span>
+<a name="line-430"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_Left</span><span class="p">:</span>
+<a name="line-431"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_Up</span><span class="p">:</span>
+<a name="line-432"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_PageUp</span><span class="p">:</span>
+<a name="line-433"></a> <span class="n">prevImage</span><span class="p">();</span>
+<a name="line-434"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-435"></a>
+<a name="line-436"></a> <span class="c1">// rotate image</span>
+<a name="line-437"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_R</span><span class="p">:</span>
+<a name="line-438"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">rotate</span><span class="p">();</span>
+<a name="line-439"></a> <span class="n">downloadTexture</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="p">);</span>
+<a name="line-440"></a> <span class="n">update</span><span class="p">();</span>
+<a name="line-441"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-442"></a>
+<a name="line-443"></a> <span class="c1">// terminate image viewer</span>
+<a name="line-444"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_Escape</span><span class="p">:</span>
+<a name="line-445"></a> <span class="c1">// clean up: where does this have to be done?</span>
+<a name="line-446"></a> <span class="n">close</span><span class="p">();</span>
+<a name="line-447"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-448"></a>
+<a name="line-449"></a> <span class="c1">// full screen</span>
+<a name="line-450"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_F</span><span class="p">:</span>
+<a name="line-451"></a> <span class="c1">// according to QT documentation, showFullScreen() has some</span>
+<a name="line-452"></a> <span class="c1">// serious issues on window managers that do not follow modern</span>
+<a name="line-453"></a> <span class="c1">// post-ICCCM specifications</span>
+<a name="line-454"></a> <span class="k">if</span> <span class="p">(</span><span class="n">isFullScreen</span><span class="p">())</span>
+<a name="line-455"></a> <span class="p">{</span>
+<a name="line-456"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">reset</span><span class="p">();</span>
+<a name="line-457"></a> <span class="n">showNormal</span><span class="p">();</span> <span class="c1">// krazy:exclude=qmethods</span>
+<a name="line-458"></a> <span class="p">}</span>
+<a name="line-459"></a> <span class="k">else</span>
+<a name="line-460"></a> <span class="p">{</span>
+<a name="line-461"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">reset</span><span class="p">();</span>
+<a name="line-462"></a> <span class="n">showFullScreen</span><span class="p">();</span> <span class="c1">// krazy:exclude=qmethods</span>
+<a name="line-463"></a> <span class="p">}</span>
+<a name="line-464"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-465"></a>
+<a name="line-466"></a> <span class="c1">// reset size and redraw</span>
+<a name="line-467"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_Z</span><span class="p">:</span>
+<a name="line-468"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">reset</span><span class="p">();</span>
+<a name="line-469"></a> <span class="n">update</span><span class="p">();</span>
+<a name="line-470"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-471"></a>
+<a name="line-472"></a> <span class="c1">// toggle permanent between &quot;show next image&quot; and &quot;zoom&quot; on mousewheel change</span>
+<a name="line-473"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_C</span><span class="p">:</span>
+<a name="line-474"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">wheelAction</span> <span class="o">==</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">zoomImage</span><span class="p">)</span>
+<a name="line-475"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">wheelAction</span> <span class="o">=</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">changeImage</span><span class="p">;</span>
+<a name="line-476"></a> <span class="k">else</span>
+<a name="line-477"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">wheelAction</span> <span class="o">=</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">zoomImage</span><span class="p">;</span>
+<a name="line-478"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-479"></a>
+<a name="line-480"></a> <span class="c1">// zoom in</span>
+<a name="line-481"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_Plus</span><span class="p">:</span>
+<a name="line-482"></a> <span class="n">middlepoint</span> <span class="o">=</span> <span class="n">QPoint</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">height</span><span class="p">()</span> <span class="o">/</span> <span class="mi">2</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">texture</span><span class="o">-&gt;</span><span class="n">setNewSize</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">zoomsize</span><span class="p">))</span>
+<a name="line-485"></a> <span class="n">downloadTexture</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="p">);</span> <span class="c1">//load full resolution image</span>
+<a name="line-486"></a>
+<a name="line-487"></a> <span class="n">zoom</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">middlepoint</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">zoomfactor_keyboard</span><span class="p">);</span>
+<a name="line-488"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-489"></a>
+<a name="line-490"></a> <span class="c1">// zoom out</span>
+<a name="line-491"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_Minus</span><span class="p">:</span>
+<a name="line-492"></a> <span class="n">middlepoint</span> <span class="o">=</span> <span class="n">QPoint</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">height</span><span class="p">()</span> <span class="o">/</span> <span class="mi">2</span><span class="p">);</span>
+<a name="line-493"></a>
+<a name="line-494"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">setNewSize</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">zoomsize</span><span class="p">))</span>
+<a name="line-495"></a> <span class="p">{</span>
+<a name="line-496"></a> <span class="n">downloadTexture</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="p">);</span> <span class="c1">//load full resolution image</span>
+<a name="line-497"></a> <span class="p">}</span>
+<a name="line-498"></a>
+<a name="line-499"></a> <span class="n">zoom</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">middlepoint</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">zoomfactor_keyboard</span><span class="p">);</span>
+<a name="line-500"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-501"></a>
+<a name="line-502"></a> <span class="c1">// zoom to original size</span>
+<a name="line-503"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_O</span><span class="p">:</span>
+<a name="line-504"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">loadFullSize</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">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">setNewSize</span><span class="p">(</span><span class="n">QSize</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-507"></a> <span class="p">{</span>
+<a name="line-508"></a> <span class="n">downloadTexture</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="p">);</span> <span class="c1">//load full resolution image</span>
+<a name="line-509"></a> <span class="p">}</span>
+<a name="line-510"></a>
+<a name="line-511"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">zoomToOriginal</span><span class="p">();</span>
+<a name="line-512"></a> <span class="n">update</span><span class="p">();</span>
+<a name="line-513"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-514"></a>
+<a name="line-515"></a> <span class="c1">// toggle temorarily between &quot;show next image&quot; and &quot;zoom&quot; on mousewheel change</span>
+<a name="line-516"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_Control</span><span class="p">:</span>
+<a name="line-517"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">wheelAction</span> <span class="o">==</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">zoomImage</span><span class="p">)</span>
+<a name="line-518"></a> <span class="p">{</span>
+<a name="line-519"></a> <span class="c1">//scrollwheel changes to the next image</span>
+<a name="line-520"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">wheelAction</span> <span class="o">=</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">changeImage</span><span class="p">;</span>
+<a name="line-521"></a> <span class="p">}</span>
+<a name="line-522"></a> <span class="k">else</span>
+<a name="line-523"></a> <span class="p">{</span>
+<a name="line-524"></a> <span class="c1">//scrollwheel does zoom</span>
+<a name="line-525"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">wheelAction</span> <span class="o">=</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">zoomImage</span><span class="p">;</span>
+<a name="line-526"></a> <span class="n">setCursor</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">zoomCursor</span><span class="p">);</span>
+<a name="line-527"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timerMouseMove</span><span class="p">.</span><span class="n">stop</span><span class="p">();</span>
+<a name="line-528"></a> <span class="p">}</span>
+<a name="line-529"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-530"></a>
+<a name="line-531"></a> <span class="c1">//do noting, don&#39;t trigger the help dialog</span>
+<a name="line-532"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_Shift</span><span class="p">:</span>
+<a name="line-533"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-534"></a>
+<a name="line-535"></a> <span class="c1">//key is not bound to any action, therefore show help dialog to enlighten the user</span>
+<a name="line-536"></a> <span class="k">default</span><span class="o">:</span>
+<a name="line-537"></a> <span class="n">QPointer</span><span class="o">&lt;</span><span class="n">GLViewerHelpDlg</span><span class="o">&gt;</span> <span class="n">help</span> <span class="o">=</span> <span class="k">new</span> <span class="n">GLViewerHelpDlg</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">plugin</span><span class="p">);</span>
+<a name="line-538"></a> <span class="n">help</span><span class="o">-&gt;</span><span class="n">exec</span><span class="p">();</span>
+<a name="line-539"></a> <span class="k">break</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>
+<a name="line-543"></a><span class="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">keyReleaseEvent</span><span class="p">(</span><span class="n">QKeyEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">)</span>
+<a name="line-544"></a><span class="p">{</span>
+<a name="line-545"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">key</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="n">Qt</span><span class="o">::</span><span class="nl">Key_Plus</span><span class="p">:</span>
+<a name="line-548"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_Minus</span><span class="p">:</span>
+<a name="line-549"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">isAutoRepeat</span><span class="p">())</span>
+<a name="line-550"></a> <span class="p">{</span>
+<a name="line-551"></a> <span class="n">unsetCursor</span><span class="p">();</span>
+<a name="line-552"></a>
+<a name="line-553"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">setNewSize</span><span class="p">(</span><span class="n">QSize</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-554"></a> <span class="p">{</span>
+<a name="line-555"></a> <span class="n">downloadTexture</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="p">);</span> <span class="c1">//load full resolution image</span>
+<a name="line-556"></a> <span class="p">}</span>
+<a name="line-557"></a>
+<a name="line-558"></a> <span class="n">update</span><span class="p">();</span>
+<a name="line-559"></a> <span class="p">}</span>
+<a name="line-560"></a> <span class="k">else</span>
+<a name="line-561"></a> <span class="p">{</span>
+<a name="line-562"></a> <span class="n">e</span><span class="o">-&gt;</span><span class="n">ignore</span><span class="p">();</span>
+<a name="line-563"></a> <span class="p">}</span>
+<a name="line-564"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-565"></a>
+<a name="line-566"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">Key_Control</span><span class="p">:</span>
+<a name="line-567"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">wheelAction</span> <span class="o">==</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">zoomImage</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">wheelAction</span> <span class="o">=</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">changeImage</span><span class="p">;</span>
+<a name="line-570"></a> <span class="p">}</span>
+<a name="line-571"></a> <span class="k">else</span>
+<a name="line-572"></a> <span class="p">{</span>
+<a name="line-573"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">wheelAction</span> <span class="o">=</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">zoomImage</span><span class="p">;</span>
+<a name="line-574"></a> <span class="n">unsetCursor</span><span class="p">();</span>
+<a name="line-575"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timerMouseMove</span><span class="p">.</span><span class="n">start</span><span class="p">(</span><span class="mi">2000</span><span class="p">);</span>
+<a name="line-576"></a> <span class="p">}</span>
+<a name="line-577"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-578"></a>
+<a name="line-579"></a> <span class="k">default</span><span class="o">:</span>
+<a name="line-580"></a> <span class="n">e</span><span class="o">-&gt;</span><span class="n">ignore</span><span class="p">();</span>
+<a name="line-581"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-582"></a> <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="cm">/**</span>
+<a name="line-586"></a><span class="cm"> * download texture to video memory</span>
+<a name="line-587"></a><span class="cm"> */</span>
+<a name="line-588"></a><span class="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">downloadTexture</span><span class="p">(</span><span class="n">GLViewerTexture</span><span class="o">*</span> <span class="k">const</span> <span class="n">tex</span><span class="p">)</span>
+<a name="line-589"></a><span class="p">{</span>
+<a name="line-590"></a> <span class="n">glBindTexture</span><span class="p">(</span><span class="n">GL_TEXTURE_RECTANGLE_NV</span><span class="p">,</span> <span class="n">tex</span><span class="o">-&gt;</span><span class="n">textureId</span><span class="p">());</span>
+<a name="line-591"></a> <span class="c1">// glTexParameterf(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER_ARB);</span>
+<a name="line-592"></a> <span class="c1">// glTexParameterf(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER_ARB);</span>
+<a name="line-593"></a>
+<a name="line-594"></a> <span class="c1">// uncomment the following line to enable flat shading of texels -&gt; debugging</span>
+<a name="line-595"></a> <span class="c1">// glTexParameterf(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MAG_FILTER,GL_NEAREST);</span>
+<a name="line-596"></a>
+<a name="line-597"></a> <span class="c1">// glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0, GL_RGBA, tex-&gt;width(), tex-&gt;height(), 0,</span>
+<a name="line-598"></a> <span class="c1">// GL_RGBA, GL_UNSIGNED_BYTE, tex-&gt;data());</span>
+<a name="line-599"></a><span class="p">}</span>
+<a name="line-600"></a>
+<a name="line-601"></a><span class="cm">/**</span>
+<a name="line-602"></a><span class="cm"> * load d-&gt;files[file_index] into a texture object if it is not already cached</span>
+<a name="line-603"></a><span class="cm"> * \param file_index index to QStringList d-&gt;files</span>
+<a name="line-604"></a><span class="cm"> */</span>
+<a name="line-605"></a><span class="n">GLViewerTexture</span><span class="o">*</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">loadImage</span><span class="p">(</span><span class="kt">int</span> <span class="n">file_index</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-606"></a><span class="p">{</span>
+<a name="line-607"></a> <span class="kt">int</span> <span class="n">imod</span> <span class="o">=</span> <span class="n">file_index</span> <span class="o">%</span> <span class="n">CACHESIZE</span><span class="p">;</span> <span class="c1">//index for cache</span>
+<a name="line-608"></a>
+<a name="line-609"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cache</span><span class="p">[</span><span class="n">imod</span><span class="p">].</span><span class="n">file_index</span> <span class="o">==</span> <span class="n">file_index</span><span class="p">)</span>
+<a name="line-610"></a> <span class="p">{</span>
+<a name="line-611"></a> <span class="c1">// image is already cached</span>
+<a name="line-612"></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;image&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">file_index</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;is already in cache@&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">imod</span><span class="p">;</span>
+<a name="line-613"></a>
+<a name="line-614"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cache</span><span class="p">[</span><span class="n">imod</span><span class="p">].</span><span class="n">texture</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="c1">// image is net yet loaded</span>
+<a name="line-619"></a> <span class="n">QString</span> <span class="n">f</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">files</span><span class="p">[</span><span class="n">file_index</span><span class="p">];</span>
+<a name="line-620"></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;loading image&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">f</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;(idx=&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">file_index</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;) to cache@&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">imod</span><span class="p">;</span>
+<a name="line-621"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cache</span><span class="p">[</span><span class="n">imod</span><span class="p">].</span><span class="n">file_index</span> <span class="o">=</span> <span class="n">file_index</span><span class="p">;</span>
+<a name="line-622"></a>
+<a name="line-623"></a> <span class="c1">//when loadImage is called the first time, the frame is not yet fullscreen</span>
+<a name="line-624"></a> <span class="n">QSize</span> <span class="n">size</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">d</span><span class="o">-&gt;</span><span class="n">firstImage</span><span class="p">)</span>
+<a name="line-627"></a> <span class="p">{</span>
+<a name="line-628"></a> <span class="c1">//determine screensize since its not yet known by the widget</span>
+<a name="line-629"></a> <span class="n">size</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">screenSize</span><span class="p">;</span>
+<a name="line-630"></a> <span class="c1">//qCDebug(DIGIKAM_DPLUGIN_GENERIC_LOG) &lt;&lt; &quot;first image:size=&quot; &lt;&lt; size.width();</span>
+<a name="line-631"></a> <span class="p">}</span>
+<a name="line-632"></a> <span class="k">else</span>
+<a name="line-633"></a> <span class="p">{</span>
+<a name="line-634"></a> <span class="n">size</span> <span class="o">=</span> <span class="n">QSize</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-635"></a> <span class="c1">//qCDebug(DIGIKAM_DPLUGIN_GENERIC_LOG) &lt;&lt; &quot;next image:size=&quot; &lt;&lt; size.width();</span>
+<a name="line-636"></a> <span class="p">}</span>
+<a name="line-637"></a>
+<a name="line-638"></a> <span class="c1">// handle non-loadable images</span>
+<a name="line-639"></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">cache</span><span class="p">[</span><span class="n">imod</span><span class="p">].</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">load</span><span class="p">(</span><span class="n">f</span><span class="p">,</span> <span class="n">size</span><span class="p">))</span>
+<a name="line-640"></a> <span class="p">{</span>
+<a name="line-641"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cache</span><span class="p">[</span><span class="n">imod</span><span class="p">].</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">load</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">nullImage</span><span class="p">.</span><span class="n">toImage</span><span class="p">(),</span> <span class="n">size</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="n">d</span><span class="o">-&gt;</span><span class="n">cache</span><span class="p">[</span><span class="n">imod</span><span class="p">].</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">setViewport</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="n">size</span><span class="p">.</span><span class="n">height</span><span class="p">());</span>
+<a name="line-645"></a>
+<a name="line-646"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cache</span><span class="p">[</span><span class="n">imod</span><span class="p">].</span><span class="n">texture</span><span class="p">;</span>
+<a name="line-647"></a> <span class="p">}</span>
+<a name="line-648"></a><span class="p">}</span>
+<a name="line-649"></a>
+<a name="line-650"></a><span class="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">wheelEvent</span><span class="p">(</span><span class="n">QWheelEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">)</span>
+<a name="line-651"></a><span class="p">{</span>
+<a name="line-652"></a> <span class="k">switch</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">wheelAction</span><span class="p">)</span>
+<a name="line-653"></a> <span class="p">{</span>
+<a name="line-654"></a> <span class="c1">// mousewheel triggers zoom</span>
+<a name="line-655"></a> <span class="k">case</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="nl">zoomImage</span><span class="p">:</span>
+<a name="line-656"></a> <span class="n">setCursor</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">zoomCursor</span><span class="p">);</span>
+<a name="line-657"></a> <span class="n">zoom</span><span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">delta</span><span class="p">(),</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">pos</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">zoomfactor_scrollwheel</span><span class="p">);</span>
+<a name="line-658"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-659"></a>
+<a name="line-660"></a> <span class="c1">// mousewheel triggers image change</span>
+<a name="line-661"></a> <span class="k">case</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="nl">changeImage</span><span class="p">:</span>
+<a name="line-662"></a> <span class="k">if</span> <span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">delta</span><span class="p">()</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+<a name="line-663"></a> <span class="n">nextImage</span><span class="p">();</span>
+<a name="line-664"></a> <span class="k">else</span>
+<a name="line-665"></a> <span class="nf">prevImage</span><span class="p">();</span>
+<a name="line-666"></a> <span class="k">break</span><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="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">mousePressEvent</span><span class="p">(</span><span class="n">QMouseEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">)</span>
+<a name="line-671"></a><span class="p">{</span>
+<a name="line-672"></a> <span class="c1">// begin zoom</span>
+<a name="line-673"></a> <span class="c1">// scale down d-&gt;texture for fast zooming</span>
+<a name="line-674"></a> <span class="c1">// d-&gt;texture will be set to original size on mouse up</span>
+<a name="line-675"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">setNewSize</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">zoomsize</span><span class="p">))</span>
+<a name="line-676"></a> <span class="p">{</span>
+<a name="line-677"></a> <span class="c1">//load downsampled image</span>
+<a name="line-678"></a> <span class="n">downloadTexture</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</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="n">d</span><span class="o">-&gt;</span><span class="n">timerMouseMove</span><span class="p">.</span><span class="n">stop</span><span class="p">();</span> <span class="c1">//user is something up to, therefore keep the cursor</span>
+<a name="line-682"></a>
+<a name="line-683"></a> <span class="k">if</span> <span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">button</span><span class="p">()</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">LeftButton</span><span class="p">)</span>
+<a name="line-684"></a> <span class="p">{</span>
+<a name="line-685"></a> <span class="n">setCursor</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">moveCursor</span><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="k">if</span> <span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">button</span><span class="p">()</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">RightButton</span><span class="p">)</span>
+<a name="line-689"></a> <span class="p">{</span>
+<a name="line-690"></a> <span class="n">setCursor</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">zoomCursor</span><span class="p">);</span>
+<a name="line-691"></a> <span class="p">}</span>
+<a name="line-692"></a>
+<a name="line-693"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">startdrag</span> <span class="o">=</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">pos</span><span class="p">();</span>
+<a name="line-694"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">previous_pos</span> <span class="o">=</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">pos</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="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">mouseMoveEvent</span><span class="p">(</span><span class="n">QMouseEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">)</span>
+<a name="line-698"></a><span class="p">{</span>
+<a name="line-699"></a> <span class="k">if</span> <span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">buttons</span><span class="p">()</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">LeftButton</span><span class="p">)</span>
+<a name="line-700"></a> <span class="p">{</span>
+<a name="line-701"></a> <span class="c1">//panning</span>
+<a name="line-702"></a> <span class="n">setCursor</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">moveCursor</span><span class="p">);</span>
+<a name="line-703"></a> <span class="n">QPoint</span> <span class="n">diff</span> <span class="o">=</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">pos</span><span class="p">()</span><span class="o">-</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">startdrag</span><span class="p">;</span>
+<a name="line-704"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">move</span><span class="p">(</span><span class="n">diff</span><span class="p">);</span>
+<a name="line-705"></a> <span class="n">update</span><span class="p">();</span>
+<a name="line-706"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">startdrag</span> <span class="o">=</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">pos</span><span class="p">();</span>
+<a name="line-707"></a> <span class="p">}</span>
+<a name="line-708"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">buttons</span><span class="p">()</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">RightButton</span><span class="p">)</span>
+<a name="line-709"></a> <span class="p">{</span>
+<a name="line-710"></a> <span class="kt">int</span> <span class="n">mdelta</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-711"></a>
+<a name="line-712"></a> <span class="c1">//zooming</span>
+<a name="line-713"></a> <span class="c1">//</span>
+<a name="line-714"></a> <span class="c1">//if mouse pointer reached upper or lower boder, special treatment in order</span>
+<a name="line-715"></a> <span class="c1">//to keep zooming enabled in that special case</span>
+<a name="line-716"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">previous_pos</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">==</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">y</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">e</span><span class="o">-&gt;</span><span class="n">y</span><span class="p">()</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
+<a name="line-719"></a> <span class="p">{</span>
+<a name="line-720"></a> <span class="c1">// mouse pointer is at upper edge, therefore assume zoom in</span>
+<a name="line-721"></a> <span class="n">mdelta</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+<a name="line-722"></a> <span class="p">}</span>
+<a name="line-723"></a> <span class="k">else</span>
+<a name="line-724"></a> <span class="p">{</span>
+<a name="line-725"></a> <span class="c1">// mouse pointer is as lower edge, therefore assume zoom out</span>
+<a name="line-726"></a> <span class="n">mdelta</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+<a name="line-727"></a> <span class="p">}</span>
+<a name="line-728"></a> <span class="p">}</span>
+<a name="line-729"></a> <span class="k">else</span>
+<a name="line-730"></a> <span class="p">{</span>
+<a name="line-731"></a> <span class="c1">// mouse pointer is in the middle of the screen, normal operation</span>
+<a name="line-732"></a> <span class="n">mdelta</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">previous_pos</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">-</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">y</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">setCursor</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">zoomCursor</span><span class="p">);</span>
+<a name="line-736"></a> <span class="n">zoom</span><span class="p">(</span><span class="n">mdelta</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">startdrag</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">zoomfactor_mousemove</span><span class="p">);</span>
+<a name="line-737"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">previous_pos</span> <span class="o">=</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">pos</span><span class="p">();</span>
+<a name="line-738"></a> <span class="p">}</span>
+<a name="line-739"></a> <span class="k">else</span>
+<a name="line-740"></a> <span class="p">{</span>
+<a name="line-741"></a> <span class="c1">//no key is pressed while moving mouse</span>
+<a name="line-742"></a> <span class="c1">//don&#39;t do anything if ctrl is pressed</span>
+<a name="line-743"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">timerMouseMove</span><span class="p">.</span><span class="n">isActive</span><span class="p">())</span>
+<a name="line-744"></a> <span class="p">{</span>
+<a name="line-745"></a> <span class="c1">//ctrl is not pressed, no zooming, therefore restore and hide cursor in 2 sec</span>
+<a name="line-746"></a> <span class="n">unsetCursor</span><span class="p">();</span>
+<a name="line-747"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timerMouseMove</span><span class="p">.</span><span class="n">start</span><span class="p">(</span><span class="mi">2000</span><span class="p">);</span>
+<a name="line-748"></a> <span class="p">}</span>
+<a name="line-749"></a> <span class="p">}</span>
+<a name="line-750"></a>
+<a name="line-751"></a> <span class="k">return</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">GLViewerWidget</span><span class="o">::</span><span class="n">mouseReleaseEvent</span><span class="p">(</span><span class="n">QMouseEvent</span><span class="o">*</span><span class="p">)</span>
+<a name="line-755"></a><span class="p">{</span>
+<a name="line-756"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">timerMouseMove</span><span class="p">.</span><span class="n">start</span><span class="p">(</span><span class="mi">2000</span><span class="p">);</span>
+<a name="line-757"></a> <span class="n">unsetCursor</span><span class="p">();</span>
+<a name="line-758"></a>
+<a name="line-759"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">setNewSize</span><span class="p">(</span><span class="n">QSize</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-760"></a> <span class="p">{</span>
+<a name="line-761"></a> <span class="c1">//load full resolution image</span>
+<a name="line-762"></a> <span class="n">downloadTexture</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</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">update</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="cm">/**</span>
+<a name="line-769"></a><span class="cm"> * a double click resets the view (zoom and move)</span>
+<a name="line-770"></a><span class="cm"> */</span>
+<a name="line-771"></a><span class="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">mouseDoubleClickEvent</span><span class="p">(</span><span class="n">QMouseEvent</span><span class="o">*</span><span class="p">)</span>
+<a name="line-772"></a><span class="p">{</span>
+<a name="line-773"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">reset</span><span class="p">();</span>
+<a name="line-774"></a> <span class="n">update</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="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">prevImage</span><span class="p">()</span>
+<a name="line-778"></a><span class="p">{</span>
+<a name="line-779"></a><span class="cp">#ifdef PERFORMANCE_ANALYSIS</span>
+<a name="line-780"></a> <span class="n">GLViewerTimer</span> <span class="n">timer</span><span class="p">;</span>
+<a name="line-781"></a><span class="cp">#endif</span>
+<a name="line-782"></a>
+<a name="line-783"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">file_idx</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
+<a name="line-784"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">file_idx</span><span class="o">--</span><span class="p">;</span>
+<a name="line-785"></a> <span class="k">else</span>
+<a name="line-786"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-787"></a>
+<a name="line-788"></a><span class="cp">#ifdef PERFORMANCE_ANALYSIS</span>
+<a name="line-789"></a> <span class="n">timer</span><span class="p">.</span><span class="n">start</span><span class="p">();</span>
+<a name="line-790"></a><span class="cp">#endif</span>
+<a name="line-791"></a>
+<a name="line-792"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span> <span class="o">=</span> <span class="n">loadImage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">file_idx</span><span class="p">);</span>
+<a name="line-793"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">reset</span><span class="p">();</span>
+<a name="line-794"></a>
+<a name="line-795"></a><span class="cp">#ifdef PERFORMANCE_ANALYSIS</span>
+<a name="line-796"></a> <span class="n">timer</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="s">&quot;loadImage&quot;</span><span class="p">);</span>
+<a name="line-797"></a><span class="cp">#endif</span>
+<a name="line-798"></a>
+<a name="line-799"></a> <span class="n">downloadTexture</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="p">);</span>
+<a name="line-800"></a>
+<a name="line-801"></a><span class="cp">#ifdef PERFORMANCE_ANALYSIS</span>
+<a name="line-802"></a> <span class="n">timer</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="s">&quot;downloadTexture&quot;</span><span class="p">);</span>
+<a name="line-803"></a><span class="cp">#endif</span>
+<a name="line-804"></a>
+<a name="line-805"></a> <span class="n">update</span><span class="p">();</span>
+<a name="line-806"></a>
+<a name="line-807"></a><span class="cp">#ifdef PERFORMANCE_ANALYSIS</span>
+<a name="line-808"></a> <span class="n">timer</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="s">&quot;update&quot;</span><span class="p">);</span>
+<a name="line-809"></a><span class="cp">#endif</span>
+<a name="line-810"></a>
+<a name="line-811"></a> <span class="c1">//image preloading</span>
+<a name="line-812"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">file_idx</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
+<a name="line-813"></a> <span class="n">loadImage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">file_idx</span> <span class="o">-</span> <span class="mi">1</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="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">nextImage</span><span class="p">()</span>
+<a name="line-817"></a><span class="p">{</span>
+<a name="line-818"></a><span class="cp">#ifdef PERFORMANCE_ANALYSIS</span>
+<a name="line-819"></a> <span class="n">GLViewerTimer</span> <span class="n">timer</span><span class="p">;</span>
+<a name="line-820"></a><span class="cp">#endif</span>
+<a name="line-821"></a>
+<a name="line-822"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">file_idx</span> <span class="o">&lt;</span> <span class="p">(</span><span class="kt">unsigned</span> <span class="kt">int</span><span class="p">)(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">files</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-823"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">file_idx</span><span class="o">++</span><span class="p">;</span>
+<a name="line-824"></a> <span class="k">else</span>
+<a name="line-825"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-826"></a>
+<a name="line-827"></a><span class="cp">#ifdef PERFORMANCE_ANALYSIS</span>
+<a name="line-828"></a> <span class="n">timer</span><span class="p">.</span><span class="n">start</span><span class="p">();</span>
+<a name="line-829"></a><span class="cp">#endif</span>
+<a name="line-830"></a>
+<a name="line-831"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span> <span class="o">=</span> <span class="n">loadImage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">file_idx</span><span class="p">);</span>
+<a name="line-832"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">reset</span><span class="p">();</span>
+<a name="line-833"></a>
+<a name="line-834"></a><span class="cp">#ifdef PERFORMANCE_ANALYSIS</span>
+<a name="line-835"></a> <span class="n">timer</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="s">&quot;loadImage&quot;</span><span class="p">);</span>
+<a name="line-836"></a><span class="cp">#endif</span>
+<a name="line-837"></a>
+<a name="line-838"></a> <span class="n">downloadTexture</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="p">);</span>
+<a name="line-839"></a>
+<a name="line-840"></a><span class="cp">#ifdef PERFORMANCE_ANALYSIS</span>
+<a name="line-841"></a> <span class="n">timer</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="s">&quot;downloadTexture&quot;</span><span class="p">);</span>
+<a name="line-842"></a><span class="cp">#endif</span>
+<a name="line-843"></a>
+<a name="line-844"></a> <span class="n">update</span><span class="p">();</span>
+<a name="line-845"></a>
+<a name="line-846"></a><span class="cp">#ifdef PERFORMANCE_ANALYSIS</span>
+<a name="line-847"></a> <span class="n">timer</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="s">&quot;updateGL&quot;</span><span class="p">);</span>
+<a name="line-848"></a><span class="cp">#endif</span>
+<a name="line-849"></a>
+<a name="line-850"></a> <span class="c1">//image preloading</span>
+<a name="line-851"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">file_idx</span> <span class="o">&lt;</span> <span class="p">((</span><span class="kt">unsigned</span> <span class="kt">int</span><span class="p">)</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">files</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-852"></a> <span class="p">{</span>
+<a name="line-853"></a> <span class="n">loadImage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">file_idx</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-854"></a>
+<a name="line-855"></a><span class="cp">#ifdef PERFORMANCE_ANALYSIS</span>
+<a name="line-856"></a> <span class="n">timer</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="s">&quot;preloading&quot;</span><span class="p">);</span>
+<a name="line-857"></a><span class="cp">#endif</span>
+<a name="line-858"></a> <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="cm">/**</span>
+<a name="line-862"></a><span class="cm"> * \param mdelta delta of mouse movement:</span>
+<a name="line-863"></a><span class="cm"> * mdelta&gt;0: zoom in</span>
+<a name="line-864"></a><span class="cm"> * mdelta&lt;0: zoom out</span>
+<a name="line-865"></a><span class="cm"> * mdelta=0: do nothing</span>
+<a name="line-866"></a><span class="cm"> * \param pos position of mouse</span>
+<a name="line-867"></a><span class="cm"> * \param factor zoom factor:scrollwheel needs a higher factor that right click mouse move. factor=1 -&gt; no zoom</span>
+<a name="line-868"></a><span class="cm"> */</span>
+<a name="line-869"></a><span class="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">zoom</span><span class="p">(</span><span class="kt">int</span> <span class="n">mdelta</span><span class="p">,</span> <span class="k">const</span> <span class="n">QPoint</span><span class="o">&amp;</span> <span class="n">pos</span><span class="p">,</span> <span class="kt">float</span> <span class="n">factor</span><span class="p">)</span>
+<a name="line-870"></a><span class="p">{</span>
+<a name="line-871"></a> <span class="k">if</span> <span class="p">(</span><span class="n">mdelta</span> <span class="o">==</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="c1">//do nothing</span>
+<a name="line-874"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-875"></a> <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">mdelta</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
+<a name="line-878"></a> <span class="p">{</span>
+<a name="line-879"></a> <span class="c1">//multiplicator for zooming in</span>
+<a name="line-880"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">delta</span> <span class="o">=</span> <span class="n">factor</span><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">mdelta</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
+<a name="line-884"></a> <span class="p">{</span>
+<a name="line-885"></a> <span class="c1">//multiplicator for zooming out</span>
+<a name="line-886"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">delta</span> <span class="o">=</span> <span class="mf">2.0</span> <span class="o">-</span> <span class="n">factor</span><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="n">d</span><span class="o">-&gt;</span><span class="n">texture</span><span class="o">-&gt;</span><span class="n">zoom</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">delta</span><span class="p">,</span> <span class="n">pos</span><span class="p">);</span>
+<a name="line-890"></a> <span class="n">update</span><span class="p">();</span>
+<a name="line-891"></a><span class="p">}</span>
+<a name="line-892"></a>
+<a name="line-893"></a><span class="cm">/**</span>
+<a name="line-894"></a><span class="cm"> * being called if user didn&#39;t move the mouse for longer than 2 sec</span>
+<a name="line-895"></a><span class="cm"> */</span>
+<a name="line-896"></a><span class="kt">void</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">slotTimeoutMouseMove</span><span class="p">()</span>
+<a name="line-897"></a><span class="p">{</span>
+<a name="line-898"></a> <span class="n">setCursor</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">BlankCursor</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="cm">/**</span>
+<a name="line-902"></a><span class="cm"> * check if OpenGL engine is ready. This function is called from outside the widget.</span>
+<a name="line-903"></a><span class="cm"> * If OpenGL doen&#39;t work correctly, the widget can be destroyed</span>
+<a name="line-904"></a><span class="cm"> * \return OGLstate::oglNoContext No OpenGl context could be retrieved</span>
+<a name="line-905"></a><span class="cm"> * \return OGLstate::oglNoRectangularTexture GLGL_ARB_texture_rectangle is not supported</span>
+<a name="line-906"></a><span class="cm"> * \return OGLstate::oglOK all is fine</span>
+<a name="line-907"></a><span class="cm"> */</span>
+<a name="line-908"></a><span class="n">OGLstate</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">getOGLstate</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-909"></a><span class="p">{</span>
+<a name="line-910"></a> <span class="c1">// No OpenGL context is found. Are the drivers ok?</span>
+<a name="line-911"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">isValid</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">oglNoContext</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="c1">// GL_ARB_texture_rectangle is not supported</span>
+<a name="line-917"></a> <span class="n">QString</span> <span class="n">s</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="k">reinterpret_cast</span><span class="o">&lt;</span><span class="k">const</span> <span class="kt">char</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">glGetString</span><span class="p">(</span><span class="n">GL_EXTENSIONS</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">s</span><span class="p">.</span><span class="n">contains</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;GL_ARB_texture_rectangle&quot;</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">CaseInsensitive</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">oglNoRectangularTexture</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="c1">// Everything is ok!</span>
+<a name="line-925"></a> <span class="k">return</span> <span class="n">oglOK</span><span class="p">;</span>
+<a name="line-926"></a><span class="p">}</span>
+<a name="line-927"></a>
+<a name="line-928"></a><span class="cm">/**</span>
+<a name="line-929"></a><span class="cm"> * QGLWidget::isFullscreen() returns true if the internal state is already true</span>
+<a name="line-930"></a><span class="cm"> * but the actually displayed size is still windowed. isReallyFullscreen() returns the</span>
+<a name="line-931"></a><span class="cm"> * value of the visible size.</span>
+<a name="line-932"></a><span class="cm"> * \return true if (screenwidth == widgedwidth)</span>
+<a name="line-933"></a><span class="cm"> */</span>
+<a name="line-934"></a><span class="kt">bool</span> <span class="n">GLViewerWidget</span><span class="o">::</span><span class="n">isReallyFullScreen</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-935"></a><span class="p">{</span>
+<a name="line-936"></a> <span class="k">return</span> <span class="p">(</span><span class="n">width</span><span class="p">()</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">screenSize</span><span class="p">.</span><span class="n">width</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="p">}</span> <span class="c1">// namespace DigikamGenericGLViewerPlugin</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 febfcc7ca..3e9f8b910 100644
--- a/static/reports/cppcheck/master/15.html
+++ b/static/reports/cppcheck/master/15.html
@@ -1,821 +1,821 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/view/presentation/common/presentationloader.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/generic/view/presentation/common/presentationloader.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> presentationloader.cpp</p>
<a href='15.html#line-61'> useInitializationList 61</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</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-11</span>
<a name="line-7"></a><span class="cm"> * Description : a presentation tool.</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2007-2009 by Valerio Fuoglio &lt;valerio dot fuoglio at gmail dot com&gt;</span>
<a name="line-10"></a><span class="cm"> * Copyright (C) 2009 by Andi Clemens &lt;andi dot clemens at googlemail dot com&gt;</span>
<a name="line-11"></a><span class="cm"> * Copyright (C) 2012-2020 by Gilles Caulier &lt;caulier dot gilles at gmail dot com&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;presentationloader.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;QMap&gt;</span><span class="cp"></span>
<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QImage&gt;</span><span class="cp"></span>
<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QMatrix&gt;</span><span class="cp"></span>
<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QPainter&gt;</span><span class="cp"></span>
<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QThread&gt;</span><span class="cp"></span>
<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QMutex&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">// Local includes</span>
<a name="line-38"></a>
<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&quot;dimg.h&quot;</span><span class="cp"></span>
<a name="line-40"></a><span class="cp">#include</span> <span class="cpf">&quot;iccsettings.h&quot;</span><span class="cp"></span>
<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
<a name="line-42"></a><span class="cp">#include</span> <span class="cpf">&quot;previewloadthread.h&quot;</span><span class="cp"></span>
<a name="line-43"></a><span class="cp">#include</span> <span class="cpf">&quot;iccsettingscontainer.h&quot;</span><span class="cp"></span>
<a name="line-44"></a><span class="cp">#include</span> <span class="cpf">&quot;presentationcontainer.h&quot;</span><span class="cp"></span>
<a name="line-45"></a>
<a name="line-46"></a><span class="k">using</span> <span class="k">namespace</span> <span class="n">Digikam</span><span class="p">;</span>
<a name="line-47"></a>
<a name="line-48"></a><span class="k">namespace</span> <span class="n">DigikamGenericPresentationPlugin</span>
<a name="line-49"></a><span class="p">{</span>
<a name="line-50"></a>
<a name="line-51"></a><span class="k">typedef</span> <span class="n">QMap</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="p">,</span> <span class="n">QImage</span><span class="o">&gt;</span> <span class="n">LoadedImages</span><span class="p">;</span>
<a name="line-52"></a>
<a name="line-53"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="nl">LoadThread</span> <span class="p">:</span> <span class="k">public</span> <span class="n">QThread</span>
<a name="line-54"></a><span class="p">{</span>
<a name="line-55"></a>
<a name="line-56"></a><span class="k">public</span><span class="o">:</span>
<a name="line-57"></a>
<a name="line-58"></a> <span class="n">LoadThread</span><span class="p">(</span><span class="n">LoadedImages</span><span class="o">*</span> <span class="k">const</span> <span class="n">loadedImages</span><span class="p">,</span> <span class="n">QMutex</span><span class="o">*</span> <span class="k">const</span> <span class="n">imageLock</span><span class="p">,</span> <span class="k">const</span> <span class="n">QUrl</span><span class="o">&amp;</span> <span class="n">path</span><span class="p">,</span>
<a name="line-59"></a> <span class="kt">int</span> <span class="n">width</span><span class="p">,</span> <span class="kt">int</span> <span class="n">height</span><span class="p">)</span>
<a name="line-60"></a> <span class="p">{</span>
<a name="line-61"></a><span class="hll"> <span class="n">m_path</span> <span class="o">=</span> <span class="n">path</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'm_path' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;m_path&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-62"></a> <span class="n">m_swidth</span> <span class="o">=</span> <span class="n">width</span><span class="p">;</span>
<a name="line-63"></a> <span class="n">m_sheight</span> <span class="o">=</span> <span class="n">height</span><span class="p">;</span>
<a name="line-64"></a> <span class="n">m_imageLock</span> <span class="o">=</span> <span class="n">imageLock</span><span class="p">;</span>
<a name="line-65"></a> <span class="n">m_loadedImages</span> <span class="o">=</span> <span class="n">loadedImages</span><span class="p">;</span>
<a name="line-66"></a> <span class="p">}</span>
<a name="line-67"></a>
<a name="line-68"></a> <span class="o">~</span><span class="n">LoadThread</span><span class="p">()</span>
<a name="line-69"></a> <span class="p">{</span>
<a name="line-70"></a> <span class="p">}</span>
<a name="line-71"></a>
<a name="line-72"></a><span class="k">protected</span><span class="o">:</span>
<a name="line-73"></a>
<a name="line-74"></a> <span class="kt">void</span> <span class="n">run</span><span class="p">()</span>
<a name="line-75"></a> <span class="p">{</span>
<a name="line-76"></a> <span class="n">QImage</span> <span class="n">newImage</span><span class="p">;</span>
<a name="line-77"></a>
<a name="line-78"></a> <span class="n">ICCSettingsContainer</span> <span class="n">settings</span> <span class="o">=</span> <span class="n">IccSettings</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>
<a name="line-79"></a>
<a name="line-80"></a> <span class="k">if</span> <span class="p">(</span><span class="n">settings</span><span class="p">.</span><span class="n">enableCM</span> <span class="o">&amp;&amp;</span> <span class="n">settings</span><span class="p">.</span><span class="n">useManagedPreviews</span><span class="p">)</span>
<a name="line-81"></a> <span class="p">{</span>
<a name="line-82"></a> <span class="n">IccProfile</span> <span class="n">profile</span><span class="p">(</span><span class="n">settings</span><span class="p">.</span><span class="n">monitorProfile</span><span class="p">);</span>
<a name="line-83"></a>
<a name="line-84"></a> <span class="n">newImage</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">m_path</span><span class="p">.</span><span class="n">toLocalFile</span><span class="p">(),</span>
<a name="line-85"></a> <span class="n">PreviewSettings</span><span class="o">::</span><span class="n">RawPreviewAutomatic</span><span class="p">,</span>
<a name="line-86"></a> <span class="n">profile</span><span class="p">).</span><span class="n">copyQImage</span><span class="p">();</span>
<a name="line-87"></a> <span class="p">}</span>
<a name="line-88"></a> <span class="k">else</span>
<a name="line-89"></a> <span class="p">{</span>
<a name="line-90"></a> <span class="n">newImage</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">m_path</span><span class="p">.</span><span class="n">toLocalFile</span><span class="p">()).</span><span class="n">copyQImage</span><span class="p">();</span>
<a name="line-91"></a> <span class="p">}</span>
<a name="line-92"></a>
<a name="line-93"></a> <span class="n">m_imageLock</span><span class="o">-&gt;</span><span class="n">lock</span><span class="p">();</span>
<a name="line-94"></a>
<a name="line-95"></a> <span class="k">if</span> <span class="p">(</span><span class="n">newImage</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-96"></a> <span class="p">{</span>
<a name="line-97"></a> <span class="n">m_loadedImages</span><span class="o">-&gt;</span><span class="n">insert</span><span class="p">(</span><span class="n">m_path</span><span class="p">,</span> <span class="n">newImage</span><span class="p">);</span>
<a name="line-98"></a> <span class="p">}</span>
<a name="line-99"></a> <span class="k">else</span>
<a name="line-100"></a> <span class="p">{</span>
<a name="line-101"></a> <span class="n">m_loadedImages</span><span class="o">-&gt;</span><span class="n">insert</span><span class="p">(</span><span class="n">m_path</span><span class="p">,</span> <span class="n">newImage</span><span class="p">.</span><span class="n">scaled</span><span class="p">(</span><span class="n">m_swidth</span><span class="p">,</span>
<a name="line-102"></a> <span class="n">m_sheight</span><span class="p">,</span>
<a name="line-103"></a> <span class="n">Qt</span><span class="o">::</span><span class="n">KeepAspectRatio</span><span class="p">,</span>
<a name="line-104"></a> <span class="n">Qt</span><span class="o">::</span><span class="n">SmoothTransformation</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">m_imageLock</span><span class="o">-&gt;</span><span class="n">unlock</span><span class="p">();</span>
<a name="line-108"></a> <span class="p">}</span>
<a name="line-109"></a>
<a name="line-110"></a><span class="k">private</span><span class="o">:</span>
<a name="line-111"></a>
<a name="line-112"></a> <span class="n">QMutex</span><span class="o">*</span> <span class="n">m_imageLock</span><span class="p">;</span>
<a name="line-113"></a> <span class="n">LoadedImages</span><span class="o">*</span> <span class="n">m_loadedImages</span><span class="p">;</span>
<a name="line-114"></a> <span class="n">QUrl</span> <span class="n">m_path</span><span class="p">;</span>
<a name="line-115"></a> <span class="n">QString</span> <span class="n">m_filename</span><span class="p">;</span>
<a name="line-116"></a> <span class="kt">int</span> <span class="n">m_swidth</span><span class="p">;</span>
<a name="line-117"></a> <span class="kt">int</span> <span class="n">m_sheight</span><span class="p">;</span>
<a name="line-118"></a><span class="p">};</span>
<a name="line-119"></a>
<a name="line-120"></a><span class="k">typedef</span> <span class="n">QMap</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="p">,</span> <span class="n">LoadThread</span><span class="o">*&gt;</span> <span class="n">LoadingThreads</span><span class="p">;</span>
<a name="line-121"></a>
<a name="line-122"></a><span class="c1">// -----------------------------------------------------------------------------------------</span>
<a name="line-123"></a>
<a name="line-124"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">PresentationLoader</span><span class="o">::</span><span class="n">Private</span>
<a name="line-125"></a><span class="p">{</span>
<a name="line-126"></a>
<a name="line-127"></a><span class="k">public</span><span class="o">:</span>
<a name="line-128"></a>
<a name="line-129"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
<a name="line-130"></a> <span class="p">{</span>
<a name="line-131"></a> <span class="n">sharedData</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-132"></a> <span class="n">loadingThreads</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-133"></a> <span class="n">loadedImages</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-134"></a> <span class="n">imageLock</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-135"></a> <span class="n">threadLock</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-136"></a> <span class="n">cacheSize</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-137"></a> <span class="n">currIndex</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-138"></a> <span class="n">swidth</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-139"></a> <span class="n">sheight</span> <span class="o">=</span> <span class="mi">0</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">PresentationContainer</span><span class="o">*</span> <span class="n">sharedData</span><span class="p">;</span>
<a name="line-143"></a> <span class="n">LoadingThreads</span><span class="o">*</span> <span class="n">loadingThreads</span><span class="p">;</span>
<a name="line-144"></a> <span class="n">LoadedImages</span><span class="o">*</span> <span class="n">loadedImages</span><span class="p">;</span>
<a name="line-145"></a>
<a name="line-146"></a> <span class="n">QMutex</span><span class="o">*</span> <span class="n">imageLock</span><span class="p">;</span>
<a name="line-147"></a> <span class="n">QMutex</span><span class="o">*</span> <span class="n">threadLock</span><span class="p">;</span>
<a name="line-148"></a>
<a name="line-149"></a> <span class="n">uint</span> <span class="n">cacheSize</span><span class="p">;</span>
<a name="line-150"></a> <span class="kt">int</span> <span class="n">currIndex</span><span class="p">;</span>
<a name="line-151"></a> <span class="kt">int</span> <span class="n">swidth</span><span class="p">;</span>
<a name="line-152"></a> <span class="kt">int</span> <span class="n">sheight</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">PresentationLoader</span><span class="o">::</span><span class="n">PresentationLoader</span><span class="p">(</span><span class="n">PresentationContainer</span><span class="o">*</span> <span class="k">const</span> <span class="n">sharedData</span><span class="p">,</span> <span class="kt">int</span> <span class="n">width</span><span class="p">,</span> <span class="kt">int</span> <span class="n">height</span><span class="p">,</span>
<a name="line-156"></a> <span class="kt">int</span> <span class="n">beginAtIndex</span><span class="p">)</span>
<a name="line-157"></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-158"></a><span class="p">{</span>
<a name="line-159"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sharedData</span> <span class="o">=</span> <span class="n">sharedData</span><span class="p">;</span>
<a name="line-160"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currIndex</span> <span class="o">=</span> <span class="n">beginAtIndex</span><span class="p">;</span>
<a name="line-161"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cacheSize</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sharedData</span><span class="o">-&gt;</span><span class="n">enableCache</span> <span class="o">?</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sharedData</span><span class="o">-&gt;</span><span class="nl">cacheSize</span> <span class="p">:</span> <span class="mi">1</span><span class="p">;</span>
<a name="line-162"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">swidth</span> <span class="o">=</span> <span class="n">width</span><span class="p">;</span>
<a name="line-163"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sheight</span> <span class="o">=</span> <span class="n">height</span><span class="p">;</span>
<a name="line-164"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">loadingThreads</span> <span class="o">=</span> <span class="k">new</span> <span class="n">LoadingThreads</span><span class="p">();</span>
<a name="line-165"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">loadedImages</span> <span class="o">=</span> <span class="k">new</span> <span class="n">LoadedImages</span><span class="p">();</span>
<a name="line-166"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageLock</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QMutex</span><span class="p">();</span>
<a name="line-167"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">threadLock</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QMutex</span><span class="p">();</span>
<a name="line-168"></a>
<a name="line-169"></a> <span class="n">QUrl</span> <span class="n">filePath</span><span class="p">;</span>
<a name="line-170"></a>
<a name="line-171"></a> <span class="k">for</span> <span class="p">(</span><span class="n">uint</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">uint</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cacheSize</span> <span class="o">/</span> <span class="mi">2</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">uint</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</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>
<a name="line-172"></a> <span class="p">{</span>
<a name="line-173"></a> <span class="n">filePath</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
<a name="line-174"></a> <span class="n">LoadThread</span><span class="o">*</span> <span class="k">const</span> <span class="n">newThread</span> <span class="o">=</span> <span class="k">new</span> <span class="n">LoadThread</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">loadedImages</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageLock</span><span class="p">,</span>
<a name="line-175"></a> <span class="n">filePath</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">swidth</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sheight</span><span class="p">);</span>
<a name="line-176"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">threadLock</span><span class="o">-&gt;</span><span class="n">lock</span><span class="p">();</span>
<a name="line-177"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">loadingThreads</span><span class="o">-&gt;</span><span class="n">insert</span><span class="p">(</span><span class="n">filePath</span><span class="p">,</span> <span class="n">newThread</span><span class="p">);</span>
<a name="line-178"></a> <span class="n">newThread</span><span class="o">-&gt;</span><span class="n">start</span><span class="p">();</span>
<a name="line-179"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">threadLock</span><span class="o">-&gt;</span><span class="n">unlock</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="k">for</span> <span class="p">(</span><span class="n">uint</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="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cacheSize</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">?</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cacheSize</span> <span class="o">%</span> <span class="mi">2</span><span class="p">)</span> <span class="o">:</span> <span class="n">uint</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cacheSize</span> <span class="o">/</span> <span class="mi">2</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-183"></a> <span class="p">{</span>
<a name="line-184"></a> <span class="kt">int</span> <span class="n">toLoad</span> <span class="o">=</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currIndex</span> <span class="o">-</span> <span class="n">i</span><span class="p">)</span> <span class="o">%</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</span><span class="p">.</span><span class="n">count</span><span class="p">();</span>
<a name="line-185"></a> <span class="n">filePath</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</span><span class="p">[</span><span class="n">toLoad</span><span class="p">];</span>
<a name="line-186"></a> <span class="n">LoadThread</span><span class="o">*</span> <span class="k">const</span> <span class="n">newThread</span> <span class="o">=</span> <span class="k">new</span> <span class="n">LoadThread</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">loadedImages</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageLock</span><span class="p">,</span>
<a name="line-187"></a> <span class="n">filePath</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">swidth</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sheight</span><span class="p">);</span>
<a name="line-188"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">threadLock</span><span class="o">-&gt;</span><span class="n">lock</span><span class="p">();</span>
<a name="line-189"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">loadingThreads</span><span class="o">-&gt;</span><span class="n">insert</span><span class="p">(</span><span class="n">filePath</span><span class="p">,</span> <span class="n">newThread</span><span class="p">);</span>
<a name="line-190"></a> <span class="n">newThread</span><span class="o">-&gt;</span><span class="n">start</span><span class="p">();</span>
<a name="line-191"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">threadLock</span><span class="o">-&gt;</span><span class="n">unlock</span><span class="p">();</span>
<a name="line-192"></a> <span class="p">}</span>
<a name="line-193"></a><span class="p">}</span>
<a name="line-194"></a>
<a name="line-195"></a><span class="n">PresentationLoader</span><span class="o">::~</span><span class="n">PresentationLoader</span><span class="p">()</span>
<a name="line-196"></a><span class="p">{</span>
<a name="line-197"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">threadLock</span><span class="o">-&gt;</span><span class="n">lock</span><span class="p">();</span>
<a name="line-198"></a> <span class="n">LoadingThreads</span><span class="o">::</span><span class="n">Iterator</span> <span class="n">it</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="n">it</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">loadingThreads</span><span class="o">-&gt;</span><span class="n">begin</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">loadingThreads</span><span class="o">-&gt;</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-201"></a> <span class="p">{</span>
<a name="line-202"></a> <span class="c1">// better check for a valid pointer here</span>
<a name="line-203"></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>
<a name="line-204"></a> <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">wait</span><span class="p">();</span>
<a name="line-205"></a>
<a name="line-206"></a> <span class="k">delete</span> <span class="n">it</span><span class="p">.</span><span class="n">value</span><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="n">d</span><span class="o">-&gt;</span><span class="n">loadingThreads</span><span class="o">-&gt;</span><span class="n">clear</span><span class="p">();</span>
<a name="line-210"></a>
<a name="line-211"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">threadLock</span><span class="o">-&gt;</span><span class="n">unlock</span><span class="p">();</span>
<a name="line-212"></a>
<a name="line-213"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">loadedImages</span><span class="p">;</span>
<a name="line-214"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">loadingThreads</span><span class="p">;</span>
<a name="line-215"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageLock</span><span class="p">;</span>
<a name="line-216"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">threadLock</span><span class="p">;</span>
<a name="line-217"></a> <span class="k">delete</span> <span class="n">d</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="kt">void</span> <span class="n">PresentationLoader</span><span class="o">::</span><span class="n">next</span><span class="p">()</span>
<a name="line-221"></a><span class="p">{</span>
<a name="line-222"></a> <span class="kt">int</span> <span class="n">victim</span> <span class="o">=</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currIndex</span> <span class="o">-</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cacheSize</span> <span class="o">%</span> <span class="mi">2</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">?</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cacheSize</span> <span class="o">/</span> <span class="mi">2</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span>
<a name="line-223"></a> <span class="o">:</span> <span class="kt">int</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cacheSize</span> <span class="o">/</span> <span class="mi">2</span><span class="p">)))</span> <span class="o">%</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</span><span class="p">.</span><span class="n">count</span><span class="p">();</span>
<a name="line-224"></a>
<a name="line-225"></a> <span class="kt">int</span> <span class="n">newBorn</span> <span class="o">=</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currIndex</span> <span class="o">+</span> <span class="kt">int</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cacheSize</span> <span class="o">/</span> <span class="mi">2</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">d</span><span class="o">-&gt;</span><span class="n">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</span><span class="p">.</span><span class="n">count</span><span class="p">();</span>
<a name="line-226"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currIndex</span> <span class="o">=</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currIndex</span> <span class="o">+</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">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</span><span class="p">.</span><span class="n">count</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">victim</span> <span class="o">==</span> <span class="n">newBorn</span><span class="p">)</span>
<a name="line-229"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-230"></a>
<a name="line-231"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">threadLock</span><span class="o">-&gt;</span><span class="n">lock</span><span class="p">();</span>
<a name="line-232"></a>
<a name="line-233"></a> <span class="n">LoadThread</span><span class="o">*</span> <span class="k">const</span> <span class="n">oldThread</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">loadingThreads</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">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</span><span class="p">[</span><span class="n">victim</span><span class="p">]);</span>
<a name="line-234"></a>
<a name="line-235"></a> <span class="k">if</span> <span class="p">(</span><span class="n">oldThread</span><span class="p">)</span>
<a name="line-236"></a> <span class="n">oldThread</span><span class="o">-&gt;</span><span class="n">wait</span><span class="p">();</span>
<a name="line-237"></a>
<a name="line-238"></a> <span class="k">delete</span> <span class="n">oldThread</span><span class="p">;</span>
<a name="line-239"></a>
<a name="line-240"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">loadingThreads</span><span class="o">-&gt;</span><span class="n">remove</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</span><span class="p">[</span><span class="n">victim</span><span class="p">]);</span>
<a name="line-241"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageLock</span><span class="o">-&gt;</span><span class="n">lock</span><span class="p">();</span>
<a name="line-242"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">loadedImages</span><span class="o">-&gt;</span><span class="n">remove</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</span><span class="p">[</span><span class="n">victim</span><span class="p">]);</span>
<a name="line-243"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageLock</span><span class="o">-&gt;</span><span class="n">unlock</span><span class="p">();</span>
<a name="line-244"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">threadLock</span><span class="o">-&gt;</span><span class="n">unlock</span><span class="p">();</span>
<a name="line-245"></a>
<a name="line-246"></a> <span class="n">QUrl</span> <span class="n">filePath</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</span><span class="p">[</span><span class="n">newBorn</span><span class="p">];</span>
<a name="line-247"></a> <span class="n">LoadThread</span><span class="o">*</span> <span class="k">const</span> <span class="n">newThread</span> <span class="o">=</span> <span class="k">new</span> <span class="n">LoadThread</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">loadedImages</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageLock</span><span class="p">,</span> <span class="n">filePath</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">swidth</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sheight</span><span class="p">);</span>
<a name="line-248"></a>
<a name="line-249"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">threadLock</span><span class="o">-&gt;</span><span class="n">lock</span><span class="p">();</span>
<a name="line-250"></a>
<a name="line-251"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">loadingThreads</span><span class="o">-&gt;</span><span class="n">insert</span><span class="p">(</span><span class="n">filePath</span><span class="p">,</span> <span class="n">newThread</span><span class="p">);</span>
<a name="line-252"></a> <span class="n">newThread</span><span class="o">-&gt;</span><span class="n">start</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">threadLock</span><span class="o">-&gt;</span><span class="n">unlock</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">PresentationLoader</span><span class="o">::</span><span class="n">prev</span><span class="p">()</span>
<a name="line-258"></a><span class="p">{</span>
<a name="line-259"></a> <span class="kt">int</span> <span class="n">victim</span> <span class="o">=</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currIndex</span> <span class="o">+</span> <span class="kt">int</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currIndex</span> <span class="o">/</span> <span class="mi">2</span><span class="p">))</span> <span class="o">%</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</span><span class="p">.</span><span class="n">count</span><span class="p">();</span>
<a name="line-260"></a> <span class="kt">int</span> <span class="n">newBorn</span> <span class="o">=</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currIndex</span> <span class="o">-</span> <span class="p">((</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cacheSize</span> <span class="o">&amp;</span> <span class="mi">2</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span> <span class="o">?</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cacheSize</span> <span class="o">/</span> <span class="mi">2</span><span class="p">)</span>
<a name="line-261"></a> <span class="o">:</span> <span class="kt">int</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cacheSize</span> <span class="o">/</span> <span class="mi">2</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">d</span><span class="o">-&gt;</span><span class="n">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</span><span class="p">.</span><span class="n">count</span><span class="p">();</span>
<a name="line-262"></a>
<a name="line-263"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currIndex</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">?</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currIndex</span> <span class="o">-</span> <span class="mi">1</span> <span class="o">:</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</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-264"></a>
<a name="line-265"></a> <span class="k">if</span> <span class="p">(</span><span class="n">victim</span> <span class="o">==</span> <span class="n">newBorn</span><span class="p">)</span>
<a name="line-266"></a> <span class="k">return</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">threadLock</span><span class="o">-&gt;</span><span class="n">lock</span><span class="p">();</span>
<a name="line-269"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageLock</span><span class="o">-&gt;</span><span class="n">lock</span><span class="p">();</span>
<a name="line-270"></a>
<a name="line-271"></a> <span class="n">LoadThread</span><span class="o">*</span> <span class="k">const</span> <span class="n">oldThread</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">loadingThreads</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">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</span><span class="p">[</span><span class="n">victim</span><span class="p">]);</span>
<a name="line-272"></a>
<a name="line-273"></a> <span class="k">if</span> <span class="p">(</span><span class="n">oldThread</span><span class="p">)</span>
<a name="line-274"></a> <span class="n">oldThread</span><span class="o">-&gt;</span><span class="n">wait</span><span class="p">();</span>
<a name="line-275"></a>
<a name="line-276"></a> <span class="k">delete</span> <span class="n">oldThread</span><span class="p">;</span>
<a name="line-277"></a>
<a name="line-278"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">loadingThreads</span><span class="o">-&gt;</span><span class="n">remove</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</span><span class="p">[</span><span class="n">victim</span><span class="p">]);</span>
<a name="line-279"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">loadedImages</span><span class="o">-&gt;</span><span class="n">remove</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</span><span class="p">[</span><span class="n">victim</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">imageLock</span><span class="o">-&gt;</span><span class="n">unlock</span><span class="p">();</span>
<a name="line-282"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">threadLock</span><span class="o">-&gt;</span><span class="n">unlock</span><span class="p">();</span>
<a name="line-283"></a>
<a name="line-284"></a> <span class="n">QUrl</span> <span class="n">filePath</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</span><span class="p">[</span><span class="n">newBorn</span><span class="p">];</span>
<a name="line-285"></a> <span class="n">LoadThread</span><span class="o">*</span> <span class="k">const</span> <span class="n">newThread</span> <span class="o">=</span> <span class="k">new</span> <span class="n">LoadThread</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">loadedImages</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageLock</span><span class="p">,</span> <span class="n">filePath</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">swidth</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sheight</span><span class="p">);</span>
<a name="line-286"></a>
<a name="line-287"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">threadLock</span><span class="o">-&gt;</span><span class="n">lock</span><span class="p">();</span>
<a name="line-288"></a>
<a name="line-289"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">loadingThreads</span><span class="o">-&gt;</span><span class="n">insert</span><span class="p">(</span><span class="n">filePath</span><span class="p">,</span> <span class="n">newThread</span><span class="p">);</span>
<a name="line-290"></a> <span class="n">newThread</span><span class="o">-&gt;</span><span class="n">start</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">threadLock</span><span class="o">-&gt;</span><span class="n">unlock</span><span class="p">();</span>
<a name="line-293"></a><span class="p">}</span>
<a name="line-294"></a>
<a name="line-295"></a><span class="n">QImage</span> <span class="n">PresentationLoader</span><span class="o">::</span><span class="n">getCurrent</span><span class="p">()</span> <span class="k">const</span>
<a name="line-296"></a><span class="p">{</span>
<a name="line-297"></a> <span class="n">checkIsIn</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currIndex</span><span class="p">);</span>
<a name="line-298"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageLock</span><span class="o">-&gt;</span><span class="n">lock</span><span class="p">();</span>
<a name="line-299"></a> <span class="n">QImage</span> <span class="n">returned</span> <span class="o">=</span> <span class="p">(</span><span class="o">*</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">loadedImages</span><span class="p">)[</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</span><span class="p">[</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currIndex</span><span class="p">]];</span>
<a name="line-300"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageLock</span><span class="o">-&gt;</span><span class="n">unlock</span><span class="p">();</span>
<a name="line-301"></a>
<a name="line-302"></a> <span class="k">return</span> <span class="n">returned</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="n">QString</span> <span class="n">PresentationLoader</span><span class="o">::</span><span class="n">currFileName</span><span class="p">()</span> <span class="k">const</span>
<a name="line-306"></a><span class="p">{</span>
<a name="line-307"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</span><span class="p">[</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currIndex</span><span class="p">].</span><span class="n">fileName</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">QUrl</span> <span class="n">PresentationLoader</span><span class="o">::</span><span class="n">currPath</span><span class="p">()</span> <span class="k">const</span>
<a name="line-311"></a><span class="p">{</span>
<a name="line-312"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</span><span class="p">[</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">currIndex</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="kt">void</span> <span class="n">PresentationLoader</span><span class="o">::</span><span class="n">checkIsIn</span><span class="p">(</span><span class="kt">int</span> <span class="n">index</span><span class="p">)</span> <span class="k">const</span>
<a name="line-316"></a><span class="p">{</span>
<a name="line-317"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">threadLock</span><span class="o">-&gt;</span><span class="n">lock</span><span class="p">();</span>
<a name="line-318"></a>
<a name="line-319"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">loadingThreads</span><span class="o">-&gt;</span><span class="n">contains</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</span><span class="p">[</span><span class="n">index</span><span class="p">]))</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">d</span><span class="o">-&gt;</span><span class="n">loadingThreads</span><span class="p">)[</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</span><span class="p">[</span><span class="n">index</span><span class="p">]]</span><span class="o">-&gt;</span><span class="n">isRunning</span><span class="p">())</span>
<a name="line-322"></a> <span class="p">(</span><span class="o">*</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">loadingThreads</span><span class="p">)[</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</span><span class="p">[</span><span class="n">index</span><span class="p">]]</span><span class="o">-&gt;</span><span class="n">wait</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">threadLock</span><span class="o">-&gt;</span><span class="n">unlock</span><span class="p">();</span>
<a name="line-325"></a> <span class="p">}</span>
<a name="line-326"></a> <span class="k">else</span>
<a name="line-327"></a> <span class="p">{</span>
<a name="line-328"></a> <span class="n">QUrl</span> <span class="n">filePath</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</span><span class="p">[</span><span class="n">index</span><span class="p">];</span>
<a name="line-329"></a> <span class="n">LoadThread</span><span class="o">*</span> <span class="k">const</span> <span class="n">newThread</span> <span class="o">=</span> <span class="k">new</span> <span class="n">LoadThread</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">loadedImages</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageLock</span><span class="p">,</span> <span class="n">filePath</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">swidth</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sheight</span><span class="p">);</span>
<a name="line-330"></a>
<a name="line-331"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">loadingThreads</span><span class="o">-&gt;</span><span class="n">insert</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</span><span class="p">[</span><span class="n">index</span><span class="p">],</span> <span class="n">newThread</span><span class="p">);</span>
<a name="line-332"></a> <span class="n">newThread</span><span class="o">-&gt;</span><span class="n">start</span><span class="p">();</span>
<a name="line-333"></a> <span class="p">(</span><span class="o">*</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">loadingThreads</span><span class="p">)[</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sharedData</span><span class="o">-&gt;</span><span class="n">urlList</span><span class="p">[</span><span class="n">index</span><span class="p">]]</span><span class="o">-&gt;</span><span class="n">wait</span><span class="p">();</span>
<a name="line-334"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">threadLock</span><span class="o">-&gt;</span><span class="n">unlock</span><span class="p">();</span>
<a name="line-335"></a> <span class="p">}</span>
<a name="line-336"></a><span class="p">}</span>
<a name="line-337"></a>
<a name="line-338"></a><span class="p">}</span> <span class="c1">// namespace DigikamGenericPresentationPlugin</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 266fdc9d5..e06707be6 100644
--- a/static/reports/cppcheck/master/16.html
+++ b/static/reports/cppcheck/master/16.html
@@ -1,1181 +1,1181 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/webservices/box/boxtalker.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../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='16.html#line-500'> shadowVar 500</a><a href='16.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/17.html b/static/reports/cppcheck/master/17.html
index e427d97f0..2320013e4 100644
--- a/static/reports/cppcheck/master/17.html
+++ b/static/reports/cppcheck/master/17.html
@@ -1,461 +1,461 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/webservices/debianscreenshots/dsmpform.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/generic/webservices/debianscreenshots/dsmpform.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> dsmpform.cpp</p>
<a href='17.html#line-48'> useInitializationList 48</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</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-12-03</span>
<a name="line-7"></a><span class="cm"> * Description : a tool to export images to Debian Screenshots site</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-2015 by Gilles Caulier &lt;caulier dot gilles at gmail dot com&gt;</span>
<a name="line-11"></a><span class="cm"> * Copyright (C) 2008-2009 by Luka Renko &lt;lure at kubuntu dot org&gt;</span>
<a name="line-12"></a><span class="cm"> * Copyright (C) 2010 by Pau Garcia i Quiles &lt;pgquiles at elpauer dot org&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;dsmpform.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;QFile&gt;</span><span class="cp"></span>
<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QMimeDatabase&gt;</span><span class="cp"></span>
<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QMimeType&gt;</span><span class="cp"></span>
<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QUrl&gt;</span><span class="cp"></span>
<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QString&gt;</span><span class="cp"></span>
<a name="line-35"></a>
<a name="line-36"></a><span class="c1">// Local includes</span>
<a name="line-37"></a>
<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&quot;wstoolutils.h&quot;</span><span class="cp"></span>
<a name="line-40"></a>
<a name="line-41"></a><span class="k">using</span> <span class="k">namespace</span> <span class="n">Digikam</span><span class="p">;</span>
<a name="line-42"></a>
<a name="line-43"></a><span class="k">namespace</span> <span class="n">DigikamGenericDebianScreenshotsPlugin</span>
<a name="line-44"></a><span class="p">{</span>
<a name="line-45"></a>
<a name="line-46"></a><span class="n">DSMPForm</span><span class="o">::</span><span class="n">DSMPForm</span><span class="p">()</span>
<a name="line-47"></a><span class="p">{</span>
<a name="line-48"></a><span class="hll"> <span class="n">m_boundary</span> <span class="o">=</span> <span class="n">WSToolUtils</span><span class="o">::</span><span class="n">randomString</span><span class="p">(</span><span class="mi">42</span> <span class="o">+</span> <span class="mi">13</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">();</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'm_boundary' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;m_boundary&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-49"></a> <span class="n">reset</span><span class="p">();</span>
<a name="line-50"></a><span class="p">}</span>
<a name="line-51"></a>
<a name="line-52"></a><span class="n">DSMPForm</span><span class="o">::~</span><span class="n">DSMPForm</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="kt">void</span> <span class="n">DSMPForm</span><span class="o">::</span><span class="n">reset</span><span class="p">()</span>
<a name="line-57"></a><span class="p">{</span>
<a name="line-58"></a> <span class="n">m_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-59"></a> <span class="n">QByteArray</span> <span class="nf">str</span><span class="p">(</span><span class="n">contentType</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">());</span>
<a name="line-60"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-61"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;MIME-version: 1.0&quot;</span><span class="p">;</span>
<a name="line-62"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-63"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">str</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="kt">void</span> <span class="n">DSMPForm</span><span class="o">::</span><span class="n">finish</span><span class="p">()</span>
<a name="line-67"></a><span class="p">{</span>
<a name="line-68"></a> <span class="n">QByteArray</span> <span class="n">str</span><span class="p">;</span>
<a name="line-69"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;--&quot;</span><span class="p">;</span>
<a name="line-70"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">m_boundary</span><span class="p">;</span>
<a name="line-71"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;--&quot;</span><span class="p">;</span>
<a name="line-72"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">str</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">void</span> <span class="n">DSMPForm</span><span class="o">::</span><span class="n">addPair</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">value</span><span class="p">)</span>
<a name="line-76"></a><span class="p">{</span>
<a name="line-77"></a> <span class="n">QByteArray</span> <span class="n">str</span><span class="p">;</span>
<a name="line-78"></a> <span class="n">QString</span> <span class="n">content_length</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">value</span><span class="p">.</span><span class="n">length</span><span class="p">());</span>
<a name="line-79"></a>
<a name="line-80"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;--&quot;</span><span class="p">;</span>
<a name="line-81"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">m_boundary</span><span class="p">;</span>
<a name="line-82"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-83"></a>
<a name="line-84"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">name</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-85"></a> <span class="p">{</span>
<a name="line-86"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;Content-Disposition: form-data; name=</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-87"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">name</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">();</span>
<a name="line-88"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\&quot;\r\n</span><span class="s">&quot;</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">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-92"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">value</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">();</span>
<a name="line-93"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-94"></a>
<a name="line-95"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">str</span><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">bool</span> <span class="n">DSMPForm</span><span class="o">::</span><span class="n">addFile</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">fileName</span><span class="p">,</span> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">path</span><span class="p">,</span> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">fieldName</span><span class="p">)</span>
<a name="line-99"></a><span class="p">{</span>
<a name="line-100"></a> <span class="n">QMimeDatabase</span> <span class="n">db</span><span class="p">;</span>
<a name="line-101"></a> <span class="n">QMimeType</span> <span class="n">ptr</span> <span class="o">=</span> <span class="n">db</span><span class="p">.</span><span class="n">mimeTypeForUrl</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">path</span><span class="p">));</span>
<a name="line-102"></a> <span class="n">QString</span> <span class="n">mime</span> <span class="o">=</span> <span class="n">ptr</span><span class="p">.</span><span class="n">name</span><span class="p">();</span>
<a name="line-103"></a>
<a name="line-104"></a> <span class="k">if</span> <span class="p">(</span><span class="n">mime</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-105"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-106"></a>
<a name="line-107"></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;mime = &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">mime</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">();</span>
<a name="line-108"></a>
<a name="line-109"></a> <span class="n">QFile</span> <span class="nf">imageFile</span><span class="p">(</span><span class="n">path</span><span class="p">);</span>
<a name="line-110"></a>
<a name="line-111"></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-112"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-113"></a>
<a name="line-114"></a> <span class="n">QByteArray</span> <span class="n">imageData</span> <span class="o">=</span> <span class="n">imageFile</span><span class="p">.</span><span class="n">readAll</span><span class="p">();</span>
<a name="line-115"></a>
<a name="line-116"></a> <span class="n">imageFile</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
<a name="line-117"></a>
<a name="line-118"></a> <span class="n">QByteArray</span> <span class="n">str</span><span class="p">;</span>
<a name="line-119"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;--&quot;</span><span class="p">;</span>
<a name="line-120"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">m_boundary</span><span class="p">;</span>
<a name="line-121"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-122"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;Content-Disposition: form-data; &quot;</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="o">!</span><span class="n">fieldName</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-125"></a> <span class="p">{</span>
<a name="line-126"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;name=</span><span class="se">\&quot;</span><span class="s">&quot;</span> <span class="o">+</span> <span class="n">QByteArray</span><span class="p">(</span><span class="n">fieldName</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">())</span> <span class="o">+</span> <span class="s">&quot;</span><span class="se">\&quot;</span><span class="s">; &quot;</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">str</span> <span class="o">+=</span> <span class="s">&quot;filename=</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-130"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">QFile</span><span class="o">::</span><span class="n">encodeName</span><span class="p">(</span><span class="n">fileName</span><span class="p">);</span>
<a name="line-131"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\&quot;\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-132"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;Content-Type: &quot;</span><span class="p">;</span>
<a name="line-133"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">mime</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">();</span>
<a name="line-134"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-135"></a>
<a name="line-136"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">str</span><span class="p">);</span>
<a name="line-137"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">imageData</span><span class="p">);</span>
<a name="line-138"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">);</span>
<a name="line-139"></a>
<a name="line-140"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-141"></a><span class="p">}</span>
<a name="line-142"></a>
<a name="line-143"></a><span class="n">QString</span> <span class="n">DSMPForm</span><span class="o">::</span><span class="n">contentType</span><span class="p">()</span> <span class="k">const</span>
<a name="line-144"></a><span class="p">{</span>
<a name="line-145"></a> <span class="k">return</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Content-Type: multipart/form-data; boundary=&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="n">m_boundary</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">QString</span> <span class="n">DSMPForm</span><span class="o">::</span><span class="n">boundary</span><span class="p">()</span> <span class="k">const</span>
<a name="line-149"></a><span class="p">{</span>
<a name="line-150"></a> <span class="k">return</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="n">m_boundary</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="n">QByteArray</span> <span class="n">DSMPForm</span><span class="o">::</span><span class="n">formData</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">m_buffer</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="p">}</span> <span class="c1">// namespace DigikamGenericDebianScreenshotsPlugin</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 9c1abe4a4..dfc22ba36 100644
--- a/static/reports/cppcheck/master/18.html
+++ b/static/reports/cppcheck/master/18.html
@@ -1,439 +1,439 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/webservices/debianscreenshots/dstalker.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/generic/webservices/debianscreenshots/dstalker.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> dstalker.cpp</p>
<a href='18.html#line-58'> useInitializationList 58</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</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-29</span>
<a name="line-7"></a><span class="cm"> * Description : a tool to export images to Debian Screenshots</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2010 by Pau Garcia i Quiles &lt;pgquiles at elpauer dot org&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;dstalker.h&quot;</span><span class="cp"></span>
<a name="line-24"></a>
<a name="line-25"></a><span class="c1">// C++ includes</span>
<a name="line-26"></a>
<a name="line-27"></a><span class="cp">#include</span> <span class="cpf">&lt;ctime&gt;</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;QDomDocument&gt;</span><span class="cp"></span>
<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QDomElement&gt;</span><span class="cp"></span>
<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QtAlgorithms&gt;</span><span class="cp"></span>
<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&lt;QApplication&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;kio/job.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;digikam_version.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;dsmpform.h&quot;</span><span class="cp"></span>
<a name="line-46"></a><span class="cp">#include</span> <span class="cpf">&quot;dscommon.h&quot;</span><span class="cp"></span>
<a name="line-47"></a><span class="cp">#include</span> <span class="cpf">&quot;dmessagebox.h&quot;</span><span class="cp"></span>
<a name="line-48"></a>
<a name="line-49"></a><span class="k">using</span> <span class="k">namespace</span> <span class="n">Digikam</span><span class="p">;</span>
<a name="line-50"></a>
<a name="line-51"></a><span class="k">namespace</span> <span class="n">DigikamGenericDebianScreenshotsPlugin</span>
<a name="line-52"></a><span class="p">{</span>
<a name="line-53"></a>
<a name="line-54"></a><span class="n">DSTalker</span><span class="o">::</span><span class="n">DSTalker</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-55"></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-56"></a> <span class="n">m_job</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<a name="line-57"></a><span class="p">{</span>
<a name="line-58"></a><span class="hll"> <span class="n">m_userAgent</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;KIPI-Plugin-DebianScreenshots/%1 (pgquiles@elpauer.org)&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">digiKamVersion</span><span class="p">());</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'm_userAgent' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;m_userAgent&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-59"></a> <span class="n">m_uploadUrl</span> <span class="o">=</span> <span class="n">DigikamGenericDebianScreenshotsPlugin</span><span class="o">::</span><span class="n">debshotsUrl</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/uploadfile&quot;</span><span class="p">);</span>
<a name="line-60"></a><span class="p">}</span>
<a name="line-61"></a>
<a name="line-62"></a><span class="n">DSTalker</span><span class="o">::~</span><span class="n">DSTalker</span><span class="p">()</span>
<a name="line-63"></a><span class="p">{</span>
<a name="line-64"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_job</span><span class="p">)</span>
<a name="line-65"></a> <span class="p">{</span>
<a name="line-66"></a> <span class="n">m_job</span><span class="o">-&gt;</span><span class="n">kill</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">bool</span> <span class="n">DSTalker</span><span class="o">::</span><span class="n">addScreenshot</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">packageName</span><span class="p">,</span>
<a name="line-71"></a> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">packageVersion</span><span class="p">,</span> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">description</span><span class="p">)</span>
<a name="line-72"></a><span class="p">{</span>
<a name="line-73"></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 screenshot &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">imgPath</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; to package &quot;</span>
<a name="line-74"></a> <span class="o">&lt;&lt;</span> <span class="n">packageName</span> <span class="o">&lt;&lt;</span> <span class="s">&quot; &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">packageVersion</span><span class="o">&lt;&lt;</span> <span class="s">&quot; using description &#39;&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">description</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;&#39;&quot;</span><span class="p">;</span>
<a name="line-75"></a>
<a name="line-76"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_job</span><span class="p">)</span>
<a name="line-77"></a> <span class="p">{</span>
<a name="line-78"></a> <span class="n">m_job</span><span class="o">-&gt;</span><span class="n">kill</span><span class="p">();</span>
<a name="line-79"></a> <span class="n">m_job</span> <span class="o">=</span> <span class="mi">0</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="n">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-83"></a>
<a name="line-84"></a> <span class="n">DSMPForm</span> <span class="n">form</span><span class="p">;</span>
<a name="line-85"></a> <span class="n">form</span><span class="p">.</span><span class="n">addPair</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;packagename&quot;</span><span class="p">),</span> <span class="n">packageName</span><span class="p">);</span>
<a name="line-86"></a> <span class="n">form</span><span class="p">.</span><span class="n">addPair</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">packageVersion</span><span class="p">);</span>
<a name="line-87"></a> <span class="n">form</span><span class="p">.</span><span class="n">addPair</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;description&quot;</span><span class="p">),</span> <span class="n">description</span><span class="p">);</span>
<a name="line-88"></a> <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> <span class="n">imgPath</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;file&quot;</span><span class="p">));</span>
<a name="line-89"></a> <span class="n">form</span><span class="p">.</span><span class="n">finish</span><span class="p">();</span>
<a name="line-90"></a>
<a name="line-91"></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: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">endl</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-92"></a>
<a name="line-93"></a> <span class="n">KIO</span><span class="o">::</span><span class="n">TransferJob</span><span class="o">*</span> <span class="k">const</span> <span class="n">job</span> <span class="o">=</span> <span class="n">KIO</span><span class="o">::</span><span class="n">http_post</span><span class="p">(</span><span class="n">QUrl</span><span class="p">(</span><span class="n">m_uploadUrl</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">KIO</span><span class="o">::</span><span class="n">HideProgressInfo</span><span class="p">);</span>
<a name="line-94"></a> <span class="n">job</span><span class="o">-&gt;</span><span class="n">addMetaData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;UserAgent&quot;</span><span class="p">),</span> <span class="n">m_userAgent</span><span class="p">);</span>
<a name="line-95"></a> <span class="n">job</span><span class="o">-&gt;</span><span class="n">addMetaData</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;content-type&quot;</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-96"></a>
<a name="line-97"></a> <span class="n">connect</span><span class="p">(</span><span class="n">job</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">KIO</span><span class="o">::</span><span class="n">Job</span><span class="o">*</span><span class="p">,</span><span class="n">QByteArray</span><span class="p">)),</span>
<a name="line-98"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">data</span><span class="p">(</span><span class="n">KIO</span><span class="o">::</span><span class="n">Job</span><span class="o">*</span><span class="p">,</span><span class="n">QByteArray</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">job</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-101"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotResult</span><span class="p">(</span><span class="n">KJob</span><span class="o">*</span><span class="p">)));</span>
<a name="line-102"></a>
<a name="line-103"></a> <span class="n">m_job</span> <span class="o">=</span> <span class="n">job</span><span class="p">;</span>
<a name="line-104"></a> <span class="n">m_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-105"></a> <span class="k">return</span> <span class="nb">true</span><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="kt">void</span> <span class="n">DSTalker</span><span class="o">::</span><span class="n">data</span><span class="p">(</span><span class="n">KIO</span><span class="o">::</span><span class="n">Job</span><span class="o">*</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-109"></a> <span class="p">{</span>
<a name="line-110"></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">Q_FUNC_INFO</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="n">data</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-113"></a> <span class="p">{</span>
<a name="line-114"></a> <span class="k">return</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="kt">int</span> <span class="n">oldSize</span> <span class="o">=</span> <span class="n">m_buffer</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
<a name="line-118"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">resize</span><span class="p">(</span><span class="n">m_buffer</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">+</span> <span class="n">data</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
<a name="line-119"></a> <span class="n">memcpy</span><span class="p">(</span><span class="n">m_buffer</span><span class="p">.</span><span class="n">data</span><span class="p">()</span> <span class="o">+</span> <span class="n">oldSize</span><span class="p">,</span> <span class="n">data</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">data</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
<a name="line-120"></a> <span class="p">}</span>
<a name="line-121"></a> <span class="kt">void</span> <span class="n">DSTalker</span><span class="o">::</span><span class="n">slotResult</span><span class="p">(</span><span class="n">KJob</span><span class="o">*</span> <span class="n">kjob</span><span class="p">)</span>
<a name="line-122"></a> <span class="p">{</span>
<a name="line-123"></a> <span class="n">m_job</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-124"></a> <span class="n">KIO</span><span class="o">::</span><span class="n">Job</span><span class="o">*</span> <span class="k">const</span> <span class="n">job</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">KIO</span><span class="o">::</span><span class="n">Job</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">kjob</span><span class="p">);</span>
<a name="line-125"></a>
<a name="line-126"></a> <span class="k">if</span> <span class="p">(</span><span class="n">job</span><span class="o">-&gt;</span><span class="n">error</span><span class="p">())</span>
<a name="line-127"></a> <span class="p">{</span>
<a name="line-128"></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-129"></a> <span class="n">emit</span> <span class="nf">signalAddScreenshotDone</span><span class="p">(</span><span class="n">job</span><span class="o">-&gt;</span><span class="n">error</span><span class="p">(),</span> <span class="n">job</span><span class="o">-&gt;</span><span class="n">errorText</span><span class="p">());</span>
<a name="line-130"></a> <span class="p">}</span>
<a name="line-131"></a><span class="cm">/*</span>
<a name="line-132"></a><span class="cm"> else</span>
<a name="line-133"></a><span class="cm"> {</span>
<a name="line-134"></a><span class="cm"> qCDebug(DIGIKAM_WEBSERVICES_LOG) &lt;&lt; &quot;Uploaded successfully screenshot &quot;</span>
<a name="line-135"></a><span class="cm"> &lt;&lt; job-&gt;queryMetaData(&quot;Screenshot&quot;)</span>
<a name="line-136"></a><span class="cm"> &lt;&lt; &quot; to Debian Screenshots for package &quot;</span>
<a name="line-137"></a><span class="cm"> &lt;&lt; job-&gt;queryMetaData(&quot;Package&quot;)</span>
<a name="line-138"></a><span class="cm"> &lt;&lt; &quot; &quot; &lt;&lt; job-&gt;queryMetaData(&quot;Version&quot;)</span>
<a name="line-139"></a><span class="cm"> &lt;&lt; &quot; with description &quot;</span>
<a name="line-140"></a><span class="cm"> &lt;&lt; job-&gt;queryMetaData(&quot;Description&quot;);</span>
<a name="line-141"></a><span class="cm"> }</span>
<a name="line-142"></a><span class="cm">*/</span>
<a name="line-143"></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-144"></a> <span class="n">emit</span> <span class="nf">signalAddScreenshotDone</span><span class="p">(</span><span class="mi">0</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="p">}</span> <span class="c1">// namespace DigikamGenericDebianScreenshotsPlugin</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 8ec318779..72ee4c5f9 100644
--- a/static/reports/cppcheck/master/19.html
+++ b/static/reports/cppcheck/master/19.html
@@ -1,481 +1,481 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/webservices/flickr/flickrmpform.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/generic/webservices/flickr/flickrmpform.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> flickrmpform.cpp</p>
<a href='19.html#line-48'> useInitializationList 48</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</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-07-07</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"> *</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;flickrmpform.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;QFile&gt;</span><span class="cp"></span>
<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QApplication&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;QMimeDatabase&gt;</span><span class="cp"></span>
<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QMimeType&gt;</span><span class="cp"></span>
<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QtGlobal&gt;</span><span class="cp"></span>
<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QTime&gt;</span><span class="cp"></span>
<a name="line-35"></a>
<a name="line-36"></a><span class="c1">// Local includes</span>
<a name="line-37"></a>
<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&quot;wstoolutils.h&quot;</span><span class="cp"></span>
<a name="line-40"></a>
<a name="line-41"></a><span class="k">using</span> <span class="k">namespace</span> <span class="n">Digikam</span><span class="p">;</span>
<a name="line-42"></a>
<a name="line-43"></a><span class="k">namespace</span> <span class="n">DigikamGenericFlickrPlugin</span>
<a name="line-44"></a><span class="p">{</span>
<a name="line-45"></a>
<a name="line-46"></a><span class="n">FlickrMPForm</span><span class="o">::</span><span class="n">FlickrMPForm</span><span class="p">()</span>
<a name="line-47"></a><span class="p">{</span>
<a name="line-48"></a><span class="hll"> <span class="n">m_boundary</span> <span class="o">=</span> <span class="s">&quot;----------&quot;</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'm_boundary' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;m_boundary&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-49"></a> <span class="n">m_boundary</span> <span class="o">+=</span> <span class="n">WSToolUtils</span><span class="o">::</span><span class="n">randomString</span><span class="p">(</span><span class="mi">42</span> <span class="o">+</span> <span class="mi">13</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">();</span>
<a name="line-50"></a><span class="p">}</span>
<a name="line-51"></a>
<a name="line-52"></a><span class="n">FlickrMPForm</span><span class="o">::~</span><span class="n">FlickrMPForm</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="kt">void</span> <span class="n">FlickrMPForm</span><span class="o">::</span><span class="n">reset</span><span class="p">()</span>
<a name="line-57"></a><span class="p">{</span>
<a name="line-58"></a> <span class="n">m_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-59"></a><span class="p">}</span>
<a name="line-60"></a>
<a name="line-61"></a><span class="kt">void</span> <span class="n">FlickrMPForm</span><span class="o">::</span><span class="n">finish</span><span class="p">()</span>
<a name="line-62"></a><span class="p">{</span>
<a name="line-63"></a> <span class="n">QByteArray</span> <span class="n">str</span><span class="p">;</span>
<a name="line-64"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;--&quot;</span><span class="p">;</span>
<a name="line-65"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">m_boundary</span><span class="p">;</span>
<a name="line-66"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;--&quot;</span><span class="p">;</span>
<a name="line-67"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">str</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="kt">bool</span> <span class="n">FlickrMPForm</span><span class="o">::</span><span class="n">addPair</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">value</span><span class="p">,</span> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">contentType</span><span class="p">)</span>
<a name="line-71"></a><span class="p">{</span>
<a name="line-72"></a> <span class="n">QByteArray</span> <span class="n">str</span><span class="p">;</span>
<a name="line-73"></a> <span class="n">QString</span> <span class="n">content_length</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&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">value</span><span class="p">.</span><span class="n">length</span><span class="p">());</span>
<a name="line-74"></a>
<a name="line-75"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;--&quot;</span><span class="p">;</span>
<a name="line-76"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">m_boundary</span><span class="p">;</span>
<a name="line-77"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-78"></a>
<a name="line-79"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">name</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-80"></a> <span class="p">{</span>
<a name="line-81"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;Content-Disposition: form-data; name=</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-82"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">name</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">();</span>
<a name="line-83"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\&quot;\r\n</span><span class="s">&quot;</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">contentType</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">str</span> <span class="o">+=</span> <span class="s">&quot;Content-Type: &quot;</span> <span class="o">+</span> <span class="n">QByteArray</span><span class="p">(</span><span class="n">contentType</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">());</span>
<a name="line-89"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-90"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;Mime-version: 1.0 &quot;</span><span class="p">;</span>
<a name="line-91"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</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="n">str</span> <span class="o">+=</span> <span class="s">&quot;Content-Length: &quot;</span><span class="p">;</span>
<a name="line-95"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">content_length</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">();</span>
<a name="line-96"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-97"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">value</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">();</span>
<a name="line-98"></a>
<a name="line-99"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">str</span><span class="p">);</span>
<a name="line-100"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">);</span>
<a name="line-101"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-102"></a><span class="p">}</span>
<a name="line-103"></a>
<a name="line-104"></a><span class="kt">bool</span> <span class="n">FlickrMPForm</span><span class="o">::</span><span class="n">addFile</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">path</span><span class="p">)</span>
<a name="line-105"></a><span class="p">{</span>
<a name="line-106"></a> <span class="n">QMimeDatabase</span> <span class="n">db</span><span class="p">;</span>
<a name="line-107"></a> <span class="n">QMimeType</span> <span class="n">ptr</span> <span class="o">=</span> <span class="n">db</span><span class="p">.</span><span class="n">mimeTypeForUrl</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">path</span><span class="p">));</span>
<a name="line-108"></a> <span class="n">QString</span> <span class="n">mime</span> <span class="o">=</span> <span class="n">ptr</span><span class="p">.</span><span class="n">name</span><span class="p">();</span>
<a name="line-109"></a>
<a name="line-110"></a> <span class="k">if</span> <span class="p">(</span><span class="n">mime</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-111"></a> <span class="p">{</span>
<a name="line-112"></a> <span class="c1">// if we ourselves can&#39;t determine the mime of the local file,</span>
<a name="line-113"></a> <span class="c1">// very unlikely the remote site will be able to identify it</span>
<a name="line-114"></a> <span class="k">return</span> <span class="nb">false</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="n">QFile</span> <span class="n">imageFile</span><span class="p">(</span><span class="n">path</span><span class="p">);</span>
<a name="line-118"></a>
<a name="line-119"></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-120"></a> <span class="p">{</span>
<a name="line-121"></a> <span class="k">return</span> <span class="nb">false</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="n">QByteArray</span> <span class="n">imageData</span> <span class="o">=</span> <span class="n">imageFile</span><span class="p">.</span><span class="n">readAll</span><span class="p">();</span>
<a name="line-125"></a>
<a name="line-126"></a> <span class="n">QByteArray</span> <span class="n">str</span><span class="p">;</span>
<a name="line-127"></a> <span class="n">QString</span> <span class="n">file_size</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&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">imageFile</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
<a name="line-128"></a> <span class="n">imageFile</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
<a name="line-129"></a>
<a name="line-130"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;--&quot;</span><span class="p">;</span>
<a name="line-131"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">m_boundary</span><span class="p">;</span>
<a name="line-132"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-133"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;Content-Disposition: form-data; name=</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-134"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">name</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">();</span>
<a name="line-135"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\&quot;</span><span class="s">; &quot;</span><span class="p">;</span>
<a name="line-136"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;filename=</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-137"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">QFile</span><span class="o">::</span><span class="n">encodeName</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">path</span><span class="p">).</span><span class="n">fileName</span><span class="p">());</span>
<a name="line-138"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\&quot;\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-139"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;Content-Length: &quot;</span><span class="p">;</span>
<a name="line-140"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">file_size</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">();</span>
<a name="line-141"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-142"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;Content-Type: &quot;</span><span class="p">;</span>
<a name="line-143"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">mime</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">();</span>
<a name="line-144"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-145"></a>
<a name="line-146"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">str</span><span class="p">);</span>
<a name="line-147"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">imageData</span><span class="p">);</span>
<a name="line-148"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">);</span>
<a name="line-149"></a>
<a name="line-150"></a> <span class="k">return</span> <span class="nb">true</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="n">QString</span> <span class="n">FlickrMPForm</span><span class="o">::</span><span class="n">contentType</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">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">QLatin1String</span><span class="p">(</span><span class="n">m_boundary</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">QString</span> <span class="n">FlickrMPForm</span><span class="o">::</span><span class="n">boundary</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">QLatin1String</span><span class="p">(</span><span class="n">m_boundary</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">QByteArray</span> <span class="n">FlickrMPForm</span><span class="o">::</span><span class="n">formData</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">m_buffer</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="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/2.html b/static/reports/cppcheck/master/2.html
index 4283426da..ed3eb5511 100644
--- a/static/reports/cppcheck/master/2.html
+++ b/static/reports/cppcheck/master/2.html
@@ -1,2221 +1,2221 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/editor/transform/perspective/perspectivewidget.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/editor/transform/perspective/perspectivewidget.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> perspectivewidget.cpp</p>
<a href='2.html#line-671'> shadowVar 671</a><a href='2.html#line-672'> shadowVar 672</a><a href='2.html#line-794'> shadowVar 794</a><a href='2.html#line-795'> shadowVar 795</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</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-01-18</span>
<a name="line-7"></a><span class="cm"> * Description : a widget class to edit perspective.</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2005-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-2012 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">#include</span> <span class="cpf">&quot;perspectivewidget.h&quot;</span><span class="cp"></span>
<a name="line-26"></a>
<a name="line-27"></a><span class="c1">// C++ includes</span>
<a name="line-28"></a>
<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;cstdio&gt;</span><span class="cp"></span>
<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;cstdlib&gt;</span><span class="cp"></span>
<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;cmath&gt;</span><span class="cp"></span>
<a name="line-32"></a>
<a name="line-33"></a><span class="c1">// Qt includes</span>
<a name="line-34"></a>
<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&lt;QRegion&gt;</span><span class="cp"></span>
<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&lt;QPainter&gt;</span><span class="cp"></span>
<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&lt;QPen&gt;</span><span class="cp"></span>
<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&lt;QBrush&gt;</span><span class="cp"></span>
<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&lt;QImage&gt;</span><span class="cp"></span>
<a name="line-40"></a><span class="cp">#include</span> <span class="cpf">&lt;QResizeEvent&gt;</span><span class="cp"></span>
<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&lt;QMouseEvent&gt;</span><span class="cp"></span>
<a name="line-42"></a><span class="cp">#include</span> <span class="cpf">&lt;QPaintEvent&gt;</span><span class="cp"></span>
<a name="line-43"></a><span class="cp">#include</span> <span class="cpf">&lt;QPixmap&gt;</span><span class="cp"></span>
<a name="line-44"></a><span class="cp">#include</span> <span class="cpf">&lt;QPolygon&gt;</span><span class="cp"></span>
<a name="line-45"></a>
<a name="line-46"></a><span class="c1">// KDE includes</span>
<a name="line-47"></a>
<a name="line-48"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&gt;</span><span class="cp"></span>
<a name="line-49"></a>
<a name="line-50"></a><span class="c1">// Local includes</span>
<a name="line-51"></a>
<a name="line-52"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
<a name="line-53"></a><span class="cp">#include</span> <span class="cpf">&quot;perspectivetriangle.h&quot;</span><span class="cp"></span>
<a name="line-54"></a><span class="cp">#include</span> <span class="cpf">&quot;dpixelsaliasfilter.h&quot;</span><span class="cp"></span>
<a name="line-55"></a>
<a name="line-56"></a><span class="k">namespace</span> <span class="n">DigikamEditorPerspectiveToolPlugin</span>
<a name="line-57"></a><span class="p">{</span>
<a name="line-58"></a>
<a name="line-59"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">Private</span>
<a name="line-60"></a><span class="p">{</span>
<a name="line-61"></a><span class="k">public</span><span class="o">:</span>
<a name="line-62"></a>
<a name="line-63"></a> <span class="k">enum</span> <span class="n">ResizingMode</span>
<a name="line-64"></a> <span class="p">{</span>
<a name="line-65"></a> <span class="n">ResizingNone</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span>
<a name="line-66"></a> <span class="n">ResizingTopLeft</span><span class="p">,</span>
<a name="line-67"></a> <span class="n">ResizingTopRight</span><span class="p">,</span>
<a name="line-68"></a> <span class="n">ResizingBottomLeft</span><span class="p">,</span>
<a name="line-69"></a> <span class="n">ResizingBottomRight</span>
<a name="line-70"></a> <span class="p">};</span>
<a name="line-71"></a>
<a name="line-72"></a><span class="k">public</span><span class="o">:</span>
<a name="line-73"></a>
<a name="line-74"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
<a name="line-75"></a> <span class="o">:</span> <span class="n">antiAliasing</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
<a name="line-76"></a> <span class="n">drawWhileMoving</span><span class="p">(</span><span class="nb">true</span><span class="p">),</span>
<a name="line-77"></a> <span class="n">drawGrid</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
<a name="line-78"></a> <span class="n">inverseTransformation</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
<a name="line-79"></a> <span class="n">validPerspective</span><span class="p">(</span><span class="nb">true</span><span class="p">),</span>
<a name="line-80"></a> <span class="n">data</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-81"></a> <span class="n">width</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
<a name="line-82"></a> <span class="n">height</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
<a name="line-83"></a> <span class="n">origW</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
<a name="line-84"></a> <span class="n">origH</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
<a name="line-85"></a> <span class="n">currentResizing</span><span class="p">(</span><span class="n">ResizingNone</span><span class="p">),</span>
<a name="line-86"></a> <span class="n">guideSize</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span>
<a name="line-87"></a> <span class="n">guideColor</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-88"></a> <span class="n">pixmap</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-89"></a> <span class="n">iface</span><span class="p">(</span><span class="k">nullptr</span><span class="p">)</span>
<a name="line-90"></a> <span class="p">{</span>
<a name="line-91"></a> <span class="p">}</span>
<a name="line-92"></a>
<a name="line-93"></a> <span class="kt">bool</span> <span class="n">antiAliasing</span><span class="p">;</span>
<a name="line-94"></a> <span class="kt">bool</span> <span class="n">drawWhileMoving</span><span class="p">;</span>
<a name="line-95"></a> <span class="kt">bool</span> <span class="n">drawGrid</span><span class="p">;</span>
<a name="line-96"></a> <span class="kt">bool</span> <span class="n">inverseTransformation</span><span class="p">;</span>
<a name="line-97"></a> <span class="kt">bool</span> <span class="n">validPerspective</span><span class="p">;</span>
<a name="line-98"></a>
<a name="line-99"></a> <span class="n">uint</span><span class="o">*</span> <span class="n">data</span><span class="p">;</span>
<a name="line-100"></a> <span class="kt">int</span> <span class="n">width</span><span class="p">;</span>
<a name="line-101"></a> <span class="kt">int</span> <span class="n">height</span><span class="p">;</span>
<a name="line-102"></a> <span class="kt">int</span> <span class="n">origW</span><span class="p">;</span>
<a name="line-103"></a> <span class="kt">int</span> <span class="n">origH</span><span class="p">;</span>
<a name="line-104"></a>
<a name="line-105"></a> <span class="kt">int</span> <span class="n">currentResizing</span><span class="p">;</span>
<a name="line-106"></a>
<a name="line-107"></a> <span class="kt">int</span> <span class="n">guideSize</span><span class="p">;</span>
<a name="line-108"></a>
<a name="line-109"></a> <span class="n">QRect</span> <span class="n">rect</span><span class="p">;</span>
<a name="line-110"></a>
<a name="line-111"></a> <span class="c1">// Transformed center area for mouse position control.</span>
<a name="line-112"></a>
<a name="line-113"></a> <span class="n">QPoint</span> <span class="n">transformedCenter</span><span class="p">;</span>
<a name="line-114"></a>
<a name="line-115"></a> <span class="c1">// Draggable local region selection corners.</span>
<a name="line-116"></a>
<a name="line-117"></a> <span class="n">QRect</span> <span class="n">topLeftCorner</span><span class="p">;</span>
<a name="line-118"></a> <span class="n">QRect</span> <span class="n">topRightCorner</span><span class="p">;</span>
<a name="line-119"></a> <span class="n">QRect</span> <span class="n">bottomLeftCorner</span><span class="p">;</span>
<a name="line-120"></a> <span class="n">QRect</span> <span class="n">bottomRightCorner</span><span class="p">;</span>
<a name="line-121"></a>
<a name="line-122"></a> <span class="n">QPoint</span> <span class="n">topLeftPoint</span><span class="p">;</span>
<a name="line-123"></a> <span class="n">QPoint</span> <span class="n">topRightPoint</span><span class="p">;</span>
<a name="line-124"></a> <span class="n">QPoint</span> <span class="n">bottomLeftPoint</span><span class="p">;</span>
<a name="line-125"></a> <span class="n">QPoint</span> <span class="n">bottomRightPoint</span><span class="p">;</span>
<a name="line-126"></a> <span class="n">QPoint</span> <span class="n">spot</span><span class="p">;</span>
<a name="line-127"></a>
<a name="line-128"></a> <span class="n">QColor</span> <span class="n">guideColor</span><span class="p">;</span>
<a name="line-129"></a> <span class="n">QColor</span> <span class="n">bgColor</span><span class="p">;</span>
<a name="line-130"></a>
<a name="line-131"></a> <span class="c1">// 60 points will be stored to compute a grid of 15x15 lines.</span>
<a name="line-132"></a> <span class="n">QPolygon</span> <span class="n">grid</span><span class="p">;</span>
<a name="line-133"></a>
<a name="line-134"></a> <span class="n">QPixmap</span><span class="o">*</span> <span class="n">pixmap</span><span class="p">;</span>
<a name="line-135"></a>
<a name="line-136"></a> <span class="n">ImageIface</span><span class="o">*</span> <span class="n">iface</span><span class="p">;</span>
<a name="line-137"></a> <span class="n">DImg</span> <span class="n">preview</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">PerspectiveWidget</span><span class="o">::</span><span class="n">PerspectiveWidget</span><span class="p">(</span><span class="kt">int</span> <span class="n">w</span><span class="p">,</span> <span class="kt">int</span> <span class="n">h</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-141"></a> <span class="o">:</span> <span class="n">QWidget</span><span class="p">(</span><span class="n">parent</span><span class="p">),</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-142"></a><span class="p">{</span>
<a name="line-143"></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>
<a name="line-144"></a> <span class="n">setMinimumSize</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-145"></a> <span class="n">setMouseTracking</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-146"></a>
<a name="line-147"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bgColor</span> <span class="o">=</span> <span class="n">palette</span><span class="p">().</span><span class="n">color</span><span class="p">(</span><span class="n">QPalette</span><span class="o">::</span><span class="n">Window</span><span class="p">);</span>
<a name="line-148"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">iface</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ImageIface</span><span class="p">(</span><span class="n">QSize</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-149"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">preview</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">setPreviewSize</span><span class="p">(</span><span class="n">QSize</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-150"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">width</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">previewSize</span><span class="p">().</span><span class="n">width</span><span class="p">();</span>
<a name="line-151"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">height</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">previewSize</span><span class="p">().</span><span class="n">height</span><span class="p">();</span>
<a name="line-152"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">origW</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">originalSize</span><span class="p">().</span><span class="n">width</span><span class="p">();</span>
<a name="line-153"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">origH</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">originalSize</span><span class="p">().</span><span class="n">height</span><span class="p">();</span>
<a name="line-154"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">preview</span><span class="p">.</span><span class="n">setIccProfile</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">original</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">getIccProfile</span><span class="p">()</span> <span class="p">);</span>
<a name="line-155"></a>
<a name="line-156"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">pixmap</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QPixmap</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-157"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span> <span class="o">=</span> <span class="n">QRect</span><span class="p">(</span><span class="n">w</span><span class="o">/</span><span class="mi">2</span><span class="o">-</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span> <span class="n">h</span><span class="o">/</span><span class="mi">2</span><span class="o">-</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">height</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">);</span>
<a name="line-158"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">grid</span> <span class="o">=</span> <span class="n">QPolygon</span><span class="p">(</span><span class="mi">60</span><span class="p">);</span>
<a name="line-159"></a>
<a name="line-160"></a> <span class="n">reset</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">PerspectiveWidget</span><span class="o">::~</span><span class="n">PerspectiveWidget</span><span class="p">()</span>
<a name="line-164"></a><span class="p">{</span>
<a name="line-165"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">iface</span><span class="p">;</span>
<a name="line-166"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">pixmap</span><span class="p">;</span>
<a name="line-167"></a> <span class="k">delete</span> <span class="n">d</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="kt">void</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">resizeEvent</span><span class="p">(</span><span class="n">QResizeEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">)</span>
<a name="line-171"></a><span class="p">{</span>
<a name="line-172"></a> <span class="kt">int</span> <span class="n">old_w</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">;</span>
<a name="line-173"></a> <span class="kt">int</span> <span class="n">old_h</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">;</span>
<a name="line-174"></a>
<a name="line-175"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">pixmap</span><span class="p">;</span>
<a name="line-176"></a> <span class="kt">int</span> <span class="n">w</span> <span class="o">=</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">size</span><span class="p">().</span><span class="n">width</span><span class="p">();</span>
<a name="line-177"></a> <span class="kt">int</span> <span class="n">h</span> <span class="o">=</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">size</span><span class="p">().</span><span class="n">height</span><span class="p">();</span>
<a name="line-178"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">preview</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">setPreviewSize</span><span class="p">(</span><span class="n">QSize</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-179"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">width</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">previewSize</span><span class="p">().</span><span class="n">width</span><span class="p">();</span>
<a name="line-180"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">height</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">previewSize</span><span class="p">().</span><span class="n">height</span><span class="p">();</span>
<a name="line-181"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">preview</span><span class="p">.</span><span class="n">setIccProfile</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">original</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">getIccProfile</span><span class="p">()</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">pixmap</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QPixmap</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-184"></a> <span class="n">QRect</span> <span class="n">oldRect</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">;</span>
<a name="line-185"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span> <span class="o">=</span> <span class="n">QRect</span><span class="p">(</span><span class="n">w</span><span class="o">/</span><span class="mi">2</span><span class="o">-</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span> <span class="n">h</span><span class="o">/</span><span class="mi">2</span><span class="o">-</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">height</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">);</span>
<a name="line-186"></a>
<a name="line-187"></a> <span class="kt">float</span> <span class="n">xFactor</span> <span class="o">=</span> <span class="p">(</span><span class="kt">float</span><span class="p">)</span><span class="n">d</span><span class="o">-&gt;</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="p">(</span><span class="kt">float</span><span class="p">)(</span><span class="n">oldRect</span><span class="p">.</span><span class="n">width</span><span class="p">());</span>
<a name="line-188"></a> <span class="kt">float</span> <span class="n">yFactor</span> <span class="o">=</span> <span class="p">(</span><span class="kt">float</span><span class="p">)</span><span class="n">d</span><span class="o">-&gt;</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="p">(</span><span class="kt">float</span><span class="p">)(</span><span class="n">oldRect</span><span class="p">.</span><span class="n">height</span><span class="p">());</span>
<a name="line-189"></a>
<a name="line-190"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftPoint</span> <span class="o">=</span> <span class="n">QPoint</span><span class="p">(</span><span class="n">lroundf</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftPoint</span><span class="p">.</span><span class="n">x</span><span class="p">()</span><span class="o">*</span><span class="n">xFactor</span><span class="p">),</span>
<a name="line-191"></a> <span class="n">lroundf</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftPoint</span><span class="p">.</span><span class="n">y</span><span class="p">()</span><span class="o">*</span><span class="n">yFactor</span><span class="p">));</span>
<a name="line-192"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topRightPoint</span> <span class="o">=</span> <span class="n">QPoint</span><span class="p">(</span><span class="n">lroundf</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">topRightPoint</span><span class="p">.</span><span class="n">x</span><span class="p">()</span><span class="o">*</span><span class="n">xFactor</span><span class="p">),</span>
<a name="line-193"></a> <span class="n">lroundf</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">topRightPoint</span><span class="p">.</span><span class="n">y</span><span class="p">()</span><span class="o">*</span><span class="n">yFactor</span><span class="p">));</span>
<a name="line-194"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomLeftPoint</span> <span class="o">=</span> <span class="n">QPoint</span><span class="p">(</span><span class="n">lroundf</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomLeftPoint</span><span class="p">.</span><span class="n">x</span><span class="p">()</span><span class="o">*</span><span class="n">xFactor</span><span class="p">),</span>
<a name="line-195"></a> <span class="n">lroundf</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomLeftPoint</span><span class="p">.</span><span class="n">y</span><span class="p">()</span><span class="o">*</span><span class="n">yFactor</span><span class="p">));</span>
<a name="line-196"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomRightPoint</span> <span class="o">=</span> <span class="n">QPoint</span><span class="p">(</span><span class="n">lroundf</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomRightPoint</span><span class="p">.</span><span class="n">x</span><span class="p">()</span><span class="o">*</span><span class="n">xFactor</span><span class="p">),</span>
<a name="line-197"></a> <span class="n">lroundf</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomRightPoint</span><span class="p">.</span><span class="n">y</span><span class="p">()</span><span class="o">*</span><span class="n">yFactor</span><span class="p">));</span>
<a name="line-198"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">transformedCenter</span> <span class="o">=</span> <span class="n">QPoint</span><span class="p">(</span><span class="n">lroundf</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">transformedCenter</span><span class="p">.</span><span class="n">x</span><span class="p">()</span><span class="o">*</span><span class="n">xFactor</span><span class="p">),</span>
<a name="line-199"></a> <span class="n">lroundf</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">transformedCenter</span><span class="p">.</span><span class="n">y</span><span class="p">()</span><span class="o">*</span><span class="n">yFactor</span><span class="p">));</span>
<a name="line-200"></a>
<a name="line-201"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">spot</span><span class="p">.</span><span class="n">setX</span><span class="p">((</span><span class="kt">int</span><span class="p">)((</span><span class="kt">float</span><span class="p">)</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">spot</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">*</span> <span class="p">(</span> <span class="p">(</span><span class="kt">float</span><span class="p">)</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span> <span class="o">/</span> <span class="p">(</span><span class="kt">float</span><span class="p">)</span><span class="n">old_w</span><span class="p">)));</span>
<a name="line-202"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">spot</span><span class="p">.</span><span class="n">setY</span><span class="p">((</span><span class="kt">int</span><span class="p">)((</span><span class="kt">float</span><span class="p">)</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">spot</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">*</span> <span class="p">(</span> <span class="p">(</span><span class="kt">float</span><span class="p">)</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">height</span> <span class="o">/</span> <span class="p">(</span><span class="kt">float</span><span class="p">)</span><span class="n">old_h</span><span class="p">)));</span>
<a name="line-203"></a>
<a name="line-204"></a> <span class="n">updatePixmap</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">ImageIface</span><span class="o">*</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">imageIface</span><span class="p">()</span> <span class="k">const</span>
<a name="line-208"></a><span class="p">{</span>
<a name="line-209"></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-210"></a><span class="p">}</span>
<a name="line-211"></a>
<a name="line-212"></a><span class="n">QPoint</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">getTopLeftCorner</span><span class="p">()</span> <span class="k">const</span>
<a name="line-213"></a><span class="p">{</span>
<a name="line-214"></a> <span class="k">return</span> <span class="n">QPoint</span><span class="p">(</span> <span class="n">lroundf</span><span class="p">((</span><span class="kt">float</span><span class="p">)(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftPoint</span><span class="p">.</span><span class="n">x</span><span class="p">()</span><span class="o">*</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">origW</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="kt">float</span><span class="p">)</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">),</span>
<a name="line-215"></a> <span class="n">lroundf</span><span class="p">((</span><span class="kt">float</span><span class="p">)(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftPoint</span><span class="p">.</span><span class="n">y</span><span class="p">()</span><span class="o">*</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">origH</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="kt">float</span><span class="p">)</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">height</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="n">QPoint</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">getTopRightCorner</span><span class="p">()</span> <span class="k">const</span>
<a name="line-219"></a><span class="p">{</span>
<a name="line-220"></a> <span class="k">return</span> <span class="n">QPoint</span><span class="p">(</span> <span class="n">lroundf</span><span class="p">((</span><span class="kt">float</span><span class="p">)(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">topRightPoint</span><span class="p">.</span><span class="n">x</span><span class="p">()</span><span class="o">*</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">origW</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="kt">float</span><span class="p">)</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">),</span>
<a name="line-221"></a> <span class="n">lroundf</span><span class="p">((</span><span class="kt">float</span><span class="p">)(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">topRightPoint</span><span class="p">.</span><span class="n">y</span><span class="p">()</span><span class="o">*</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">origH</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="kt">float</span><span class="p">)</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">height</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="n">QPoint</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">getBottomLeftCorner</span><span class="p">()</span> <span class="k">const</span>
<a name="line-225"></a><span class="p">{</span>
<a name="line-226"></a> <span class="k">return</span> <span class="n">QPoint</span><span class="p">(</span> <span class="n">lroundf</span><span class="p">((</span><span class="kt">float</span><span class="p">)(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomLeftPoint</span><span class="p">.</span><span class="n">x</span><span class="p">()</span><span class="o">*</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">origW</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="kt">float</span><span class="p">)</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">),</span>
<a name="line-227"></a> <span class="n">lroundf</span><span class="p">((</span><span class="kt">float</span><span class="p">)(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomLeftPoint</span><span class="p">.</span><span class="n">y</span><span class="p">()</span><span class="o">*</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">origH</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="kt">float</span><span class="p">)</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">));</span>
<a name="line-228"></a><span class="p">}</span>
<a name="line-229"></a>
<a name="line-230"></a><span class="n">QPoint</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">getBottomRightCorner</span><span class="p">()</span> <span class="k">const</span>
<a name="line-231"></a><span class="p">{</span>
<a name="line-232"></a> <span class="k">return</span> <span class="n">QPoint</span><span class="p">(</span> <span class="n">lroundf</span><span class="p">((</span><span class="kt">float</span><span class="p">)(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomRightPoint</span><span class="p">.</span><span class="n">x</span><span class="p">()</span><span class="o">*</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">origW</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="kt">float</span><span class="p">)</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">),</span>
<a name="line-233"></a> <span class="n">lroundf</span><span class="p">((</span><span class="kt">float</span><span class="p">)(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomRightPoint</span><span class="p">.</span><span class="n">y</span><span class="p">()</span><span class="o">*</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">origH</span><span class="p">)</span> <span class="o">/</span> <span class="p">(</span><span class="kt">float</span><span class="p">)</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">height</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="n">QRect</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">getTargetSize</span><span class="p">()</span> <span class="k">const</span>
<a name="line-237"></a><span class="p">{</span>
<a name="line-238"></a> <span class="n">QPolygon</span> <span class="n">perspectiveArea</span><span class="p">;</span>
<a name="line-239"></a>
<a name="line-240"></a> <span class="n">perspectiveArea</span><span class="p">.</span><span class="n">putPoints</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span>
<a name="line-241"></a> <span class="n">getTopLeftCorner</span><span class="p">().</span><span class="n">x</span><span class="p">(),</span> <span class="n">getTopLeftCorner</span><span class="p">().</span><span class="n">y</span><span class="p">(),</span>
<a name="line-242"></a> <span class="n">getTopRightCorner</span><span class="p">().</span><span class="n">x</span><span class="p">(),</span> <span class="n">getTopRightCorner</span><span class="p">().</span><span class="n">y</span><span class="p">(),</span>
<a name="line-243"></a> <span class="n">getBottomRightCorner</span><span class="p">().</span><span class="n">x</span><span class="p">(),</span> <span class="n">getBottomRightCorner</span><span class="p">().</span><span class="n">y</span><span class="p">(),</span>
<a name="line-244"></a> <span class="n">getBottomLeftCorner</span><span class="p">().</span><span class="n">x</span><span class="p">(),</span> <span class="n">getBottomLeftCorner</span><span class="p">().</span><span class="n">y</span><span class="p">());</span>
<a name="line-245"></a>
<a name="line-246"></a> <span class="k">return</span> <span class="n">perspectiveArea</span><span class="p">.</span><span class="n">boundingRect</span><span class="p">();</span>
<a name="line-247"></a><span class="p">}</span>
<a name="line-248"></a>
<a name="line-249"></a><span class="kt">float</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">getAngleTopLeft</span><span class="p">()</span> <span class="k">const</span>
<a name="line-250"></a><span class="p">{</span>
<a name="line-251"></a> <span class="n">PerspectiveTriangle</span> <span class="n">topLeft</span><span class="p">(</span><span class="n">getTopLeftCorner</span><span class="p">(),</span> <span class="n">getTopRightCorner</span><span class="p">(),</span> <span class="n">getBottomLeftCorner</span><span class="p">());</span>
<a name="line-252"></a> <span class="k">return</span> <span class="n">topLeft</span><span class="p">.</span><span class="n">angleBAC</span><span class="p">();</span>
<a name="line-253"></a><span class="p">}</span>
<a name="line-254"></a>
<a name="line-255"></a><span class="kt">float</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">getAngleTopRight</span><span class="p">()</span> <span class="k">const</span>
<a name="line-256"></a><span class="p">{</span>
<a name="line-257"></a> <span class="n">PerspectiveTriangle</span> <span class="n">topLeft</span><span class="p">(</span><span class="n">getTopRightCorner</span><span class="p">(),</span> <span class="n">getBottomRightCorner</span><span class="p">(),</span> <span class="n">getTopLeftCorner</span><span class="p">());</span>
<a name="line-258"></a> <span class="k">return</span> <span class="n">topLeft</span><span class="p">.</span><span class="n">angleBAC</span><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="kt">float</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">getAngleBottomLeft</span><span class="p">()</span> <span class="k">const</span>
<a name="line-262"></a><span class="p">{</span>
<a name="line-263"></a> <span class="n">PerspectiveTriangle</span> <span class="n">topLeft</span><span class="p">(</span><span class="n">getBottomLeftCorner</span><span class="p">(),</span> <span class="n">getTopLeftCorner</span><span class="p">(),</span> <span class="n">getBottomRightCorner</span><span class="p">());</span>
<a name="line-264"></a> <span class="k">return</span> <span class="n">topLeft</span><span class="p">.</span><span class="n">angleBAC</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">float</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">getAngleBottomRight</span><span class="p">()</span> <span class="k">const</span>
<a name="line-268"></a><span class="p">{</span>
<a name="line-269"></a> <span class="n">PerspectiveTriangle</span> <span class="n">topLeft</span><span class="p">(</span><span class="n">getBottomRightCorner</span><span class="p">(),</span> <span class="n">getBottomLeftCorner</span><span class="p">(),</span> <span class="n">getTopRightCorner</span><span class="p">());</span>
<a name="line-270"></a> <span class="k">return</span> <span class="n">topLeft</span><span class="p">.</span><span class="n">angleBAC</span><span class="p">();</span>
<a name="line-271"></a><span class="p">}</span>
<a name="line-272"></a>
<a name="line-273"></a><span class="kt">void</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">reset</span><span class="p">()</span>
<a name="line-274"></a><span class="p">{</span>
<a name="line-275"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftPoint</span><span class="p">.</span><span class="n">setX</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
<a name="line-276"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftPoint</span><span class="p">.</span><span class="n">setY</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
<a name="line-277"></a>
<a name="line-278"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topRightPoint</span><span class="p">.</span><span class="n">setX</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span><span class="o">-</span><span class="mi">1</span><span class="p">);</span>
<a name="line-279"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topRightPoint</span><span class="p">.</span><span class="n">setY</span><span class="p">(</span><span class="mi">0</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">bottomLeftPoint</span><span class="p">.</span><span class="n">setX</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
<a name="line-282"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomLeftPoint</span><span class="p">.</span><span class="n">setY</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">height</span><span class="o">-</span><span class="mi">1</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">bottomRightPoint</span><span class="p">.</span><span class="n">setX</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span><span class="o">-</span><span class="mi">1</span><span class="p">);</span>
<a name="line-285"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomRightPoint</span><span class="p">.</span><span class="n">setY</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">height</span><span class="o">-</span><span class="mi">1</span><span class="p">);</span>
<a name="line-286"></a>
<a name="line-287"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">spot</span><span class="p">.</span><span class="n">setX</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span> <span class="o">/</span> <span class="mi">2</span><span class="p">);</span>
<a name="line-288"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">spot</span><span class="p">.</span><span class="n">setY</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">height</span> <span class="o">/</span> <span class="mi">2</span><span class="p">);</span>
<a name="line-289"></a>
<a name="line-290"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">antiAliasing</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-291"></a> <span class="n">updatePixmap</span><span class="p">();</span>
<a name="line-292"></a> <span class="n">update</span><span class="p">();</span>
<a name="line-293"></a><span class="p">}</span>
<a name="line-294"></a>
<a name="line-295"></a><span class="kt">void</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">applyPerspectiveAdjustment</span><span class="p">()</span>
<a name="line-296"></a><span class="p">{</span>
<a name="line-297"></a> <span class="n">DImg</span><span class="o">*</span> <span class="k">const</span> <span class="n">orgImage</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">original</span><span class="p">();</span>
<a name="line-298"></a>
<a name="line-299"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">orgImage</span><span class="p">)</span> <span class="k">return</span><span class="p">;</span>
<a name="line-300"></a>
<a name="line-301"></a> <span class="n">DImg</span> <span class="nf">destImage</span><span class="p">(</span><span class="n">orgImage</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">(),</span> <span class="n">orgImage</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">(),</span> <span class="n">orgImage</span><span class="o">-&gt;</span><span class="n">sixteenBit</span><span class="p">(),</span> <span class="n">orgImage</span><span class="o">-&gt;</span><span class="n">hasAlpha</span><span class="p">());</span>
<a name="line-302"></a>
<a name="line-303"></a> <span class="n">DColor</span> <span class="nf">background</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">0</span><span class="p">,</span> <span class="n">orgImage</span><span class="o">-&gt;</span><span class="n">hasAlpha</span><span class="p">()</span> <span class="o">?</span> <span class="mi">0</span> <span class="o">:</span> <span class="mi">255</span><span class="p">,</span> <span class="n">orgImage</span><span class="o">-&gt;</span><span class="n">sixteenBit</span><span class="p">());</span>
<a name="line-304"></a>
<a name="line-305"></a> <span class="c1">// Perform perspective adjustment.</span>
<a name="line-306"></a>
<a name="line-307"></a> <span class="n">buildPerspective</span><span class="p">(</span><span class="n">QPoint</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">QPoint</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">origW</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">origH</span><span class="p">),</span>
<a name="line-308"></a> <span class="n">getTopLeftCorner</span><span class="p">(),</span> <span class="n">getTopRightCorner</span><span class="p">(),</span>
<a name="line-309"></a> <span class="n">getBottomLeftCorner</span><span class="p">(),</span> <span class="n">getBottomRightCorner</span><span class="p">(),</span>
<a name="line-310"></a> <span class="n">orgImage</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">destImage</span><span class="p">,</span> <span class="n">background</span><span class="p">);</span>
<a name="line-311"></a>
<a name="line-312"></a> <span class="c1">// Perform an auto-cropping around the image.</span>
<a name="line-313"></a>
<a name="line-314"></a> <span class="n">DImg</span> <span class="n">targetImg</span> <span class="o">=</span> <span class="n">destImage</span><span class="p">.</span><span class="n">copy</span><span class="p">(</span><span class="n">getTargetSize</span><span class="p">());</span>
<a name="line-315"></a>
<a name="line-316"></a> <span class="n">FilterAction</span> <span class="nf">action</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;digikam:PerspectiveAdjustment&quot;</span><span class="p">),</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-317"></a> <span class="n">action</span><span class="p">.</span><span class="n">setDisplayableName</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Perspective Adjustment Tool&quot;</span><span class="p">));</span>
<a name="line-318"></a>
<a name="line-319"></a> <span class="n">action</span><span class="p">.</span><span class="n">addParameter</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;topLeftPointX&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftPoint</span><span class="p">.</span><span class="n">x</span><span class="p">());</span>
<a name="line-320"></a> <span class="n">action</span><span class="p">.</span><span class="n">addParameter</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;topLeftPointY&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftPoint</span><span class="p">.</span><span class="n">y</span><span class="p">());</span>
<a name="line-321"></a> <span class="n">action</span><span class="p">.</span><span class="n">addParameter</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;topRightPointX&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topRightPoint</span><span class="p">.</span><span class="n">x</span><span class="p">());</span>
<a name="line-322"></a> <span class="n">action</span><span class="p">.</span><span class="n">addParameter</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;topRightPointY&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topRightPoint</span><span class="p">.</span><span class="n">y</span><span class="p">());</span>
<a name="line-323"></a>
<a name="line-324"></a> <span class="n">action</span><span class="p">.</span><span class="n">addParameter</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;bottomLeftPointX&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomLeftPoint</span><span class="p">.</span><span class="n">x</span><span class="p">());</span>
<a name="line-325"></a> <span class="n">action</span><span class="p">.</span><span class="n">addParameter</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;bottomLeftPointY&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomLeftPoint</span><span class="p">.</span><span class="n">y</span><span class="p">());</span>
<a name="line-326"></a> <span class="n">action</span><span class="p">.</span><span class="n">addParameter</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;bottomRightPointX&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomRightPoint</span><span class="p">.</span><span class="n">x</span><span class="p">());</span>
<a name="line-327"></a> <span class="n">action</span><span class="p">.</span><span class="n">addParameter</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;bottomRightPointY&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomRightPoint</span><span class="p">.</span><span class="n">y</span><span class="p">());</span>
<a name="line-328"></a>
<a name="line-329"></a> <span class="n">action</span><span class="p">.</span><span class="n">addParameter</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;spotX&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">spot</span><span class="p">.</span><span class="n">x</span><span class="p">());</span>
<a name="line-330"></a> <span class="n">action</span><span class="p">.</span><span class="n">addParameter</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;spotY&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">spot</span><span class="p">.</span><span class="n">y</span><span class="p">());</span>
<a name="line-331"></a>
<a name="line-332"></a> <span class="n">action</span><span class="p">.</span><span class="n">addParameter</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;antiAliasing&quot;</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">antiAliasing</span><span class="p">);</span>
<a name="line-333"></a> <span class="c1">// Update target image.</span>
<a name="line-334"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">iface</span><span class="o">-&gt;</span><span class="n">setOriginal</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Perspective Adjustment&quot;</span><span class="p">),</span> <span class="n">action</span><span class="p">,</span> <span class="n">targetImg</span><span class="p">);</span>
<a name="line-335"></a><span class="p">}</span>
<a name="line-336"></a>
<a name="line-337"></a><span class="kt">void</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">slotInverseTransformationChanged</span><span class="p">(</span><span class="kt">bool</span> <span class="n">isEnabled</span><span class="p">)</span>
<a name="line-338"></a><span class="p">{</span>
<a name="line-339"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">inverseTransformation</span> <span class="o">=</span> <span class="n">isEnabled</span><span class="p">;</span>
<a name="line-340"></a> <span class="n">updatePixmap</span><span class="p">();</span>
<a name="line-341"></a> <span class="n">update</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="kt">void</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">slotToggleAntiAliasing</span><span class="p">(</span><span class="kt">bool</span> <span class="n">a</span><span class="p">)</span>
<a name="line-345"></a><span class="p">{</span>
<a name="line-346"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">antiAliasing</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
<a name="line-347"></a> <span class="n">updatePixmap</span><span class="p">();</span>
<a name="line-348"></a> <span class="n">update</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">void</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">slotToggleDrawWhileMoving</span><span class="p">(</span><span class="kt">bool</span> <span class="n">draw</span><span class="p">)</span>
<a name="line-352"></a><span class="p">{</span>
<a name="line-353"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">drawWhileMoving</span> <span class="o">=</span> <span class="n">draw</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="kt">void</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">slotToggleDrawGrid</span><span class="p">(</span><span class="kt">bool</span> <span class="n">grid</span><span class="p">)</span>
<a name="line-357"></a><span class="p">{</span>
<a name="line-358"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">drawGrid</span> <span class="o">=</span> <span class="n">grid</span><span class="p">;</span>
<a name="line-359"></a> <span class="n">updatePixmap</span><span class="p">();</span>
<a name="line-360"></a> <span class="n">update</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="kt">void</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">slotChangeGuideColor</span><span class="p">(</span><span class="k">const</span> <span class="n">QColor</span><span class="o">&amp;</span> <span class="n">color</span><span class="p">)</span>
<a name="line-364"></a><span class="p">{</span>
<a name="line-365"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">guideColor</span> <span class="o">=</span> <span class="n">color</span><span class="p">;</span>
<a name="line-366"></a> <span class="n">updatePixmap</span><span class="p">();</span>
<a name="line-367"></a> <span class="n">update</span><span class="p">();</span>
<a name="line-368"></a><span class="p">}</span>
<a name="line-369"></a>
<a name="line-370"></a><span class="kt">void</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">slotChangeGuideSize</span><span class="p">(</span><span class="kt">int</span> <span class="n">size</span><span class="p">)</span>
<a name="line-371"></a><span class="p">{</span>
<a name="line-372"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">guideSize</span> <span class="o">=</span> <span class="n">size</span><span class="p">;</span>
<a name="line-373"></a> <span class="n">updatePixmap</span><span class="p">();</span>
<a name="line-374"></a> <span class="n">update</span><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="kt">void</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">setBackgroundColor</span><span class="p">(</span><span class="k">const</span> <span class="n">QColor</span><span class="o">&amp;</span> <span class="n">bg</span><span class="p">)</span>
<a name="line-378"></a><span class="p">{</span>
<a name="line-379"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bgColor</span> <span class="o">=</span> <span class="n">bg</span><span class="p">;</span>
<a name="line-380"></a> <span class="n">updatePixmap</span><span class="p">();</span>
<a name="line-381"></a> <span class="n">update</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="kt">void</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">updatePixmap</span><span class="p">()</span>
<a name="line-385"></a><span class="p">{</span>
<a name="line-386"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftCorner</span><span class="p">.</span><span class="n">setRect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftPoint</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">().</span><span class="n">x</span><span class="p">(),</span>
<a name="line-387"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftPoint</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">().</span><span class="n">y</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-388"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topRightCorner</span><span class="p">.</span><span class="n">setRect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">topRightPoint</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">-</span> <span class="mi">7</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">().</span><span class="n">x</span><span class="p">(),</span>
<a name="line-389"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topRightPoint</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">().</span><span class="n">y</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-390"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomLeftCorner</span><span class="p">.</span><span class="n">setRect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomLeftPoint</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">().</span><span class="n">x</span><span class="p">(),</span>
<a name="line-391"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomLeftPoint</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">-</span> <span class="mi">7</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">().</span><span class="n">y</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-392"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomRightCorner</span><span class="p">.</span><span class="n">setRect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomRightPoint</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">-</span> <span class="mi">7</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">().</span><span class="n">x</span><span class="p">(),</span>
<a name="line-393"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomRightPoint</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">-</span> <span class="mi">7</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">().</span><span class="n">y</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-394"></a>
<a name="line-395"></a> <span class="c1">// Compute the grid array</span>
<a name="line-396"></a>
<a name="line-397"></a> <span class="kt">int</span> <span class="n">gXS</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span> <span class="o">/</span> <span class="mi">15</span><span class="p">;</span>
<a name="line-398"></a> <span class="kt">int</span> <span class="n">gYS</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">height</span> <span class="o">/</span> <span class="mi">15</span><span class="p">;</span>
<a name="line-399"></a>
<a name="line-400"></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">15</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-401"></a> <span class="p">{</span>
<a name="line-402"></a> <span class="kt">int</span> <span class="n">j</span> <span class="o">=</span> <span class="n">i</span><span class="o">*</span><span class="mi">4</span><span class="p">;</span>
<a name="line-403"></a>
<a name="line-404"></a> <span class="c1">// Horizontal line.</span>
<a name="line-405"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">grid</span><span class="p">.</span><span class="n">setPoint</span><span class="p">(</span><span class="n">j</span> <span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">i</span><span class="o">*</span><span class="n">gYS</span><span class="p">);</span>
<a name="line-406"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">grid</span><span class="p">.</span><span class="n">setPoint</span><span class="p">(</span><span class="n">j</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">,</span> <span class="n">i</span><span class="o">*</span><span class="n">gYS</span><span class="p">);</span>
<a name="line-407"></a>
<a name="line-408"></a> <span class="c1">// Vertical line.</span>
<a name="line-409"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">grid</span><span class="p">.</span><span class="n">setPoint</span><span class="p">(</span><span class="n">j</span><span class="o">+</span><span class="mi">2</span><span class="p">,</span> <span class="n">i</span><span class="o">*</span><span class="n">gXS</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<a name="line-410"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">grid</span><span class="p">.</span><span class="n">setPoint</span><span class="p">(</span><span class="n">j</span><span class="o">+</span><span class="mi">3</span><span class="p">,</span> <span class="n">i</span><span class="o">*</span><span class="n">gXS</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">height</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="c1">// Draw background</span>
<a name="line-414"></a>
<a name="line-415"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">pixmap</span><span class="o">-&gt;</span><span class="n">fill</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">bgColor</span><span class="p">);</span>
<a name="line-416"></a>
<a name="line-417"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">inverseTransformation</span><span class="p">)</span>
<a name="line-418"></a> <span class="p">{</span>
<a name="line-419"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">transformedCenter</span> <span class="o">=</span> <span class="n">buildPerspective</span><span class="p">(</span><span class="n">QPoint</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">QPoint</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">),</span>
<a name="line-420"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftPoint</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topRightPoint</span><span class="p">,</span>
<a name="line-421"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomLeftPoint</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomRightPoint</span><span class="p">);</span>
<a name="line-422"></a>
<a name="line-423"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">iface</span><span class="o">-&gt;</span><span class="n">setPreview</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">preview</span><span class="p">);</span>
<a name="line-424"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">iface</span><span class="o">-&gt;</span><span class="n">paint</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">pixmap</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">);</span>
<a name="line-425"></a> <span class="p">}</span>
<a name="line-426"></a> <span class="c1">// if we are resizing with the mouse, compute and draw only if drawWhileMoving is set</span>
<a name="line-427"></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">currentResizing</span> <span class="o">==</span> <span class="n">Private</span><span class="o">::</span><span class="n">ResizingNone</span> <span class="o">||</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">drawWhileMoving</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
<a name="line-428"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">validPerspective</span><span class="p">)</span>
<a name="line-429"></a> <span class="p">{</span>
<a name="line-430"></a> <span class="c1">// Create preview image</span>
<a name="line-431"></a>
<a name="line-432"></a> <span class="n">DImg</span> <span class="n">destImage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">preview</span><span class="p">.</span><span class="n">width</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">preview</span><span class="p">.</span><span class="n">height</span><span class="p">(),</span>
<a name="line-433"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">preview</span><span class="p">.</span><span class="n">sixteenBit</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">preview</span><span class="p">.</span><span class="n">hasAlpha</span><span class="p">());</span>
<a name="line-434"></a>
<a name="line-435"></a> <span class="n">DColor</span> <span class="nf">background</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">bgColor</span><span class="p">);</span>
<a name="line-436"></a>
<a name="line-437"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">transformedCenter</span> <span class="o">=</span> <span class="n">buildPerspective</span><span class="p">(</span><span class="n">QPoint</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">QPoint</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">),</span>
<a name="line-438"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftPoint</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topRightPoint</span><span class="p">,</span>
<a name="line-439"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomLeftPoint</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomRightPoint</span><span class="p">,</span>
<a name="line-440"></a> <span class="o">&amp;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">preview</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">destImage</span><span class="p">,</span> <span class="n">background</span><span class="p">);</span>
<a name="line-441"></a>
<a name="line-442"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">iface</span><span class="o">-&gt;</span><span class="n">setPreview</span><span class="p">(</span><span class="n">destImage</span><span class="p">);</span>
<a name="line-443"></a>
<a name="line-444"></a> <span class="c1">// Draw image</span>
<a name="line-445"></a>
<a name="line-446"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">iface</span><span class="o">-&gt;</span><span class="n">paint</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">pixmap</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">);</span>
<a name="line-447"></a> <span class="p">}</span>
<a name="line-448"></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">validPerspective</span><span class="p">)</span>
<a name="line-449"></a> <span class="p">{</span>
<a name="line-450"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">transformedCenter</span> <span class="o">=</span> <span class="n">buildPerspective</span><span class="p">(</span><span class="n">QPoint</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">QPoint</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">),</span>
<a name="line-451"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftPoint</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topRightPoint</span><span class="p">,</span>
<a name="line-452"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomLeftPoint</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomRightPoint</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="c1">// Drawing selection borders.</span>
<a name="line-456"></a>
<a name="line-457"></a> <span class="n">QPainter</span> <span class="n">p</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">pixmap</span><span class="p">);</span>
<a name="line-458"></a> <span class="n">p</span><span class="p">.</span><span class="n">setPen</span><span class="p">(</span><span class="n">QPen</span><span class="p">(</span><span class="n">QColor</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">64</span><span class="p">,</span> <span class="mi">64</span><span class="p">),</span> <span class="mi">1</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">SolidLine</span><span class="p">));</span>
<a name="line-459"></a> <span class="n">p</span><span class="p">.</span><span class="n">drawLine</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftPoint</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topRightPoint</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">());</span>
<a name="line-460"></a> <span class="n">p</span><span class="p">.</span><span class="n">drawLine</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">topRightPoint</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomRightPoint</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">());</span>
<a name="line-461"></a> <span class="n">p</span><span class="p">.</span><span class="n">drawLine</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomRightPoint</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomLeftPoint</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">());</span>
<a name="line-462"></a> <span class="n">p</span><span class="p">.</span><span class="n">drawLine</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomLeftPoint</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftPoint</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">());</span>
<a name="line-463"></a>
<a name="line-464"></a> <span class="c1">// Drawing selection corners.</span>
<a name="line-465"></a>
<a name="line-466"></a> <span class="n">QBrush</span> <span class="nf">brush</span><span class="p">(</span><span class="n">QColor</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">64</span><span class="p">,</span> <span class="mi">64</span><span class="p">));</span>
<a name="line-467"></a> <span class="n">p</span><span class="p">.</span><span class="n">fillRect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftCorner</span><span class="p">,</span> <span class="n">brush</span><span class="p">);</span>
<a name="line-468"></a> <span class="n">p</span><span class="p">.</span><span class="n">fillRect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">topRightCorner</span><span class="p">,</span> <span class="n">brush</span><span class="p">);</span>
<a name="line-469"></a> <span class="n">p</span><span class="p">.</span><span class="n">fillRect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomLeftCorner</span><span class="p">,</span> <span class="n">brush</span><span class="p">);</span>
<a name="line-470"></a> <span class="n">p</span><span class="p">.</span><span class="n">fillRect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomRightCorner</span><span class="p">,</span> <span class="n">brush</span><span class="p">);</span>
<a name="line-471"></a>
<a name="line-472"></a> <span class="c1">// Drawing the grid.</span>
<a name="line-473"></a>
<a name="line-474"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">drawGrid</span><span class="p">)</span>
<a name="line-475"></a> <span class="p">{</span>
<a name="line-476"></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">grid</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="p">;</span> <span class="n">i</span> <span class="o">+=</span> <span class="mi">4</span><span class="p">)</span>
<a name="line-477"></a> <span class="p">{</span>
<a name="line-478"></a> <span class="c1">// Horizontal line.</span>
<a name="line-479"></a> <span class="n">p</span><span class="p">.</span><span class="n">drawLine</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">grid</span><span class="p">.</span><span class="n">point</span><span class="p">(</span><span class="n">i</span><span class="p">)</span><span class="o">+</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">grid</span><span class="p">.</span><span class="n">point</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="o">+</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">());</span>
<a name="line-480"></a>
<a name="line-481"></a> <span class="c1">// Vertical line.</span>
<a name="line-482"></a> <span class="n">p</span><span class="p">.</span><span class="n">drawLine</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">grid</span><span class="p">.</span><span class="n">point</span><span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">2</span><span class="p">)</span><span class="o">+</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">grid</span><span class="p">.</span><span class="n">point</span><span class="p">(</span><span class="n">i</span><span class="o">+</span><span class="mi">3</span><span class="p">)</span><span class="o">+</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">());</span>
<a name="line-483"></a> <span class="p">}</span>
<a name="line-484"></a> <span class="p">}</span>
<a name="line-485"></a>
<a name="line-486"></a> <span class="c1">// Drawing transformed center.</span>
<a name="line-487"></a>
<a name="line-488"></a> <span class="n">p</span><span class="p">.</span><span class="n">setPen</span><span class="p">(</span><span class="n">QPen</span><span class="p">(</span><span class="n">QColor</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">64</span><span class="p">,</span> <span class="mi">64</span><span class="p">),</span> <span class="mi">3</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">SolidLine</span><span class="p">));</span>
<a name="line-489"></a> <span class="n">p</span><span class="p">.</span><span class="n">drawEllipse</span><span class="p">(</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">transformedCenter</span><span class="p">.</span><span class="n">x</span><span class="p">()</span><span class="o">+</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">().</span><span class="n">x</span><span class="p">()</span><span class="o">-</span><span class="mi">2</span><span class="p">,</span>
<a name="line-490"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">transformedCenter</span><span class="p">.</span><span class="n">y</span><span class="p">()</span><span class="o">+</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">().</span><span class="n">y</span><span class="p">()</span><span class="o">-</span><span class="mi">2</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">4</span> <span class="p">);</span>
<a name="line-491"></a>
<a name="line-492"></a> <span class="c1">// Drawing vertical and horizontal guide lines.</span>
<a name="line-493"></a>
<a name="line-494"></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">inverseTransformation</span><span class="p">)</span>
<a name="line-495"></a> <span class="p">{</span>
<a name="line-496"></a> <span class="kt">int</span> <span class="n">xspot</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">spot</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">();</span>
<a name="line-497"></a> <span class="kt">int</span> <span class="n">yspot</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">spot</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">();</span>
<a name="line-498"></a> <span class="n">p</span><span class="p">.</span><span class="n">setPen</span><span class="p">(</span><span class="n">QPen</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">white</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">guideSize</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">SolidLine</span><span class="p">));</span>
<a name="line-499"></a> <span class="n">p</span><span class="p">.</span><span class="n">drawLine</span><span class="p">(</span><span class="n">xspot</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">top</span><span class="p">(),</span> <span class="n">xspot</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">bottom</span><span class="p">());</span>
<a name="line-500"></a> <span class="n">p</span><span class="p">.</span><span class="n">drawLine</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">left</span><span class="p">(),</span> <span class="n">yspot</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">right</span><span class="p">(),</span> <span class="n">yspot</span><span class="p">);</span>
<a name="line-501"></a> <span class="n">p</span><span class="p">.</span><span class="n">setPen</span><span class="p">(</span><span class="n">QPen</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">guideColor</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">guideSize</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DotLine</span><span class="p">));</span>
<a name="line-502"></a> <span class="n">p</span><span class="p">.</span><span class="n">drawLine</span><span class="p">(</span><span class="n">xspot</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">top</span><span class="p">(),</span> <span class="n">xspot</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">bottom</span><span class="p">());</span>
<a name="line-503"></a> <span class="n">p</span><span class="p">.</span><span class="n">drawLine</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">left</span><span class="p">(),</span> <span class="n">yspot</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">right</span><span class="p">(),</span> <span class="n">yspot</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">p</span><span class="p">.</span><span class="n">end</span><span class="p">();</span>
<a name="line-507"></a>
<a name="line-508"></a> <span class="n">emit</span> <span class="nf">signalPerspectiveChanged</span><span class="p">(</span><span class="n">getTargetSize</span><span class="p">(),</span> <span class="n">getAngleTopLeft</span><span class="p">(),</span> <span class="n">getAngleTopRight</span><span class="p">(),</span>
<a name="line-509"></a> <span class="n">getAngleBottomLeft</span><span class="p">(),</span> <span class="n">getAngleBottomRight</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">validPerspective</span><span class="p">);</span>
<a name="line-510"></a><span class="p">}</span>
<a name="line-511"></a>
<a name="line-512"></a><span class="n">QPoint</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">buildPerspective</span><span class="p">(</span><span class="k">const</span> <span class="n">QPoint</span><span class="o">&amp;</span> <span class="n">orignTopLeft</span><span class="p">,</span> <span class="k">const</span> <span class="n">QPoint</span><span class="o">&amp;</span> <span class="n">orignBottomRight</span><span class="p">,</span>
<a name="line-513"></a> <span class="k">const</span> <span class="n">QPoint</span><span class="o">&amp;</span> <span class="n">transTopLeft</span><span class="p">,</span> <span class="k">const</span> <span class="n">QPoint</span><span class="o">&amp;</span> <span class="n">transTopRight</span><span class="p">,</span>
<a name="line-514"></a> <span class="k">const</span> <span class="n">QPoint</span><span class="o">&amp;</span> <span class="n">transBottomLeft</span><span class="p">,</span> <span class="k">const</span> <span class="n">QPoint</span><span class="o">&amp;</span> <span class="n">transBottomRight</span><span class="p">,</span>
<a name="line-515"></a> <span class="n">DImg</span><span class="o">*</span> <span class="k">const</span> <span class="n">orgImage</span><span class="p">,</span> <span class="n">DImg</span><span class="o">*</span> <span class="k">const</span> <span class="n">destImage</span><span class="p">,</span>
<a name="line-516"></a> <span class="k">const</span> <span class="n">DColor</span><span class="o">&amp;</span> <span class="n">background</span><span class="p">)</span>
<a name="line-517"></a><span class="p">{</span>
<a name="line-518"></a> <span class="n">PerspectiveMatrix</span> <span class="n">matrix</span><span class="p">,</span> <span class="n">transform</span><span class="p">;</span>
<a name="line-519"></a> <span class="kt">double</span> <span class="n">scalex</span><span class="p">;</span>
<a name="line-520"></a> <span class="kt">double</span> <span class="n">scaley</span><span class="p">;</span>
<a name="line-521"></a>
<a name="line-522"></a> <span class="kt">double</span> <span class="n">x1</span> <span class="o">=</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">orignTopLeft</span><span class="p">.</span><span class="n">x</span><span class="p">();</span>
<a name="line-523"></a> <span class="kt">double</span> <span class="n">y1</span> <span class="o">=</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">orignTopLeft</span><span class="p">.</span><span class="n">y</span><span class="p">();</span>
<a name="line-524"></a>
<a name="line-525"></a> <span class="kt">double</span> <span class="n">x2</span> <span class="o">=</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">orignBottomRight</span><span class="p">.</span><span class="n">x</span><span class="p">();</span>
<a name="line-526"></a> <span class="kt">double</span> <span class="n">y2</span> <span class="o">=</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">orignBottomRight</span><span class="p">.</span><span class="n">y</span><span class="p">();</span>
<a name="line-527"></a>
<a name="line-528"></a> <span class="kt">double</span> <span class="n">tx1</span> <span class="o">=</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">transTopLeft</span><span class="p">.</span><span class="n">x</span><span class="p">();</span>
<a name="line-529"></a> <span class="kt">double</span> <span class="n">ty1</span> <span class="o">=</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">transTopLeft</span><span class="p">.</span><span class="n">y</span><span class="p">();</span>
<a name="line-530"></a>
<a name="line-531"></a> <span class="kt">double</span> <span class="n">tx2</span> <span class="o">=</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">transTopRight</span><span class="p">.</span><span class="n">x</span><span class="p">();</span>
<a name="line-532"></a> <span class="kt">double</span> <span class="n">ty2</span> <span class="o">=</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">transTopRight</span><span class="p">.</span><span class="n">y</span><span class="p">();</span>
<a name="line-533"></a>
<a name="line-534"></a> <span class="kt">double</span> <span class="n">tx3</span> <span class="o">=</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">transBottomLeft</span><span class="p">.</span><span class="n">x</span><span class="p">();</span>
<a name="line-535"></a> <span class="kt">double</span> <span class="n">ty3</span> <span class="o">=</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">transBottomLeft</span><span class="p">.</span><span class="n">y</span><span class="p">();</span>
<a name="line-536"></a>
<a name="line-537"></a> <span class="kt">double</span> <span class="n">tx4</span> <span class="o">=</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">transBottomRight</span><span class="p">.</span><span class="n">x</span><span class="p">();</span>
<a name="line-538"></a> <span class="kt">double</span> <span class="n">ty4</span> <span class="o">=</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">transBottomRight</span><span class="p">.</span><span class="n">y</span><span class="p">();</span>
<a name="line-539"></a>
<a name="line-540"></a> <span class="n">scalex</span> <span class="o">=</span> <span class="n">scaley</span> <span class="o">=</span> <span class="mf">1.0</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">x2</span> <span class="o">-</span> <span class="n">x1</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-543"></a> <span class="p">{</span>
<a name="line-544"></a> <span class="n">scalex</span> <span class="o">=</span> <span class="mf">1.0</span> <span class="o">/</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span> <span class="p">(</span><span class="n">x2</span> <span class="o">-</span> <span class="n">x1</span><span class="p">);</span>
<a name="line-545"></a> <span class="p">}</span>
<a name="line-546"></a>
<a name="line-547"></a> <span class="k">if</span> <span class="p">((</span><span class="n">y2</span> <span class="o">-</span> <span class="n">y1</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-548"></a> <span class="p">{</span>
<a name="line-549"></a> <span class="n">scaley</span> <span class="o">=</span> <span class="mf">1.0</span> <span class="o">/</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span> <span class="p">(</span><span class="n">y2</span> <span class="o">-</span> <span class="n">y1</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="c1">// Determine the perspective transform that maps from</span>
<a name="line-553"></a> <span class="c1">// the unit cube to the transformed coordinates</span>
<a name="line-554"></a>
<a name="line-555"></a> <span class="kt">double</span> <span class="n">dx1</span><span class="p">,</span> <span class="n">dx2</span><span class="p">,</span> <span class="n">dx3</span><span class="p">,</span> <span class="n">dy1</span><span class="p">,</span> <span class="n">dy2</span><span class="p">,</span> <span class="n">dy3</span><span class="p">;</span>
<a name="line-556"></a>
<a name="line-557"></a> <span class="n">dx1</span> <span class="o">=</span> <span class="n">tx2</span> <span class="o">-</span> <span class="n">tx4</span><span class="p">;</span>
<a name="line-558"></a> <span class="n">dx2</span> <span class="o">=</span> <span class="n">tx3</span> <span class="o">-</span> <span class="n">tx4</span><span class="p">;</span>
<a name="line-559"></a> <span class="n">dx3</span> <span class="o">=</span> <span class="n">tx1</span> <span class="o">-</span> <span class="n">tx2</span> <span class="o">+</span> <span class="n">tx4</span> <span class="o">-</span> <span class="n">tx3</span><span class="p">;</span>
<a name="line-560"></a>
<a name="line-561"></a> <span class="n">dy1</span> <span class="o">=</span> <span class="n">ty2</span> <span class="o">-</span> <span class="n">ty4</span><span class="p">;</span>
<a name="line-562"></a> <span class="n">dy2</span> <span class="o">=</span> <span class="n">ty3</span> <span class="o">-</span> <span class="n">ty4</span><span class="p">;</span>
<a name="line-563"></a> <span class="n">dy3</span> <span class="o">=</span> <span class="n">ty1</span> <span class="o">-</span> <span class="n">ty2</span> <span class="o">+</span> <span class="n">ty4</span> <span class="o">-</span> <span class="n">ty3</span><span class="p">;</span>
<a name="line-564"></a>
<a name="line-565"></a> <span class="c1">// Is the mapping affine?</span>
<a name="line-566"></a>
<a name="line-567"></a> <span class="k">if</span> <span class="p">((</span><span class="n">dx3</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">dy3</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">))</span>
<a name="line-568"></a> <span class="p">{</span>
<a name="line-569"></a> <span class="n">matrix</span><span class="p">.</span><span class="n">coeff</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">tx2</span> <span class="o">-</span> <span class="n">tx1</span><span class="p">;</span>
<a name="line-570"></a> <span class="n">matrix</span><span class="p">.</span><span class="n">coeff</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">tx4</span> <span class="o">-</span> <span class="n">tx2</span><span class="p">;</span>
<a name="line-571"></a> <span class="n">matrix</span><span class="p">.</span><span class="n">coeff</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">tx1</span><span class="p">;</span>
<a name="line-572"></a> <span class="n">matrix</span><span class="p">.</span><span class="n">coeff</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">ty2</span> <span class="o">-</span> <span class="n">ty1</span><span class="p">;</span>
<a name="line-573"></a> <span class="n">matrix</span><span class="p">.</span><span class="n">coeff</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">ty4</span> <span class="o">-</span> <span class="n">ty2</span><span class="p">;</span>
<a name="line-574"></a> <span class="n">matrix</span><span class="p">.</span><span class="n">coeff</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">ty1</span><span class="p">;</span>
<a name="line-575"></a> <span class="n">matrix</span><span class="p">.</span><span class="n">coeff</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="mf">0.0</span><span class="p">;</span>
<a name="line-576"></a> <span class="n">matrix</span><span class="p">.</span><span class="n">coeff</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="mf">0.0</span><span class="p">;</span>
<a name="line-577"></a> <span class="p">}</span>
<a name="line-578"></a> <span class="k">else</span>
<a name="line-579"></a> <span class="p">{</span>
<a name="line-580"></a> <span class="kt">double</span> <span class="n">det1</span><span class="p">,</span> <span class="n">det2</span><span class="p">;</span>
<a name="line-581"></a>
<a name="line-582"></a> <span class="n">det1</span> <span class="o">=</span> <span class="n">dx3</span> <span class="o">*</span> <span class="n">dy2</span> <span class="o">-</span> <span class="n">dy3</span> <span class="o">*</span> <span class="n">dx2</span><span class="p">;</span>
<a name="line-583"></a> <span class="n">det2</span> <span class="o">=</span> <span class="n">dx1</span> <span class="o">*</span> <span class="n">dy2</span> <span class="o">-</span> <span class="n">dy1</span> <span class="o">*</span> <span class="n">dx2</span><span class="p">;</span>
<a name="line-584"></a>
<a name="line-585"></a> <span class="k">if</span> <span class="p">(</span><span class="n">det1</span> <span class="o">==</span> <span class="mf">0.0</span> <span class="o">&amp;&amp;</span> <span class="n">det2</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">)</span>
<a name="line-586"></a> <span class="p">{</span>
<a name="line-587"></a> <span class="n">matrix</span><span class="p">.</span><span class="n">coeff</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="mf">1.0</span><span class="p">;</span>
<a name="line-588"></a> <span class="p">}</span>
<a name="line-589"></a> <span class="k">else</span>
<a name="line-590"></a> <span class="p">{</span>
<a name="line-591"></a> <span class="n">matrix</span><span class="p">.</span><span class="n">coeff</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">det1</span> <span class="o">/</span> <span class="n">det2</span><span class="p">;</span>
<a name="line-592"></a> <span class="p">}</span>
<a name="line-593"></a>
<a name="line-594"></a> <span class="n">det1</span> <span class="o">=</span> <span class="n">dx1</span> <span class="o">*</span> <span class="n">dy3</span> <span class="o">-</span> <span class="n">dy1</span> <span class="o">*</span> <span class="n">dx3</span><span class="p">;</span>
<a name="line-595"></a>
<a name="line-596"></a> <span class="k">if</span> <span class="p">(</span><span class="n">det1</span> <span class="o">==</span> <span class="mf">0.0</span> <span class="o">&amp;&amp;</span> <span class="n">det2</span> <span class="o">==</span> <span class="mf">0.0</span><span class="p">)</span>
<a name="line-597"></a> <span class="p">{</span>
<a name="line-598"></a> <span class="n">matrix</span><span class="p">.</span><span class="n">coeff</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="mf">1.0</span><span class="p">;</span>
<a name="line-599"></a> <span class="p">}</span>
<a name="line-600"></a> <span class="k">else</span>
<a name="line-601"></a> <span class="p">{</span>
<a name="line-602"></a> <span class="n">matrix</span><span class="p">.</span><span class="n">coeff</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">det1</span> <span class="o">/</span> <span class="n">det2</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">matrix</span><span class="p">.</span><span class="n">coeff</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">tx2</span> <span class="o">-</span> <span class="n">tx1</span> <span class="o">+</span> <span class="n">matrix</span><span class="p">.</span><span class="n">coeff</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">tx2</span><span class="p">;</span>
<a name="line-606"></a> <span class="n">matrix</span><span class="p">.</span><span class="n">coeff</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">tx3</span> <span class="o">-</span> <span class="n">tx1</span> <span class="o">+</span> <span class="n">matrix</span><span class="p">.</span><span class="n">coeff</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">tx3</span><span class="p">;</span>
<a name="line-607"></a> <span class="n">matrix</span><span class="p">.</span><span class="n">coeff</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">tx1</span><span class="p">;</span>
<a name="line-608"></a>
<a name="line-609"></a> <span class="n">matrix</span><span class="p">.</span><span class="n">coeff</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">ty2</span> <span class="o">-</span> <span class="n">ty1</span> <span class="o">+</span> <span class="n">matrix</span><span class="p">.</span><span class="n">coeff</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">ty2</span><span class="p">;</span>
<a name="line-610"></a> <span class="n">matrix</span><span class="p">.</span><span class="n">coeff</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">ty3</span> <span class="o">-</span> <span class="n">ty1</span> <span class="o">+</span> <span class="n">matrix</span><span class="p">.</span><span class="n">coeff</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">ty3</span><span class="p">;</span>
<a name="line-611"></a> <span class="n">matrix</span><span class="p">.</span><span class="n">coeff</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">ty1</span><span class="p">;</span>
<a name="line-612"></a> <span class="p">}</span>
<a name="line-613"></a>
<a name="line-614"></a> <span class="n">matrix</span><span class="p">.</span><span class="n">coeff</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="mf">1.0</span><span class="p">;</span>
<a name="line-615"></a>
<a name="line-616"></a> <span class="c1">// transform is initialized to the identity matrix</span>
<a name="line-617"></a> <span class="n">transform</span><span class="p">.</span><span class="n">translate</span><span class="p">(</span><span class="o">-</span><span class="n">x1</span><span class="p">,</span> <span class="o">-</span><span class="n">y1</span><span class="p">);</span>
<a name="line-618"></a> <span class="n">transform</span><span class="p">.</span><span class="n">scale</span> <span class="p">(</span><span class="n">scalex</span><span class="p">,</span> <span class="n">scaley</span><span class="p">);</span>
<a name="line-619"></a> <span class="n">transform</span><span class="p">.</span><span class="n">multiply</span> <span class="p">(</span><span class="n">matrix</span><span class="p">);</span>
<a name="line-620"></a>
<a name="line-621"></a> <span class="k">if</span> <span class="p">(</span><span class="n">orgImage</span> <span class="o">&amp;&amp;</span> <span class="n">destImage</span><span class="p">)</span>
<a name="line-622"></a> <span class="p">{</span>
<a name="line-623"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">inverseTransformation</span><span class="p">)</span>
<a name="line-624"></a> <span class="p">{</span>
<a name="line-625"></a> <span class="n">PerspectiveMatrix</span> <span class="n">inverseTransform</span> <span class="o">=</span> <span class="n">transform</span><span class="p">;</span>
<a name="line-626"></a> <span class="n">inverseTransform</span><span class="p">.</span><span class="n">invert</span><span class="p">();</span>
<a name="line-627"></a>
<a name="line-628"></a> <span class="c1">//Transform the matrix so it puts the result into the getTargetSize() rectangle</span>
<a name="line-629"></a> <span class="n">PerspectiveMatrix</span> <span class="n">transformIntoBounds</span><span class="p">;</span>
<a name="line-630"></a> <span class="n">transformIntoBounds</span><span class="p">.</span><span class="n">scale</span><span class="p">(</span><span class="kt">double</span><span class="p">(</span><span class="n">getTargetSize</span><span class="p">().</span><span class="n">width</span><span class="p">())</span> <span class="o">/</span> <span class="kt">double</span><span class="p">(</span><span class="n">orgImage</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">()),</span> <span class="kt">double</span><span class="p">(</span><span class="n">getTargetSize</span><span class="p">().</span><span class="n">height</span><span class="p">())</span> <span class="o">/</span> <span class="kt">double</span><span class="p">(</span><span class="n">orgImage</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">()));</span>
<a name="line-631"></a> <span class="n">transformIntoBounds</span><span class="p">.</span><span class="n">translate</span><span class="p">(</span><span class="n">getTargetSize</span><span class="p">().</span><span class="n">left</span><span class="p">(),</span> <span class="n">getTargetSize</span><span class="p">().</span><span class="n">top</span><span class="p">());</span>
<a name="line-632"></a> <span class="n">inverseTransform</span><span class="p">.</span><span class="n">multiply</span><span class="p">(</span><span class="n">transformIntoBounds</span><span class="p">);</span>
<a name="line-633"></a> <span class="n">transformAffine</span><span class="p">(</span><span class="n">orgImage</span><span class="p">,</span> <span class="n">destImage</span><span class="p">,</span> <span class="n">inverseTransform</span><span class="p">,</span> <span class="n">background</span><span class="p">);</span>
<a name="line-634"></a> <span class="p">}</span>
<a name="line-635"></a> <span class="k">else</span>
<a name="line-636"></a> <span class="p">{</span>
<a name="line-637"></a> <span class="c1">// Compute perspective transformation to image if image data containers exist.</span>
<a name="line-638"></a> <span class="n">transformAffine</span><span class="p">(</span><span class="n">orgImage</span><span class="p">,</span> <span class="n">destImage</span><span class="p">,</span> <span class="n">transform</span><span class="p">,</span> <span class="n">background</span><span class="p">);</span>
<a name="line-639"></a> <span class="p">}</span>
<a name="line-640"></a> <span class="p">}</span>
<a name="line-641"></a>
<a name="line-642"></a> <span class="c1">// Calculate the grid array points.</span>
<a name="line-643"></a> <span class="kt">double</span> <span class="n">newX</span><span class="p">,</span> <span class="n">newY</span><span class="p">;</span>
<a name="line-644"></a>
<a name="line-645"></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">grid</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-646"></a> <span class="p">{</span>
<a name="line-647"></a> <span class="n">transform</span><span class="p">.</span><span class="n">transformPoint</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">grid</span><span class="p">.</span><span class="n">point</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">x</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">grid</span><span class="p">.</span><span class="n">point</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">y</span><span class="p">(),</span> <span class="o">&amp;</span><span class="n">newX</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">newY</span><span class="p">);</span>
<a name="line-648"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">grid</span><span class="p">.</span><span class="n">setPoint</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">lround</span><span class="p">(</span><span class="n">newX</span><span class="p">),</span> <span class="n">lround</span><span class="p">(</span><span class="n">newY</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">// Calculate and return new image center.</span>
<a name="line-652"></a> <span class="kt">double</span> <span class="n">newCenterX</span><span class="p">,</span> <span class="n">newCenterY</span><span class="p">;</span>
<a name="line-653"></a> <span class="n">transform</span><span class="p">.</span><span class="n">transformPoint</span><span class="p">(</span><span class="n">x2</span><span class="o">/</span><span class="mf">2.0</span><span class="p">,</span> <span class="n">y2</span><span class="o">/</span><span class="mf">2.0</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">newCenterX</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">newCenterY</span><span class="p">);</span>
<a name="line-654"></a>
<a name="line-655"></a> <span class="k">return</span> <span class="nf">QPoint</span><span class="p">(</span><span class="n">lround</span><span class="p">(</span><span class="n">newCenterX</span><span class="p">),</span> <span class="n">lround</span><span class="p">(</span><span class="n">newCenterY</span><span class="p">));</span>
<a name="line-656"></a><span class="p">}</span>
<a name="line-657"></a>
<a name="line-658"></a><span class="kt">void</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">transformAffine</span><span class="p">(</span><span class="n">DImg</span><span class="o">*</span> <span class="k">const</span> <span class="n">orgImage</span><span class="p">,</span>
<a name="line-659"></a> <span class="n">DImg</span><span class="o">*</span> <span class="k">const</span> <span class="n">destImage</span><span class="p">,</span>
<a name="line-660"></a> <span class="k">const</span> <span class="n">PerspectiveMatrix</span><span class="o">&amp;</span> <span class="n">matrix</span><span class="p">,</span>
<a name="line-661"></a> <span class="k">const</span> <span class="n">DColor</span><span class="o">&amp;</span> <span class="n">background</span><span class="p">)</span>
<a name="line-662"></a><span class="p">{</span>
<a name="line-663"></a> <span class="n">PerspectiveMatrix</span> <span class="n">m</span><span class="p">(</span><span class="n">matrix</span><span class="p">);</span>
<a name="line-664"></a>
<a name="line-665"></a> <span class="kt">int</span> <span class="n">x1</span><span class="p">,</span> <span class="n">y1</span><span class="p">,</span> <span class="n">x2</span><span class="p">,</span> <span class="n">y2</span><span class="p">;</span> <span class="c1">// target bounding box</span>
<a name="line-666"></a> <span class="kt">int</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">;</span> <span class="c1">// target coordinates</span>
<a name="line-667"></a> <span class="kt">int</span> <span class="n">u1</span><span class="p">,</span> <span class="n">v1</span><span class="p">,</span> <span class="n">u2</span><span class="p">,</span> <span class="n">v2</span><span class="p">;</span> <span class="c1">// source bounding box</span>
<a name="line-668"></a> <span class="kt">double</span> <span class="n">uinc</span><span class="p">,</span> <span class="n">vinc</span><span class="p">,</span> <span class="n">winc</span><span class="p">;</span> <span class="c1">// increments in source coordinates</span>
<a name="line-669"></a> <span class="c1">// per horizontal target coordinate</span>
<a name="line-670"></a>
<a name="line-671"></a><span class="hll"> <span class="kt">double</span> <span class="n">u</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mf">0.0</span><span class="p">};</span> <span class="c1">// source coordinates,</span><span class='error2'>&lt;--- Shadowed declaration</span>
</span><a name="line-672"></a><span class="hll"> <span class="kt">double</span> <span class="n">v</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="mf">0.0</span><span class="p">};</span> <span class="c1">// 2</span><span class='error2'>&lt;--- Shadowed declaration</span>
</span><a name="line-673"></a> <span class="c1">// / \ 0 is sample in the center of pixel</span>
<a name="line-674"></a> <span class="c1">// 1 0 3 1..4 is offset 1 pixel in each</span>
<a name="line-675"></a> <span class="c1">// \ / direction (in target space)</span>
<a name="line-676"></a> <span class="c1">// 4</span>
<a name="line-677"></a>
<a name="line-678"></a> <span class="kt">double</span> <span class="n">tu</span><span class="p">[</span><span class="mi">5</span><span class="p">],</span> <span class="n">tv</span><span class="p">[</span><span class="mi">5</span><span class="p">],</span> <span class="n">tw</span><span class="p">[</span><span class="mi">5</span><span class="p">];</span> <span class="c1">// undivided source coordinates and divisor</span>
<a name="line-679"></a>
<a name="line-680"></a> <span class="n">uchar</span><span class="o">*</span> <span class="n">data</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-681"></a> <span class="n">uchar</span><span class="o">*</span> <span class="n">newData</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-682"></a> <span class="c1">// To prevent cppcheck warnings.</span>
<a name="line-683"></a> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">data</span><span class="p">;</span>
<a name="line-684"></a> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">newData</span><span class="p">;</span>
<a name="line-685"></a>
<a name="line-686"></a> <span class="kt">bool</span> <span class="n">sixteenBit</span><span class="p">;</span>
<a name="line-687"></a> <span class="kt">int</span> <span class="n">coords</span><span class="p">;</span>
<a name="line-688"></a> <span class="kt">int</span> <span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">;</span>
<a name="line-689"></a> <span class="kt">int</span> <span class="n">bytesDepth</span><span class="p">;</span>
<a name="line-690"></a> <span class="kt">int</span> <span class="n">offset</span><span class="p">;</span>
<a name="line-691"></a> <span class="n">uchar</span><span class="o">*</span> <span class="n">d2</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-692"></a> <span class="n">DColor</span> <span class="n">color</span><span class="p">;</span>
<a name="line-693"></a>
<a name="line-694"></a> <span class="n">bytesDepth</span> <span class="o">=</span> <span class="n">orgImage</span><span class="o">-&gt;</span><span class="n">bytesDepth</span><span class="p">();</span>
<a name="line-695"></a> <span class="n">data</span> <span class="o">=</span> <span class="n">orgImage</span><span class="o">-&gt;</span><span class="n">bits</span><span class="p">();</span>
<a name="line-696"></a> <span class="n">sixteenBit</span> <span class="o">=</span> <span class="n">orgImage</span><span class="o">-&gt;</span><span class="n">sixteenBit</span><span class="p">();</span>
<a name="line-697"></a> <span class="n">width</span> <span class="o">=</span> <span class="n">orgImage</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">();</span>
<a name="line-698"></a> <span class="n">height</span> <span class="o">=</span> <span class="n">orgImage</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">();</span>
<a name="line-699"></a> <span class="n">newData</span> <span class="o">=</span> <span class="n">destImage</span><span class="o">-&gt;</span><span class="n">bits</span><span class="p">();</span>
<a name="line-700"></a> <span class="n">DColor</span> <span class="n">bg</span> <span class="o">=</span> <span class="n">background</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="n">sixteenBit</span><span class="p">)</span>
<a name="line-703"></a> <span class="p">{</span>
<a name="line-704"></a> <span class="n">bg</span><span class="p">.</span><span class="n">convertToSixteenBit</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="c1">//destImage-&gt;fill(bg);</span>
<a name="line-708"></a>
<a name="line-709"></a> <span class="n">DPixelsAliasFilter</span> <span class="n">alias</span><span class="p">;</span>
<a name="line-710"></a>
<a name="line-711"></a> <span class="c1">// Find the inverse of the transformation matrix</span>
<a name="line-712"></a> <span class="n">m</span><span class="p">.</span><span class="n">invert</span><span class="p">();</span>
<a name="line-713"></a>
<a name="line-714"></a> <span class="n">u1</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-715"></a> <span class="n">v1</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-716"></a> <span class="n">u2</span> <span class="o">=</span> <span class="n">u1</span> <span class="o">+</span> <span class="n">width</span><span class="p">;</span>
<a name="line-717"></a> <span class="n">v2</span> <span class="o">=</span> <span class="n">v1</span> <span class="o">+</span> <span class="n">height</span><span class="p">;</span>
<a name="line-718"></a>
<a name="line-719"></a> <span class="n">x1</span> <span class="o">=</span> <span class="n">u1</span><span class="p">;</span>
<a name="line-720"></a> <span class="n">y1</span> <span class="o">=</span> <span class="n">v1</span><span class="p">;</span>
<a name="line-721"></a> <span class="n">x2</span> <span class="o">=</span> <span class="n">u2</span><span class="p">;</span>
<a name="line-722"></a> <span class="n">y2</span> <span class="o">=</span> <span class="n">v2</span><span class="p">;</span>
<a name="line-723"></a>
<a name="line-724"></a> <span class="n">QScopedArrayPointer</span><span class="o">&lt;</span><span class="n">uchar</span><span class="o">&gt;</span> <span class="n">dest</span><span class="p">(</span><span class="k">new</span> <span class="n">uchar</span><span class="p">[</span><span class="n">width</span> <span class="o">*</span> <span class="n">bytesDepth</span><span class="p">]);</span>
<a name="line-725"></a>
<a name="line-726"></a> <span class="n">uinc</span> <span class="o">=</span> <span class="n">m</span><span class="p">.</span><span class="n">coeff</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-727"></a> <span class="n">vinc</span> <span class="o">=</span> <span class="n">m</span><span class="p">.</span><span class="n">coeff</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-728"></a> <span class="n">winc</span> <span class="o">=</span> <span class="n">m</span><span class="p">.</span><span class="n">coeff</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-729"></a>
<a name="line-730"></a> <span class="n">coords</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<a name="line-731"></a>
<a name="line-732"></a> <span class="c1">// these loops could be rearranged, depending on which bit of code</span>
<a name="line-733"></a> <span class="c1">// you&#39;d most like to write more than once.</span>
<a name="line-734"></a>
<a name="line-735"></a> <span class="k">for</span> <span class="p">(</span><span class="n">y</span> <span class="o">=</span> <span class="n">y1</span> <span class="p">;</span> <span class="n">y</span> <span class="o">&lt;</span> <span class="n">y2</span> <span class="p">;</span> <span class="o">++</span><span class="n">y</span><span class="p">)</span>
<a name="line-736"></a> <span class="p">{</span>
<a name="line-737"></a> <span class="c1">// set up inverse transform steps</span>
<a name="line-738"></a>
<a name="line-739"></a> <span class="n">tu</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">uinc</span> <span class="o">*</span> <span class="p">(</span><span class="n">x1</span> <span class="o">+</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">+</span> <span class="n">m</span><span class="p">.</span><span class="n">coeff</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="p">(</span><span class="n">y</span> <span class="o">+</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">+</span> <span class="n">m</span><span class="p">.</span><span class="n">coeff</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="mf">0.5</span><span class="p">;</span>
<a name="line-740"></a> <span class="n">tv</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">vinc</span> <span class="o">*</span> <span class="p">(</span><span class="n">x1</span> <span class="o">+</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">+</span> <span class="n">m</span><span class="p">.</span><span class="n">coeff</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="p">(</span><span class="n">y</span> <span class="o">+</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">+</span> <span class="n">m</span><span class="p">.</span><span class="n">coeff</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="mf">0.5</span><span class="p">;</span>
<a name="line-741"></a> <span class="n">tw</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">winc</span> <span class="o">*</span> <span class="p">(</span><span class="n">x1</span> <span class="o">+</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">+</span> <span class="n">m</span><span class="p">.</span><span class="n">coeff</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="p">(</span><span class="n">y</span> <span class="o">+</span> <span class="mf">0.5</span><span class="p">)</span> <span class="o">+</span> <span class="n">m</span><span class="p">.</span><span class="n">coeff</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-742"></a>
<a name="line-743"></a> <span class="n">d2</span> <span class="o">=</span> <span class="n">dest</span><span class="p">.</span><span class="n">data</span><span class="p">();</span>
<a name="line-744"></a>
<a name="line-745"></a> <span class="k">for</span> <span class="p">(</span><span class="n">x</span> <span class="o">=</span> <span class="n">x1</span> <span class="p">;</span> <span class="n">x</span> <span class="o">&lt;</span> <span class="n">x2</span> <span class="p">;</span> <span class="o">++</span><span class="n">x</span><span class="p">)</span>
<a name="line-746"></a> <span class="p">{</span>
<a name="line-747"></a> <span class="kt">int</span> <span class="n">i</span><span class="p">;</span> <span class="c1">// normalize homogeneous coords</span>
<a name="line-748"></a>
<a name="line-749"></a> <span class="k">for</span> <span class="p">(</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">coords</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-750"></a> <span class="p">{</span>
<a name="line-751"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tw</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="p">)</span>
<a name="line-752"></a> <span class="p">{</span>
<a name="line-753"></a> <span class="n">u</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">tu</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
<a name="line-754"></a> <span class="n">v</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">tv</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
<a name="line-755"></a> <span class="p">}</span>
<a name="line-756"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">tw</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">!=</span> <span class="mf">0.0</span><span class="p">)</span>
<a name="line-757"></a> <span class="p">{</span>
<a name="line-758"></a> <span class="n">u</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">tu</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">/</span> <span class="n">tw</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
<a name="line-759"></a> <span class="n">v</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">=</span> <span class="n">tv</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">/</span> <span class="n">tw</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
<a name="line-760"></a> <span class="p">}</span>
<a name="line-761"></a> <span class="k">else</span>
<a name="line-762"></a> <span class="p">{</span>
<a name="line-763"></a> <span class="n">qCDebug</span><span class="p">(</span><span class="n">DIGIKAM_DPLUGIN_EDITOR_LOG</span><span class="p">)</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;homogeneous coordinate = 0...</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-764"></a> <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="c1">// Set the destination pixels</span>
<a name="line-768"></a>
<a name="line-769"></a> <span class="kt">int</span> <span class="n">iu</span> <span class="o">=</span> <span class="n">lround</span><span class="p">(</span> <span class="n">u</span> <span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="p">);</span>
<a name="line-770"></a> <span class="kt">int</span> <span class="n">iv</span> <span class="o">=</span> <span class="n">lround</span><span class="p">(</span> <span class="n">v</span> <span class="p">[</span><span class="mi">0</span><span class="p">]</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="n">iu</span> <span class="o">&gt;=</span> <span class="n">u1</span> <span class="o">&amp;&amp;</span> <span class="n">iu</span> <span class="o">&lt;</span> <span class="n">u2</span> <span class="o">&amp;&amp;</span> <span class="n">iv</span> <span class="o">&gt;=</span> <span class="n">v1</span> <span class="o">&amp;&amp;</span> <span class="n">iv</span> <span class="o">&lt;</span> <span class="n">v2</span><span class="p">)</span>
<a name="line-773"></a> <span class="p">{</span>
<a name="line-774"></a> <span class="c1">// u, v coordinates into source</span>
<a name="line-775"></a>
<a name="line-776"></a> <span class="c1">//In inverse transformation we always enable anti-aliasing, because there is always under-sampling</span>
<a name="line-777"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">antiAliasing</span> <span class="o">||</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">inverseTransformation</span><span class="p">)</span>
<a name="line-778"></a> <span class="p">{</span>
<a name="line-779"></a> <span class="kt">double</span> <span class="n">finalU</span> <span class="o">=</span> <span class="n">u</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="n">u1</span><span class="p">;</span>
<a name="line-780"></a> <span class="kt">double</span> <span class="n">finalV</span> <span class="o">=</span> <span class="n">v</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="n">v1</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">sixteenBit</span><span class="p">)</span>
<a name="line-783"></a> <span class="p">{</span>
<a name="line-784"></a> <span class="kt">unsigned</span> <span class="kt">short</span><span class="o">*</span> <span class="n">d16</span> <span class="o">=</span> <span class="k">reinterpret_cast</span><span class="o">&lt;</span><span class="kt">unsigned</span> <span class="kt">short</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">d2</span><span class="p">);</span>
<a name="line-785"></a> <span class="n">alias</span><span class="p">.</span><span class="n">pixelAntiAliasing16</span><span class="p">(</span><span class="k">reinterpret_cast</span><span class="o">&lt;</span><span class="kt">unsigned</span> <span class="kt">short</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">data</span><span class="p">),</span> <span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">,</span> <span class="n">finalU</span><span class="p">,</span> <span class="n">finalV</span><span class="p">,</span> <span class="n">d16</span><span class="o">+</span><span class="mi">3</span><span class="p">,</span> <span class="n">d16</span><span class="o">+</span><span class="mi">2</span><span class="p">,</span> <span class="n">d16</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span> <span class="n">d16</span><span class="p">);</span>
<a name="line-786"></a> <span class="p">}</span>
<a name="line-787"></a> <span class="k">else</span>
<a name="line-788"></a> <span class="p">{</span>
<a name="line-789"></a> <span class="n">alias</span><span class="p">.</span><span class="n">pixelAntiAliasing</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">height</span><span class="p">,</span> <span class="n">finalU</span><span class="p">,</span> <span class="n">finalV</span><span class="p">,</span> <span class="n">d2</span><span class="o">+</span><span class="mi">3</span><span class="p">,</span> <span class="n">d2</span><span class="o">+</span><span class="mi">2</span><span class="p">,</span> <span class="n">d2</span><span class="o">+</span><span class="mi">1</span><span class="p">,</span> <span class="n">d2</span><span class="p">);</span>
<a name="line-790"></a> <span class="p">}</span>
<a name="line-791"></a> <span class="p">}</span>
<a name="line-792"></a> <span class="k">else</span>
<a name="line-793"></a> <span class="p">{</span>
<a name="line-794"></a><span class="hll"> <span class="kt">int</span> <span class="n">u</span> <span class="o">=</span> <span class="n">iu</span> <span class="o">-</span> <span class="n">u1</span><span class="p">;</span><span class='error2'>&lt;--- Shadow variable</span>
</span><a name="line-795"></a><span class="hll"> <span class="kt">int</span> <span class="n">v</span> <span class="o">=</span> <span class="n">iv</span> <span class="o">-</span> <span class="n">v1</span><span class="p">;</span><span class='error2'>&lt;--- Shadow variable</span>
</span><a name="line-796"></a> <span class="n">offset</span> <span class="o">=</span> <span class="p">(</span><span class="n">v</span> <span class="o">*</span> <span class="n">width</span> <span class="o">*</span> <span class="n">bytesDepth</span><span class="p">)</span> <span class="o">+</span> <span class="p">(</span><span class="n">u</span> <span class="o">*</span> <span class="n">bytesDepth</span><span class="p">);</span>
<a name="line-797"></a> <span class="n">color</span><span class="p">.</span><span class="n">setColor</span><span class="p">(</span><span class="n">data</span> <span class="o">+</span> <span class="n">offset</span><span class="p">,</span> <span class="n">sixteenBit</span><span class="p">);</span>
<a name="line-798"></a> <span class="n">color</span><span class="p">.</span><span class="n">setPixel</span><span class="p">(</span><span class="n">d2</span><span class="p">);</span>
<a name="line-799"></a> <span class="p">}</span>
<a name="line-800"></a>
<a name="line-801"></a> <span class="n">d2</span> <span class="o">+=</span> <span class="n">bytesDepth</span><span class="p">;</span>
<a name="line-802"></a> <span class="p">}</span>
<a name="line-803"></a> <span class="k">else</span> <span class="c1">// not in source range</span>
<a name="line-804"></a> <span class="p">{</span>
<a name="line-805"></a> <span class="c1">// set to background color</span>
<a name="line-806"></a>
<a name="line-807"></a> <span class="n">bg</span><span class="p">.</span><span class="n">setPixel</span><span class="p">(</span><span class="n">d2</span><span class="p">);</span>
<a name="line-808"></a> <span class="n">d2</span> <span class="o">+=</span> <span class="n">bytesDepth</span><span class="p">;</span>
<a name="line-809"></a> <span class="p">}</span>
<a name="line-810"></a>
<a name="line-811"></a> <span class="k">for</span> <span class="p">(</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">coords</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-812"></a> <span class="p">{</span>
<a name="line-813"></a> <span class="n">tu</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">+=</span> <span class="n">uinc</span><span class="p">;</span>
<a name="line-814"></a> <span class="n">tv</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">+=</span> <span class="n">vinc</span><span class="p">;</span>
<a name="line-815"></a> <span class="n">tw</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">+=</span> <span class="n">winc</span><span class="p">;</span>
<a name="line-816"></a> <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="c1">// set the pixel region row</span>
<a name="line-820"></a>
<a name="line-821"></a> <span class="n">offset</span> <span class="o">=</span> <span class="p">(</span><span class="n">y</span> <span class="o">-</span> <span class="n">y1</span><span class="p">)</span> <span class="o">*</span> <span class="n">width</span> <span class="o">*</span> <span class="n">bytesDepth</span><span class="p">;</span>
<a name="line-822"></a> <span class="n">memcpy</span><span class="p">(</span><span class="n">newData</span> <span class="o">+</span> <span class="n">offset</span><span class="p">,</span> <span class="n">dest</span><span class="p">.</span><span class="n">data</span><span class="p">(),</span> <span class="n">width</span> <span class="o">*</span> <span class="n">bytesDepth</span><span class="p">);</span>
<a name="line-823"></a> <span class="p">}</span>
<a name="line-824"></a><span class="p">}</span>
<a name="line-825"></a>
<a name="line-826"></a><span class="kt">void</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">paintEvent</span><span class="p">(</span><span class="n">QPaintEvent</span><span class="o">*</span><span class="p">)</span>
<a name="line-827"></a><span class="p">{</span>
<a name="line-828"></a> <span class="n">QPainter</span> <span class="n">p</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-829"></a> <span class="n">p</span><span class="p">.</span><span class="n">drawPixmap</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">d</span><span class="o">-&gt;</span><span class="n">pixmap</span><span class="p">);</span>
<a name="line-830"></a> <span class="n">p</span><span class="p">.</span><span class="n">end</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="kt">void</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">mousePressEvent</span><span class="p">(</span><span class="n">QMouseEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">)</span>
<a name="line-834"></a><span class="p">{</span>
<a name="line-835"></a> <span class="k">if</span> <span class="p">(</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">button</span><span class="p">()</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">LeftButton</span> <span class="o">&amp;&amp;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">x</span><span class="p">(),</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">y</span><span class="p">()</span> <span class="p">))</span>
<a name="line-836"></a> <span class="p">{</span>
<a name="line-837"></a> <span class="k">if</span> <span class="p">(</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftCorner</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">x</span><span class="p">(),</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">y</span><span class="p">()</span> <span class="p">)</span> <span class="p">)</span>
<a name="line-838"></a> <span class="p">{</span>
<a name="line-839"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentResizing</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">ResizingTopLeft</span><span class="p">;</span>
<a name="line-840"></a> <span class="p">}</span>
<a name="line-841"></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">bottomRightCorner</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">x</span><span class="p">(),</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">y</span><span class="p">()</span> <span class="p">)</span> <span class="p">)</span>
<a name="line-842"></a> <span class="p">{</span>
<a name="line-843"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentResizing</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">ResizingBottomRight</span><span class="p">;</span>
<a name="line-844"></a> <span class="p">}</span>
<a name="line-845"></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">topRightCorner</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">x</span><span class="p">(),</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">y</span><span class="p">()</span> <span class="p">)</span> <span class="p">)</span>
<a name="line-846"></a> <span class="p">{</span>
<a name="line-847"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentResizing</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">ResizingTopRight</span><span class="p">;</span>
<a name="line-848"></a> <span class="p">}</span>
<a name="line-849"></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">bottomLeftCorner</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">x</span><span class="p">(),</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">y</span><span class="p">()</span> <span class="p">)</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">currentResizing</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">ResizingBottomLeft</span><span class="p">;</span>
<a name="line-852"></a> <span class="p">}</span>
<a name="line-853"></a> <span class="k">else</span>
<a name="line-854"></a> <span class="p">{</span>
<a name="line-855"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">spot</span><span class="p">.</span><span class="n">setX</span><span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">x</span><span class="p">()</span><span class="o">-</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">());</span>
<a name="line-856"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">spot</span><span class="p">.</span><span class="n">setY</span><span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">y</span><span class="p">()</span><span class="o">-</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</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><span class="p">}</span>
<a name="line-860"></a>
<a name="line-861"></a><span class="kt">void</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">mouseReleaseEvent</span><span class="p">(</span><span class="n">QMouseEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">)</span>
<a name="line-862"></a><span class="p">{</span>
<a name="line-863"></a> <span class="k">if</span> <span class="p">(</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentResizing</span> <span class="o">!=</span> <span class="n">Private</span><span class="o">::</span><span class="n">ResizingNone</span> <span class="p">)</span>
<a name="line-864"></a> <span class="p">{</span>
<a name="line-865"></a> <span class="n">unsetCursor</span><span class="p">();</span>
<a name="line-866"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentResizing</span> <span class="o">=</span> <span class="n">Private</span><span class="o">::</span><span class="n">ResizingNone</span><span class="p">;</span>
<a name="line-867"></a>
<a name="line-868"></a> <span class="c1">// in this case, the pixmap has not been drawn on mouse move</span>
<a name="line-869"></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">drawWhileMoving</span><span class="p">)</span>
<a name="line-870"></a> <span class="p">{</span>
<a name="line-871"></a> <span class="n">updatePixmap</span><span class="p">();</span>
<a name="line-872"></a> <span class="n">update</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> <span class="k">else</span>
<a name="line-876"></a> <span class="p">{</span>
<a name="line-877"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">spot</span><span class="p">.</span><span class="n">setX</span><span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">x</span><span class="p">()</span><span class="o">-</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">());</span>
<a name="line-878"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">spot</span><span class="p">.</span><span class="n">setY</span><span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">y</span><span class="p">()</span><span class="o">-</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">());</span>
<a name="line-879"></a> <span class="n">updatePixmap</span><span class="p">();</span>
<a name="line-880"></a> <span class="n">update</span><span class="p">();</span>
<a name="line-881"></a> <span class="p">}</span>
<a name="line-882"></a><span class="p">}</span>
<a name="line-883"></a>
<a name="line-884"></a><span class="kt">void</span> <span class="n">PerspectiveWidget</span><span class="o">::</span><span class="n">mouseMoveEvent</span><span class="p">(</span><span class="n">QMouseEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">)</span>
<a name="line-885"></a><span class="p">{</span>
<a name="line-886"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">validPerspective</span> <span class="o">=</span> <span class="nb">true</span><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">e</span><span class="o">-&gt;</span><span class="n">buttons</span><span class="p">()</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">LeftButton</span> <span class="p">)</span>
<a name="line-889"></a> <span class="p">{</span>
<a name="line-890"></a> <span class="k">if</span> <span class="p">(</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentResizing</span> <span class="o">!=</span> <span class="n">Private</span><span class="o">::</span><span class="n">ResizingNone</span> <span class="p">)</span>
<a name="line-891"></a> <span class="p">{</span>
<a name="line-892"></a> <span class="n">QPolygon</span> <span class="n">unusablePoints</span><span class="p">;</span>
<a name="line-893"></a> <span class="n">QPoint</span> <span class="nf">pm</span><span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">x</span><span class="p">(),</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">y</span><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="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span> <span class="n">pm</span> <span class="p">))</span>
<a name="line-896"></a> <span class="p">{</span>
<a name="line-897"></a> <span class="k">if</span> <span class="p">(</span><span class="n">pm</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">right</span><span class="p">())</span>
<a name="line-898"></a> <span class="p">{</span>
<a name="line-899"></a> <span class="n">pm</span><span class="p">.</span><span class="n">setX</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">right</span><span class="p">());</span>
<a name="line-900"></a> <span class="p">}</span>
<a name="line-901"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">pm</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">left</span><span class="p">())</span>
<a name="line-902"></a> <span class="p">{</span>
<a name="line-903"></a> <span class="n">pm</span><span class="p">.</span><span class="n">setX</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">left</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="k">if</span> <span class="p">(</span><span class="n">pm</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">bottom</span><span class="p">())</span>
<a name="line-907"></a> <span class="p">{</span>
<a name="line-908"></a> <span class="n">pm</span><span class="p">.</span><span class="n">setY</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">bottom</span><span class="p">());</span>
<a name="line-909"></a> <span class="p">}</span>
<a name="line-910"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">pm</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">top</span><span class="p">())</span>
<a name="line-911"></a> <span class="p">{</span>
<a name="line-912"></a> <span class="n">pm</span><span class="p">.</span><span class="n">setY</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">top</span><span class="p">());</span>
<a name="line-913"></a> <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">if</span> <span class="p">(</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentResizing</span> <span class="o">==</span> <span class="n">Private</span><span class="o">::</span><span class="n">ResizingTopLeft</span> <span class="p">)</span>
<a name="line-917"></a> <span class="p">{</span>
<a name="line-918"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftPoint</span> <span class="o">=</span> <span class="n">pm</span> <span class="o">-</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">();</span>
<a name="line-919"></a> <span class="n">setCursor</span><span class="p">(</span> <span class="n">Qt</span><span class="o">::</span><span class="n">SizeFDiagCursor</span> <span class="p">);</span>
<a name="line-920"></a>
<a name="line-921"></a> <span class="n">unusablePoints</span><span class="p">.</span><span class="n">putPoints</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span>
<a name="line-922"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span><span class="o">-</span><span class="mi">1</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">height</span><span class="o">-</span><span class="mi">1</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">(),</span>
<a name="line-923"></a> <span class="mi">0</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">height</span><span class="o">-</span><span class="mi">1</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">(),</span>
<a name="line-924"></a> <span class="mi">0</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomLeftPoint</span><span class="p">.</span><span class="n">y</span><span class="p">()</span><span class="o">-</span><span class="mi">10</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">(),</span>
<a name="line-925"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomLeftPoint</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomLeftPoint</span><span class="p">.</span><span class="n">y</span><span class="p">()</span><span class="o">-</span><span class="mi">10</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">(),</span>
<a name="line-926"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topRightPoint</span><span class="p">.</span><span class="n">x</span><span class="p">()</span><span class="o">-</span><span class="mi">10</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topRightPoint</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">(),</span>
<a name="line-927"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topRightPoint</span><span class="p">.</span><span class="n">x</span><span class="p">()</span><span class="o">-</span><span class="mi">10</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="mi">0</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">(),</span>
<a name="line-928"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span><span class="o">-</span><span class="mi">1</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="mi">0</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">());</span>
<a name="line-929"></a> <span class="n">QRegion</span> <span class="nf">unusableArea</span><span class="p">(</span><span class="n">unusablePoints</span><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="n">unusableArea</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">pm</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">inverseTransformation</span> <span class="p">)</span>
<a name="line-932"></a> <span class="p">{</span>
<a name="line-933"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">validPerspective</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-934"></a> <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="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">currentResizing</span> <span class="o">==</span> <span class="n">Private</span><span class="o">::</span><span class="n">ResizingTopRight</span> <span class="p">)</span>
<a name="line-938"></a> <span class="p">{</span>
<a name="line-939"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topRightPoint</span> <span class="o">=</span> <span class="n">pm</span> <span class="o">-</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">();</span>
<a name="line-940"></a> <span class="n">setCursor</span><span class="p">(</span> <span class="n">Qt</span><span class="o">::</span><span class="n">SizeBDiagCursor</span> <span class="p">);</span>
<a name="line-941"></a>
<a name="line-942"></a> <span class="n">unusablePoints</span><span class="p">.</span><span class="n">putPoints</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span>
<a name="line-943"></a> <span class="mi">0</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">height</span><span class="o">-</span><span class="mi">1</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">(),</span>
<a name="line-944"></a> <span class="mi">0</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="mi">0</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">(),</span>
<a name="line-945"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftPoint</span><span class="p">.</span><span class="n">x</span><span class="p">()</span><span class="o">+</span><span class="mi">10</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="mi">0</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">(),</span>
<a name="line-946"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftPoint</span><span class="p">.</span><span class="n">x</span><span class="p">()</span><span class="o">+</span><span class="mi">10</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftPoint</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">(),</span>
<a name="line-947"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomRightPoint</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomRightPoint</span><span class="p">.</span><span class="n">y</span><span class="p">()</span><span class="o">-</span><span class="mi">10</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">(),</span>
<a name="line-948"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span><span class="o">-</span><span class="mi">1</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomRightPoint</span><span class="p">.</span><span class="n">y</span><span class="p">()</span><span class="o">-</span><span class="mi">10</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">(),</span>
<a name="line-949"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span><span class="o">-</span><span class="mi">1</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">height</span><span class="o">-</span><span class="mi">1</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">());</span>
<a name="line-950"></a> <span class="n">QRegion</span> <span class="nf">unusableArea</span><span class="p">(</span><span class="n">unusablePoints</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="n">unusableArea</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">pm</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">inverseTransformation</span> <span class="p">)</span>
<a name="line-953"></a> <span class="p">{</span>
<a name="line-954"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">validPerspective</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-955"></a> <span class="p">}</span>
<a name="line-956"></a> <span class="p">}</span>
<a name="line-957"></a>
<a name="line-958"></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">currentResizing</span> <span class="o">==</span> <span class="n">Private</span><span class="o">::</span><span class="n">ResizingBottomLeft</span> <span class="p">)</span>
<a name="line-959"></a> <span class="p">{</span>
<a name="line-960"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomLeftPoint</span> <span class="o">=</span> <span class="n">pm</span> <span class="o">-</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">();</span>
<a name="line-961"></a> <span class="n">setCursor</span><span class="p">(</span> <span class="n">Qt</span><span class="o">::</span><span class="n">SizeBDiagCursor</span> <span class="p">);</span>
<a name="line-962"></a>
<a name="line-963"></a> <span class="n">unusablePoints</span><span class="p">.</span><span class="n">putPoints</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span>
<a name="line-964"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span><span class="o">-</span><span class="mi">1</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="mi">0</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">(),</span>
<a name="line-965"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span><span class="o">-</span><span class="mi">1</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">height</span><span class="o">-</span><span class="mi">1</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">(),</span>
<a name="line-966"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomRightPoint</span><span class="p">.</span><span class="n">x</span><span class="p">()</span><span class="o">-</span><span class="mi">10</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">height</span><span class="o">-</span><span class="mi">1</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">(),</span>
<a name="line-967"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomRightPoint</span><span class="p">.</span><span class="n">x</span><span class="p">()</span><span class="o">-</span><span class="mi">10</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomRightPoint</span><span class="p">.</span><span class="n">y</span><span class="p">()</span><span class="o">+</span><span class="mi">10</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">(),</span>
<a name="line-968"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftPoint</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftPoint</span><span class="p">.</span><span class="n">y</span><span class="p">()</span><span class="o">+</span><span class="mi">10</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">(),</span>
<a name="line-969"></a> <span class="mi">0</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftPoint</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">(),</span>
<a name="line-970"></a> <span class="mi">0</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="mi">0</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">());</span>
<a name="line-971"></a> <span class="n">QRegion</span> <span class="nf">unusableArea</span><span class="p">(</span><span class="n">unusablePoints</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">unusableArea</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">pm</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">inverseTransformation</span> <span class="p">)</span>
<a name="line-974"></a> <span class="p">{</span>
<a name="line-975"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">validPerspective</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-976"></a> <span class="p">}</span>
<a name="line-977"></a> <span class="p">}</span>
<a name="line-978"></a>
<a name="line-979"></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">currentResizing</span> <span class="o">==</span> <span class="n">Private</span><span class="o">::</span><span class="n">ResizingBottomRight</span> <span class="p">)</span>
<a name="line-980"></a> <span class="p">{</span>
<a name="line-981"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomRightPoint</span> <span class="o">=</span> <span class="n">pm</span> <span class="o">-</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">();</span>
<a name="line-982"></a> <span class="n">setCursor</span><span class="p">(</span> <span class="n">Qt</span><span class="o">::</span><span class="n">SizeFDiagCursor</span> <span class="p">);</span>
<a name="line-983"></a>
<a name="line-984"></a> <span class="n">unusablePoints</span><span class="p">.</span><span class="n">putPoints</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span>
<a name="line-985"></a> <span class="mi">0</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="mi">0</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">(),</span>
<a name="line-986"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span><span class="o">-</span><span class="mi">1</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="mi">0</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">(),</span>
<a name="line-987"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span><span class="o">-</span><span class="mi">1</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topRightPoint</span><span class="p">.</span><span class="n">y</span><span class="p">()</span><span class="o">+</span><span class="mi">10</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">(),</span>
<a name="line-988"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topRightPoint</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topRightPoint</span><span class="p">.</span><span class="n">y</span><span class="p">()</span><span class="o">+</span><span class="mi">10</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">(),</span>
<a name="line-989"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomLeftPoint</span><span class="p">.</span><span class="n">x</span><span class="p">()</span><span class="o">+</span><span class="mi">10</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomLeftPoint</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">(),</span>
<a name="line-990"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomLeftPoint</span><span class="p">.</span><span class="n">x</span><span class="p">()</span><span class="o">+</span><span class="mi">10</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span><span class="o">-</span><span class="mi">1</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">(),</span>
<a name="line-991"></a> <span class="mi">0</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">width</span><span class="o">-</span><span class="mi">1</span> <span class="o">+</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</span><span class="p">());</span>
<a name="line-992"></a> <span class="n">QRegion</span> <span class="nf">unusableArea</span><span class="p">(</span><span class="n">unusablePoints</span><span class="p">);</span>
<a name="line-993"></a>
<a name="line-994"></a> <span class="k">if</span> <span class="p">(</span> <span class="n">unusableArea</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">pm</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">inverseTransformation</span> <span class="p">)</span>
<a name="line-995"></a> <span class="p">{</span>
<a name="line-996"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">validPerspective</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-997"></a> <span class="p">}</span>
<a name="line-998"></a> <span class="p">}</span>
<a name="line-999"></a>
<a name="line-1000"></a> <span class="k">else</span>
<a name="line-1001"></a> <span class="p">{</span>
<a name="line-1002"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">spot</span><span class="p">.</span><span class="n">setX</span><span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">x</span><span class="p">()</span><span class="o">-</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">x</span><span class="p">());</span>
<a name="line-1003"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">spot</span><span class="p">.</span><span class="n">setY</span><span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">y</span><span class="p">()</span><span class="o">-</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">y</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="n">updatePixmap</span><span class="p">();</span>
<a name="line-1007"></a><span class="cm">/*</span>
<a name="line-1008"></a><span class="cm"> // NOTE ; To hack unusable region</span>
<a name="line-1009"></a><span class="cm"> QPainter p(d-&gt;pixmap);</span>
<a name="line-1010"></a><span class="cm"> QPainterPath pp;</span>
<a name="line-1011"></a><span class="cm"> pp.addPolygon(unusablePoints);</span>
<a name="line-1012"></a><span class="cm"> p.fillPath(pp, QColor(128, 128, 128, 128));</span>
<a name="line-1013"></a><span class="cm"> p.end();</span>
<a name="line-1014"></a><span class="cm">*/</span>
<a name="line-1015"></a> <span class="n">update</span><span class="p">();</span>
<a name="line-1016"></a> <span class="p">}</span>
<a name="line-1017"></a> <span class="p">}</span>
<a name="line-1018"></a> <span class="k">else</span>
<a name="line-1019"></a> <span class="p">{</span>
<a name="line-1020"></a> <span class="k">if</span> <span class="p">(</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topLeftCorner</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">x</span><span class="p">(),</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">y</span><span class="p">()</span> <span class="p">)</span> <span class="o">||</span>
<a name="line-1021"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomRightCorner</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">x</span><span class="p">(),</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">y</span><span class="p">()</span> <span class="p">)</span> <span class="p">)</span>
<a name="line-1022"></a> <span class="p">{</span>
<a name="line-1023"></a> <span class="n">setCursor</span><span class="p">(</span> <span class="n">Qt</span><span class="o">::</span><span class="n">SizeFDiagCursor</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">else</span> <span class="k">if</span> <span class="p">(</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">topRightCorner</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">x</span><span class="p">(),</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">y</span><span class="p">()</span> <span class="p">)</span> <span class="o">||</span>
<a name="line-1027"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">bottomLeftCorner</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">x</span><span class="p">(),</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">y</span><span class="p">()</span> <span class="p">)</span> <span class="p">)</span>
<a name="line-1028"></a> <span class="p">{</span>
<a name="line-1029"></a> <span class="n">setCursor</span><span class="p">(</span> <span class="n">Qt</span><span class="o">::</span><span class="n">SizeBDiagCursor</span> <span class="p">);</span>
<a name="line-1030"></a> <span class="p">}</span>
<a name="line-1031"></a> <span class="k">else</span>
<a name="line-1032"></a> <span class="p">{</span>
<a name="line-1033"></a> <span class="n">unsetCursor</span><span class="p">();</span>
<a name="line-1034"></a> <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="p">}</span> <span class="c1">// namespace DigikamEditorPerspectiveToolPlugin</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 92d4c82ca..c9eb9b063 100644
--- a/static/reports/cppcheck/master/20.html
+++ b/static/reports/cppcheck/master/20.html
@@ -1,461 +1,461 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/webservices/flickr/flickritem.h </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/generic/webservices/flickr/flickritem.h </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> flickritem.h</p>
<a href='20.html#line-84'> useInitializationList 84</a><a href='20.html#line-144'> useInitializationList 144</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</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-07-07</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) 2013-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">#ifndef DIGIKAM_FLICKR_ITEM_H</span>
<a name="line-25"></a><span class="cp">#define DIGIKAM_FLICKR_ITEM_H</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;QStringList&gt;</span><span class="cp"></span>
<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QString&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;flickrlist.h&quot;</span><span class="cp"></span>
<a name="line-35"></a>
<a name="line-36"></a><span class="n">namespace</span> <span class="n">DigikamGenericFlickrPlugin</span>
<a name="line-37"></a><span class="p">{</span>
<a name="line-38"></a>
<a name="line-39"></a><span class="n">class</span> <span class="n">GPhoto</span>
<a name="line-40"></a><span class="p">{</span>
<a name="line-41"></a>
<a name="line-42"></a><span class="nl">public</span><span class="p">:</span>
<a name="line-43"></a>
<a name="line-44"></a> <span class="n">GPhoto</span><span class="p">()</span>
<a name="line-45"></a> <span class="p">{</span>
<a name="line-46"></a> <span class="n">is_public</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-47"></a> <span class="n">is_private</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-48"></a> <span class="n">is_family</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-49"></a> <span class="n">ref_num</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<a name="line-50"></a> <span class="p">}</span>
<a name="line-51"></a>
<a name="line-52"></a> <span class="kt">bool</span> <span class="n">is_public</span><span class="p">;</span>
<a name="line-53"></a> <span class="kt">bool</span> <span class="n">is_private</span><span class="p">;</span>
<a name="line-54"></a> <span class="kt">bool</span> <span class="n">is_family</span><span class="p">;</span>
<a name="line-55"></a>
<a name="line-56"></a> <span class="kt">int</span> <span class="n">ref_num</span><span class="p">;</span>
<a name="line-57"></a>
<a name="line-58"></a> <span class="n">QStringList</span> <span class="n">tags</span><span class="p">;</span>
<a name="line-59"></a> <span class="n">QString</span> <span class="n">title</span><span class="p">;</span>
<a name="line-60"></a> <span class="n">QString</span> <span class="n">description</span><span class="p">;</span>
<a name="line-61"></a>
<a name="line-62"></a><span class="cm">/*</span>
<a name="line-63"></a><span class="cm"> int album_num;</span>
<a name="line-64"></a><span class="cm"> QString caption;</span>
<a name="line-65"></a><span class="cm"> QString thumbName;</span>
<a name="line-66"></a><span class="cm"> QString albumURL;</span>
<a name="line-67"></a><span class="cm">*/</span>
<a name="line-68"></a><span class="p">};</span>
<a name="line-69"></a>
<a name="line-70"></a><span class="c1">// -------------------------------------------------------------</span>
<a name="line-71"></a>
<a name="line-72"></a><span class="n">class</span> <span class="n">FPhotoInfo</span>
<a name="line-73"></a><span class="p">{</span>
<a name="line-74"></a>
<a name="line-75"></a><span class="nl">public</span><span class="p">:</span>
<a name="line-76"></a>
<a name="line-77"></a> <span class="n">FPhotoInfo</span><span class="p">()</span>
<a name="line-78"></a> <span class="p">{</span>
<a name="line-79"></a> <span class="n">is_public</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-80"></a> <span class="n">is_family</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-81"></a> <span class="n">is_friend</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-82"></a> <span class="n">safety_level</span> <span class="o">=</span> <span class="n">FlickrList</span><span class="o">::</span><span class="n">SAFE</span><span class="p">;</span>
<a name="line-83"></a> <span class="n">content_type</span> <span class="o">=</span> <span class="n">FlickrList</span><span class="o">::</span><span class="n">PHOTO</span><span class="p">;</span>
<a name="line-84"></a><span class="hll"> <span class="n">size</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'size' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;size&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-85"></a> <span class="p">}</span>
<a name="line-86"></a>
<a name="line-87"></a> <span class="kt">bool</span> <span class="n">is_public</span><span class="p">;</span>
<a name="line-88"></a> <span class="kt">bool</span> <span class="n">is_friend</span><span class="p">;</span>
<a name="line-89"></a> <span class="kt">bool</span> <span class="n">is_family</span><span class="p">;</span>
<a name="line-90"></a>
<a name="line-91"></a> <span class="n">QString</span> <span class="n">title</span><span class="p">;</span>
<a name="line-92"></a> <span class="n">QString</span> <span class="n">description</span><span class="p">;</span>
<a name="line-93"></a> <span class="n">qlonglong</span> <span class="n">size</span><span class="p">;</span>
<a name="line-94"></a> <span class="n">QStringList</span> <span class="n">tags</span><span class="p">;</span>
<a name="line-95"></a>
<a name="line-96"></a> <span class="n">FlickrList</span><span class="o">::</span><span class="n">SafetyLevel</span> <span class="n">safety_level</span><span class="p">;</span>
<a name="line-97"></a> <span class="n">FlickrList</span><span class="o">::</span><span class="n">ContentType</span> <span class="n">content_type</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="c1">// -------------------------------------------------------------</span>
<a name="line-101"></a>
<a name="line-102"></a><span class="n">class</span> <span class="n">GAlbum</span>
<a name="line-103"></a><span class="p">{</span>
<a name="line-104"></a>
<a name="line-105"></a><span class="nl">public</span><span class="p">:</span>
<a name="line-106"></a>
<a name="line-107"></a> <span class="n">GAlbum</span><span class="p">()</span>
<a name="line-108"></a> <span class="p">{</span>
<a name="line-109"></a> <span class="n">ref_num</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<a name="line-110"></a> <span class="n">parent_ref_num</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<a name="line-111"></a>
<a name="line-112"></a> <span class="n">add</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-113"></a> <span class="n">write</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-114"></a> <span class="n">del_item</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-115"></a> <span class="n">del_alb</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-116"></a> <span class="n">create_sub</span> <span class="o">=</span> <span class="nb">false</span><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">bool</span> <span class="n">add</span><span class="p">;</span>
<a name="line-120"></a> <span class="kt">bool</span> <span class="n">write</span><span class="p">;</span>
<a name="line-121"></a> <span class="kt">bool</span> <span class="n">del_item</span><span class="p">;</span>
<a name="line-122"></a> <span class="kt">bool</span> <span class="n">del_alb</span><span class="p">;</span>
<a name="line-123"></a> <span class="kt">bool</span> <span class="n">create_sub</span><span class="p">;</span>
<a name="line-124"></a>
<a name="line-125"></a> <span class="kt">int</span> <span class="n">ref_num</span><span class="p">;</span>
<a name="line-126"></a> <span class="kt">int</span> <span class="n">parent_ref_num</span><span class="p">;</span>
<a name="line-127"></a>
<a name="line-128"></a> <span class="n">QString</span> <span class="n">name</span><span class="p">;</span>
<a name="line-129"></a> <span class="n">QString</span> <span class="n">parentName</span><span class="p">;</span>
<a name="line-130"></a> <span class="n">QString</span> <span class="n">title</span><span class="p">;</span>
<a name="line-131"></a> <span class="n">QString</span> <span class="n">summary</span><span class="p">;</span>
<a name="line-132"></a> <span class="n">QString</span> <span class="n">baseurl</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="c1">// -------------------------------------------------------------</span>
<a name="line-136"></a>
<a name="line-137"></a><span class="n">class</span> <span class="n">FPhotoSet</span>
<a name="line-138"></a><span class="p">{</span>
<a name="line-139"></a>
<a name="line-140"></a><span class="nl">public</span><span class="p">:</span>
<a name="line-141"></a>
<a name="line-142"></a> <span class="n">FPhotoSet</span><span class="p">()</span>
<a name="line-143"></a> <span class="p">{</span>
<a name="line-144"></a><span class="hll"> <span class="n">id</span> <span class="o">=</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;-1&quot;</span><span class="p">);</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'id' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;id&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-145"></a> <span class="p">}</span>
<a name="line-146"></a>
<a name="line-147"></a> <span class="n">QString</span> <span class="n">id</span><span class="p">;</span>
<a name="line-148"></a> <span class="n">QString</span> <span class="n">primary</span><span class="p">;</span> <span class="c1">//=&quot;2483&quot;</span>
<a name="line-149"></a> <span class="n">QString</span> <span class="n">secret</span><span class="p">;</span> <span class="c1">//=&quot;abcdef&quot;</span>
<a name="line-150"></a> <span class="n">QString</span> <span class="n">server</span><span class="p">;</span>
<a name="line-151"></a> <span class="n">QString</span> <span class="n">photos</span><span class="p">;</span>
<a name="line-152"></a> <span class="n">QString</span> <span class="n">title</span><span class="p">;</span>
<a name="line-153"></a> <span class="n">QString</span> <span class="n">description</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="p">}</span> <span class="c1">// namespace DigikamGenericFlickrPlugin</span>
<a name="line-157"></a>
<a name="line-158"></a><span class="cp">#endif </span><span class="c1">// DIGIKAM_FLICKR_ITEM_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/21.html b/static/reports/cppcheck/master/21.html
index aea0a40b9..2b5246b23 100644
--- a/static/reports/cppcheck/master/21.html
+++ b/static/reports/cppcheck/master/21.html
@@ -1,1923 +1,369 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/webservices/flickr/flickrwindow.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/generic/webservices/google/gsitem.h </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> flickrwindow.cpp</p>
-<a href='21.html#line-563'> shadowVar 563</a><a href='21.html#line-575'> shadowVar 575</a>
+ <p id="filename"><a href="index.html">Defects:</a> gsitem.h</p>
+<a href='21.html#line-51'> useInitializationList 51</a><a href='21.html#line-91'> useInitializationList 91</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</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
+112</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-6"></a><span class="cm"> * Date : 2013-11-18</span>
+<a name="line-7"></a><span class="cm"> * Description : a tool to export items to Google web services</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-9"></a><span class="cm"> * Copyright (C) 2013 by Pankaj Kumar &lt;me at panks dot me&gt;</span>
+<a name="line-10"></a><span class="cm"> * Copyright (C) 2013-2018 by Caulier Gilles &lt;caulier dot gilles at gmail dot com&gt;</span>
+<a name="line-11"></a><span class="cm"> * Copyright (C) 2018 by Thanh Trung Dinh &lt;dinhthanhtrung1996 at gmail dot com&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-25"></a><span class="cp">#ifndef DIGIKAM_GS_ITEM_H</span>
+<a name="line-26"></a><span class="cp">#define DIGIKAM_GS_ITEM_H</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;QUrl&gt;</span><span class="cp"></span>
+<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QString&gt;</span><span class="cp"></span>
+<a name="line-32"></a>
+<a name="line-33"></a><span class="n">namespace</span> <span class="n">DigikamGenericGoogleServicesPlugin</span>
+<a name="line-34"></a><span class="p">{</span>
+<a name="line-35"></a>
+<a name="line-36"></a><span class="k">enum</span> <span class="n">GoogleService</span>
+<a name="line-37"></a><span class="p">{</span>
+<a name="line-38"></a> <span class="n">GDrive</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
+<a name="line-39"></a> <span class="n">GPhotoExport</span><span class="p">,</span>
+<a name="line-40"></a> <span class="n">GPhotoImport</span>
+<a name="line-41"></a><span class="p">};</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="p">{</span>
-<a name="line-67"></a> <span class="n">uploadCount</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-68"></a> <span class="n">uploadTotal</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-69"></a> <span class="n">newAlbumBtn</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-70"></a> <span class="n">changeUserButton</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-71"></a> <span class="n">removeAccount</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-72"></a> <span class="n">albumsListComboBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-73"></a> <span class="n">publicCheckBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-74"></a> <span class="n">familyCheckBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-75"></a> <span class="n">friendsCheckBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-76"></a> <span class="n">exportHostTagsCheckBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-77"></a> <span class="n">stripSpaceTagsCheckBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-78"></a> <span class="n">addExtraTagsCheckBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-79"></a> <span class="n">originalCheckBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-80"></a> <span class="n">resizeCheckBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-81"></a> <span class="n">dimensionSpinBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-82"></a> <span class="n">imageQualitySpinBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-83"></a> <span class="n">extendedPublicationButton</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-84"></a> <span class="n">extendedTagsButton</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-85"></a> <span class="n">contentTypeComboBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-86"></a> <span class="n">safetyLevelComboBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-87"></a> <span class="n">userNameDisplayLabel</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-88"></a> <span class="n">authProgressDlg</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-89"></a> <span class="n">tagsLineEdit</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-90"></a> <span class="n">widget</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-91"></a> <span class="n">talker</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-92"></a> <span class="n">imglst</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-93"></a> <span class="n">select</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-94"></a> <span class="n">albumDlg</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-95"></a> <span class="n">iface</span> <span class="o">=</span> <span class="k">nullptr</span><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="k">continue</span><span class="p">;</span>
-<a name="line-446"></a>
-<a name="line-447"></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-448"></a>
-<a name="line-449"></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-450"></a> <span class="p">{</span>
-<a name="line-451"></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-452"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-453"></a> <span class="p">}</span>
-<a name="line-454"></a> <span class="p">}</span>
-<a name="line-455"></a>
-<a name="line-456"></a> <span class="n">writeSettings</span><span class="p">();</span>
-<a name="line-457"></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-458"></a><span class="p">}</span>
-<a name="line-459"></a>
-<a name="line-460"></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-461"></a><span class="p">{</span>
-<a name="line-462"></a> <span class="k">if</span> <span class="p">(</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="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-465"></a> <span class="p">}</span>
-<a name="line-466"></a> <span class="k">else</span>
-<a name="line-467"></a> <span class="p">{</span>
-<a name="line-468"></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-469"></a> <span class="p">}</span>
-<a name="line-470"></a><span class="p">}</span>
-<a name="line-471"></a>
-<a name="line-472"></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-473"></a><span class="p">{</span>
-<a name="line-474"></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-475"></a><span class="p">}</span>
-<a name="line-476"></a>
-<a name="line-477"></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-478"></a><span class="p">{</span>
-<a name="line-479"></a> <span class="n">writeSettings</span><span class="p">();</span>
-<a name="line-480"></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-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;Slot Change User Request&quot;</span><span class="p">;</span>
-<a name="line-482"></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-483"></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-484"></a>
-<a name="line-485"></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-486"></a><span class="p">}</span>
-<a name="line-487"></a>
-<a name="line-488"></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-489"></a><span class="p">{</span>
-<a name="line-490"></a> <span class="n">KConfig</span> <span class="n">config</span><span class="p">;</span>
-<a name="line-491"></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-492"></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-493"></a>
-<a name="line-494"></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-495"></a> <span class="p">{</span>
-<a name="line-496"></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-497"></a> <span class="n">grp</span><span class="p">.</span><span class="n">deleteGroup</span><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="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-501"></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-502"></a>
-<a name="line-503"></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-504"></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-505"></a><span class="p">}</span>
-<a name="line-506"></a>
-<a name="line-507"></a><span class="cm">/**</span>
-<a name="line-508"></a><span class="cm"> * Try to guess a sensible set name from the urls given.</span>
-<a name="line-509"></a><span class="cm"> * Currently, it extracs the last path name component, and returns the most</span>
-<a name="line-510"></a><span class="cm"> * frequently seen. The function could be expanded to, for example, only</span>
-<a name="line-511"></a><span class="cm"> * accept the path if it occurs at least 50% of the time. It could also look</span>
-<a name="line-512"></a><span class="cm"> * further up in the path name.</span>
-<a name="line-513"></a><span class="cm"> */</span>
-<a name="line-514"></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-515"></a><span class="p">{</span>
-<a name="line-516"></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-517"></a>
-<a name="line-518"></a> <span class="c1">// Extract last component of directory</span>
-<a name="line-519"></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-520"></a> <span class="p">{</span>
-<a name="line-521"></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-522"></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-523"></a>
-<a name="line-524"></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-525"></a> <span class="k">continue</span><span class="p">;</span>
-<a name="line-526"></a>
-<a name="line-527"></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-528"></a> <span class="p">}</span>
-<a name="line-529"></a>
-<a name="line-530"></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-531"></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-532"></a> <span class="n">QString</span> <span class="n">name</span><span class="p">;</span>
-<a name="line-533"></a>
-<a name="line-534"></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>
-<a name="line-535"></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-536"></a> <span class="p">{</span>
-<a name="line-537"></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-538"></a>
-<a name="line-539"></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-540"></a> <span class="p">{</span>
-<a name="line-541"></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-542"></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-543"></a> <span class="p">}</span>
-<a name="line-544"></a> <span class="p">}</span>
-<a name="line-545"></a>
-<a name="line-546"></a> <span class="c1">// If there is only one entry or one name appears at least twice, return the suggestion</span>
-<a name="line-547"></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="o">||</span> <span class="n">maxCount</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">)</span>
-<a name="line-548"></a> <span class="k">return</span> <span class="n">name</span><span class="p">;</span>
-<a name="line-549"></a>
-<a name="line-550"></a> <span class="k">return</span> <span class="nf">QString</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="cm">/** This method is called when the photo set creation button is pressed. It</span>
-<a name="line-554"></a><span class="cm"> * summons a creation dialog for user input. When that is closed, it</span>
-<a name="line-555"></a><span class="cm"> * creates a new photo set in the local list. The id gets the form of</span>
-<a name="line-556"></a><span class="cm"> * UNDEFINED_ followed by a number, to indicate that it doesn&#39;t exist on</span>
-<a name="line-557"></a><span class="cm"> * Flickr yet.</span>
-<a name="line-558"></a><span class="cm"> */</span>
-<a name="line-559"></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-560"></a><span class="p">{</span>
-<a name="line-561"></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-562"></a> <span class="p">{</span>
-<a name="line-563"></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-564"></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-565"></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-566"></a>
-<a name="line-567"></a> <span class="c1">// Lets find an UNDEFINED_ style id that isn&#39;t taken yet.s</span>
-<a name="line-568"></a> <span class="n">QString</span> <span class="n">id</span><span class="p">;</span>
-<a name="line-569"></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-570"></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-571"></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-572"></a>
-<a name="line-573"></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-574"></a> <span class="p">{</span>
-<a name="line-575"></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-576"></a>
-<a name="line-577"></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-578"></a> <span class="p">{</span>
-<a name="line-579"></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-580"></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-581"></a> <span class="p">}</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="p">}</span>
-<a name="line-585"></a>
-<a name="line-586"></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-587"></a>
-<a name="line-588"></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-589"></a> <span class="c1">// Append the new photoset to the list.</span>
-<a name="line-590"></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-591"></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-592"></a>
-<a name="line-593"></a> <span class="c1">// Re-populate the photo sets combo box.</span>
-<a name="line-594"></a> <span class="n">slotPopulatePhotoSetComboBox</span><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">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-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="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">slotAuthCancel</span><span class="p">()</span>
-<a name="line-603"></a><span class="p">{</span>
-<a name="line-604"></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-605"></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-606"></a><span class="p">}</span>
-<a name="line-607"></a>
-<a name="line-608"></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-609"></a><span class="p">{</span>
-<a name="line-610"></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-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">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-613"></a> <span class="p">{</span>
-<a name="line-614"></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-615"></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-616"></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-617"></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-618"></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-619"></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-620"></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-621"></a>
-<a name="line-622"></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-623"></a> <span class="p">{</span>
-<a name="line-624"></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-625"></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-626"></a> <span class="c1">// Store the id as user data, because the title is not unique.</span>
-<a name="line-627"></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-628"></a>
-<a name="line-629"></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-630"></a> <span class="p">{</span>
-<a name="line-631"></a> <span class="n">curr_index</span> <span class="o">=</span> <span class="n">index</span><span class="p">;</span>
-<a name="line-632"></a> <span class="p">}</span>
-<a name="line-633"></a>
-<a name="line-634"></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-635"></a> <span class="o">++</span><span class="n">it</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">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-639"></a> <span class="p">}</span>
-<a name="line-640"></a><span class="p">}</span>
-<a name="line-641"></a>
-<a name="line-642"></a><span class="cm">/** This slot is call when &#39;Start Uploading&#39; button is pressed.</span>
-<a name="line-643"></a><span class="cm">*/</span>
-<a name="line-644"></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-645"></a><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="s">&quot;SlotUploadImages invoked&quot;</span><span class="p">;</span>
-<a name="line-647"></a>
-<a name="line-648"></a> <span class="c1">//d-&gt;widget-&gt;d-&gt;tab-&gt;setCurrentIndex(FlickrWidget::FILELIST);</span>
-<a name="line-649"></a>
-<a name="line-650"></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-651"></a> <span class="p">{</span>
-<a name="line-652"></a> <span class="k">return</span><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">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-656"></a>
-<a name="line-657"></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-658"></a>
-<a name="line-659"></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-660"></a> <span class="p">{</span>
-<a name="line-661"></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-662"></a>
-<a name="line-663"></a> <span class="k">if</span> <span class="p">(</span><span class="n">lvItem</span><span class="p">)</span>
-<a name="line-664"></a> <span class="p">{</span>
-<a name="line-665"></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-666"></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-667"></a> <span class="n">FPhotoInfo</span> <span class="n">temp</span><span class="p">;</span>
-<a name="line-668"></a>
-<a name="line-669"></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-670"></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-671"></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-672"></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-673"></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-674"></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-675"></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-676"></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-677"></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-678"></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-679"></a>
-<a name="line-680"></a> <span class="n">QStringList</span> <span class="n">allTags</span><span class="p">;</span>
-<a name="line-681"></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-682"></a>
-<a name="line-683"></a> <span class="c1">// Tags from the dialog</span>
-<a name="line-684"></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-685"></a>
-<a name="line-686"></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-687"></a> <span class="p">{</span>
-<a name="line-688"></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-689"></a> <span class="o">++</span><span class="n">itTags</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="c1">// Tags from the database</span>
-<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">exportHostTagsCheckBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">())</span>
-<a name="line-694"></a> <span class="p">{</span>
-<a name="line-695"></a> <span class="n">QStringList</span> <span class="n">tagsFromDatabase</span><span class="p">;</span>
-<a name="line-696"></a>
-<a name="line-697"></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-698"></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-699"></a>
-<a name="line-700"></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-701"></a> <span class="p">{</span>
-<a name="line-702"></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-703"></a> <span class="o">++</span><span class="n">itTags</span><span class="p">;</span>
-<a name="line-704"></a> <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="c1">// Tags from the list view.</span>
-<a name="line-708"></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-709"></a>
-<a name="line-710"></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-711"></a> <span class="p">{</span>
-<a name="line-712"></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-713"></a> <span class="o">++</span><span class="n">itTags</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="c1">// Remove spaces if the user doesn&#39;t like them.</span>
-<a name="line-717"></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-718"></a> <span class="p">{</span>
-<a name="line-719"></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>
-<a name="line-720"></a> <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>
-<a name="line-721"></a> <span class="o">++</span><span class="n">it</span><span class="p">)</span>
-<a name="line-722"></a> <span class="p">{</span>
-<a name="line-723"></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-724"></a> <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="c1">// Debug the tag list.</span>
-<a name="line-728"></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-729"></a>
-<a name="line-730"></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-731"></a> <span class="p">{</span>
-<a name="line-732"></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-733"></a> <span class="o">++</span><span class="n">itTags</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">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-737"></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-738"></a> <span class="p">}</span>
-<a name="line-739"></a> <span class="p">}</span>
-<a name="line-740"></a>
-<a name="line-741"></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-742"></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-743"></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-744"></a> <span class="n">slotAddPhotoNext</span><span class="p">();</span>
-<a name="line-745"></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-746"></a><span class="p">}</span>
-<a name="line-747"></a>
-<a name="line-748"></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-749"></a><span class="p">{</span>
-<a name="line-750"></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-751"></a> <span class="p">{</span>
-<a name="line-752"></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-753"></a> <span class="n">setUiInProgressState</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-754"></a> <span class="k">return</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">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-758"></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-759"></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-760"></a>
-<a name="line-761"></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-762"></a>
-<a name="line-763"></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-764"></a> <span class="p">{</span>
-<a name="line-765"></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-766"></a> <span class="p">}</span>
-<a name="line-767"></a> <span class="k">else</span>
-<a name="line-768"></a> <span class="p">{</span>
-<a name="line-769"></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-770"></a>
-<a name="line-771"></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-772"></a> <span class="p">{</span>
-<a name="line-773"></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-774"></a> <span class="p">{</span>
-<a name="line-775"></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-776"></a> <span class="k">break</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="o">++</span><span class="n">it</span><span class="p">;</span>
-<a name="line-780"></a> <span class="p">}</span>
-<a name="line-781"></a> <span class="p">}</span>
-<a name="line-782"></a>
-<a name="line-783"></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-784"></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-785"></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-786"></a>
-<a name="line-787"></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-788"></a> <span class="n">info</span><span class="p">,</span>
-<a name="line-789"></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-790"></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-791"></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-792"></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-793"></a>
-<a name="line-794"></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-795"></a> <span class="p">{</span>
-<a name="line-796"></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-797"></a> <span class="k">return</span><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="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-801"></a> <span class="p">{</span>
-<a name="line-802"></a> <span class="n">setUiInProgressState</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-803"></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-804"></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-805"></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-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="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-810"></a><span class="p">{</span>
-<a name="line-811"></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-812"></a>
-<a name="line-813"></a> <span class="c1">// Set location for uploaded photo</span>
-<a name="line-814"></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-815"></a>
-<a name="line-816"></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-817"></a> <span class="p">{</span>
-<a name="line-818"></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-819"></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-820"></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-821"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-822"></a> <span class="p">}</span>
-<a name="line-823"></a>
-<a name="line-824"></a> <span class="c1">// Remove photo uploaded from the list</span>
-<a name="line-825"></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-826"></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-827"></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-828"></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-829"></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-830"></a> <span class="n">slotAddPhotoNext</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="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-834"></a><span class="p">{</span>
-<a name="line-835"></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-836"></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-837"></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-838"></a><span class="p">}</span>
-<a name="line-839"></a>
-<a name="line-840"></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-841"></a><span class="p">{</span>
-<a name="line-842"></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-843"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Warning&quot;</span><span class="p">),</span>
-<a name="line-844"></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-845"></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-846"></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-847"></a>
-<a name="line-848"></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-849"></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-850"></a>
-<a name="line-851"></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-852"></a> <span class="p">{</span>
-<a name="line-853"></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-854"></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-855"></a> <span class="n">setUiInProgressState</span><span class="p">(</span><span class="nb">false</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">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-860"></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-861"></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-862"></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-863"></a> <span class="n">slotAddPhotoNext</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">delete</span> <span class="n">warn</span><span class="p">;</span>
-<a name="line-867"></a><span class="p">}</span>
-<a name="line-868"></a>
-<a name="line-869"></a><span class="cm">/* Method called when a photo set has been successfully created on Flickr.</span>
-<a name="line-870"></a><span class="cm"> * It functions to restart the normal flow after a photo set has been created</span>
-<a name="line-871"></a><span class="cm"> * on Flickr.</span>
-<a name="line-872"></a><span class="cm"> */</span>
-<a name="line-873"></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-874"></a><span class="p">{</span>
-<a name="line-875"></a> <span class="n">slotPopulatePhotoSetComboBox</span><span class="p">();</span>
-<a name="line-876"></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-877"></a><span class="p">}</span>
-<a name="line-878"></a>
-<a name="line-879"></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-880"></a><span class="p">{</span>
-<a name="line-881"></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-882"></a><span class="p">}</span>
-<a name="line-883"></a>
-<a name="line-884"></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-885"></a><span class="p">{</span>
-<a name="line-886"></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-887"></a><span class="p">}</span>
-<a name="line-888"></a>
-<a name="line-889"></a><span class="p">}</span> <span class="c1">// namespace DigikamGenericFlickrPlugin</span>
+<a name="line-43"></a><span class="c1">// -----------------------------------------------------------</span>
+<a name="line-44"></a>
+<a name="line-45"></a><span class="n">class</span> <span class="n">GSPhoto</span>
+<a name="line-46"></a><span class="p">{</span>
+<a name="line-47"></a><span class="nl">public</span><span class="p">:</span>
+<a name="line-48"></a>
+<a name="line-49"></a> <span class="n">GSPhoto</span><span class="p">()</span>
+<a name="line-50"></a> <span class="p">{</span>
+<a name="line-51"></a><span class="hll"> <span class="n">id</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;-1&quot;</span><span class="p">);</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'id' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;id&apos; a value by passing the value to the constructor in the initialization list.</div></div>
+</span><a name="line-52"></a> <span class="n">canComment</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-53"></a> <span class="n">gpsLon</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-54"></a> <span class="n">gpsLat</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-55"></a> <span class="p">}</span>
+<a name="line-56"></a>
+<a name="line-57"></a><span class="nl">public</span><span class="p">:</span>
+<a name="line-58"></a>
+<a name="line-59"></a> <span class="n">QString</span> <span class="n">id</span><span class="p">;</span>
+<a name="line-60"></a> <span class="n">QString</span> <span class="n">title</span><span class="p">;</span>
+<a name="line-61"></a> <span class="n">QString</span> <span class="n">description</span><span class="p">;</span>
+<a name="line-62"></a>
+<a name="line-63"></a> <span class="n">QString</span> <span class="n">timestamp</span><span class="p">;</span>
+<a name="line-64"></a> <span class="n">QString</span> <span class="n">creationTime</span><span class="p">;</span>
+<a name="line-65"></a>
+<a name="line-66"></a> <span class="n">QString</span> <span class="n">location</span><span class="p">;</span>
+<a name="line-67"></a> <span class="n">QString</span> <span class="n">gpsLon</span><span class="p">;</span>
+<a name="line-68"></a> <span class="n">QString</span> <span class="n">gpsLat</span><span class="p">;</span>
+<a name="line-69"></a>
+<a name="line-70"></a> <span class="kt">bool</span> <span class="n">canComment</span><span class="p">;</span>
+<a name="line-71"></a> <span class="n">QStringList</span> <span class="n">tags</span><span class="p">;</span>
+<a name="line-72"></a>
+<a name="line-73"></a> <span class="n">QString</span> <span class="n">width</span><span class="p">;</span>
+<a name="line-74"></a> <span class="n">QString</span> <span class="n">height</span><span class="p">;</span>
+<a name="line-75"></a>
+<a name="line-76"></a> <span class="n">QString</span> <span class="n">mimeType</span><span class="p">;</span>
+<a name="line-77"></a> <span class="n">QString</span> <span class="n">baseUrl</span><span class="p">;</span>
+<a name="line-78"></a> <span class="n">QUrl</span> <span class="n">originalURL</span><span class="p">;</span>
+<a name="line-79"></a> <span class="n">QUrl</span> <span class="n">thumbURL</span><span class="p">;</span>
+<a name="line-80"></a> <span class="n">QUrl</span> <span class="n">editUrl</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="c1">// -----------------------------------------------------------</span>
+<a name="line-84"></a>
+<a name="line-85"></a><span class="n">class</span> <span class="n">GSFolder</span>
+<a name="line-86"></a><span class="p">{</span>
+<a name="line-87"></a><span class="nl">public</span><span class="p">:</span>
+<a name="line-88"></a>
+<a name="line-89"></a> <span class="n">GSFolder</span><span class="p">()</span>
+<a name="line-90"></a> <span class="p">{</span>
+<a name="line-91"></a><span class="hll"> <span class="n">id</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;-1&quot;</span><span class="p">);</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'id' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;id&apos; a value by passing the value to the constructor in the initialization list.</div></div>
+</span><a name="line-92"></a> <span class="n">title</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&lt;auto-create&gt;&quot;</span><span class="p">);</span>
+<a name="line-93"></a> <span class="n">canComment</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-94"></a> <span class="n">isWriteable</span> <span class="o">=</span> <span class="nb">true</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="nl">public</span><span class="p">:</span>
+<a name="line-98"></a>
+<a name="line-99"></a> <span class="n">QString</span> <span class="n">id</span><span class="p">;</span>
+<a name="line-100"></a> <span class="n">QString</span> <span class="n">title</span><span class="p">;</span>
+<a name="line-101"></a> <span class="n">QString</span> <span class="n">timestamp</span><span class="p">;</span>
+<a name="line-102"></a> <span class="n">QString</span> <span class="n">description</span><span class="p">;</span>
+<a name="line-103"></a> <span class="n">QString</span> <span class="n">location</span><span class="p">;</span>
+<a name="line-104"></a> <span class="kt">bool</span> <span class="n">canComment</span><span class="p">;</span>
+<a name="line-105"></a> <span class="kt">bool</span> <span class="n">isWriteable</span><span class="p">;</span>
+<a name="line-106"></a> <span class="n">QStringList</span> <span class="n">tags</span><span class="p">;</span>
+<a name="line-107"></a> <span class="n">QString</span> <span class="n">url</span><span class="p">;</span>
+<a name="line-108"></a><span class="p">};</span>
+<a name="line-109"></a>
+<a name="line-110"></a><span class="p">}</span> <span class="c1">// namespace DigikamGenericGoogleServicesPlugin</span>
+<a name="line-111"></a>
+<a name="line-112"></a><span class="cp">#endif </span><span class="c1">// DIGIKAM_GS_ITEM_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/22.html b/static/reports/cppcheck/master/22.html
index c3ba29528..811eb0cdb 100644
--- a/static/reports/cppcheck/master/22.html
+++ b/static/reports/cppcheck/master/22.html
@@ -1,369 +1,1923 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/webservices/google/gsitem.h </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/generic/webservices/flickr/flickrwindow.cpp </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> gsitem.h</p>
-<a href='22.html#line-51'> useInitializationList 51</a><a href='22.html#line-91'> useInitializationList 91</a>
+ <p id="filename"><a href="index.html">Defects:</a> flickrwindow.cpp</p>
+<a href='22.html#line-563'> shadowVar 563</a><a href='22.html#line-575'> shadowVar 575</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</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
+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</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 : 2013-11-18</span>
-<a name="line-7"></a><span class="cm"> * Description : a tool to export items to Google web services</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) 2013 by Pankaj Kumar &lt;me at panks dot me&gt;</span>
-<a name="line-10"></a><span class="cm"> * Copyright (C) 2013-2018 by Caulier Gilles &lt;caulier dot gilles at gmail dot com&gt;</span>
-<a name="line-11"></a><span class="cm"> * Copyright (C) 2018 by Thanh Trung Dinh &lt;dinhthanhtrung1996 at gmail dot com&gt;</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">#ifndef DIGIKAM_GS_ITEM_H</span>
-<a name="line-26"></a><span class="cp">#define DIGIKAM_GS_ITEM_H</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;QUrl&gt;</span><span class="cp"></span>
-<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QString&gt;</span><span class="cp"></span>
-<a name="line-32"></a>
-<a name="line-33"></a><span class="n">namespace</span> <span class="n">DigikamGenericGoogleServicesPlugin</span>
-<a name="line-34"></a><span class="p">{</span>
-<a name="line-35"></a>
-<a name="line-36"></a><span class="k">enum</span> <span class="n">GoogleService</span>
-<a name="line-37"></a><span class="p">{</span>
-<a name="line-38"></a> <span class="n">GDrive</span> <span class="o">=</span> <span class="mi">1</span><span class="p">,</span>
-<a name="line-39"></a> <span class="n">GPhotoExport</span><span class="p">,</span>
-<a name="line-40"></a> <span class="n">GPhotoImport</span>
-<a name="line-41"></a><span class="p">};</span>
+<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="c1">// -----------------------------------------------------------</span>
-<a name="line-44"></a>
-<a name="line-45"></a><span class="n">class</span> <span class="n">GSPhoto</span>
-<a name="line-46"></a><span class="p">{</span>
-<a name="line-47"></a><span class="nl">public</span><span class="p">:</span>
-<a name="line-48"></a>
-<a name="line-49"></a> <span class="n">GSPhoto</span><span class="p">()</span>
-<a name="line-50"></a> <span class="p">{</span>
-<a name="line-51"></a><span class="hll"> <span class="n">id</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;-1&quot;</span><span class="p">);</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'id' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;id&apos; a value by passing the value to the constructor in the initialization list.</div></div>
-</span><a name="line-52"></a> <span class="n">canComment</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-53"></a> <span class="n">gpsLon</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-54"></a> <span class="n">gpsLat</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-55"></a> <span class="p">}</span>
-<a name="line-56"></a>
-<a name="line-57"></a><span class="nl">public</span><span class="p">:</span>
-<a name="line-58"></a>
-<a name="line-59"></a> <span class="n">QString</span> <span class="n">id</span><span class="p">;</span>
-<a name="line-60"></a> <span class="n">QString</span> <span class="n">title</span><span class="p">;</span>
-<a name="line-61"></a> <span class="n">QString</span> <span class="n">description</span><span class="p">;</span>
-<a name="line-62"></a>
-<a name="line-63"></a> <span class="n">QString</span> <span class="n">timestamp</span><span class="p">;</span>
-<a name="line-64"></a> <span class="n">QString</span> <span class="n">creationTime</span><span class="p">;</span>
-<a name="line-65"></a>
-<a name="line-66"></a> <span class="n">QString</span> <span class="n">location</span><span class="p">;</span>
-<a name="line-67"></a> <span class="n">QString</span> <span class="n">gpsLon</span><span class="p">;</span>
-<a name="line-68"></a> <span class="n">QString</span> <span class="n">gpsLat</span><span class="p">;</span>
-<a name="line-69"></a>
-<a name="line-70"></a> <span class="kt">bool</span> <span class="n">canComment</span><span class="p">;</span>
-<a name="line-71"></a> <span class="n">QStringList</span> <span class="n">tags</span><span class="p">;</span>
-<a name="line-72"></a>
-<a name="line-73"></a> <span class="n">QString</span> <span class="n">width</span><span class="p">;</span>
-<a name="line-74"></a> <span class="n">QString</span> <span class="n">height</span><span class="p">;</span>
-<a name="line-75"></a>
-<a name="line-76"></a> <span class="n">QString</span> <span class="n">mimeType</span><span class="p">;</span>
-<a name="line-77"></a> <span class="n">QString</span> <span class="n">baseUrl</span><span class="p">;</span>
-<a name="line-78"></a> <span class="n">QUrl</span> <span class="n">originalURL</span><span class="p">;</span>
-<a name="line-79"></a> <span class="n">QUrl</span> <span class="n">thumbURL</span><span class="p">;</span>
-<a name="line-80"></a> <span class="n">QUrl</span> <span class="n">editUrl</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="c1">// -----------------------------------------------------------</span>
-<a name="line-84"></a>
-<a name="line-85"></a><span class="n">class</span> <span class="n">GSFolder</span>
-<a name="line-86"></a><span class="p">{</span>
-<a name="line-87"></a><span class="nl">public</span><span class="p">:</span>
-<a name="line-88"></a>
-<a name="line-89"></a> <span class="n">GSFolder</span><span class="p">()</span>
-<a name="line-90"></a> <span class="p">{</span>
-<a name="line-91"></a><span class="hll"> <span class="n">id</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;-1&quot;</span><span class="p">);</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'id' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;id&apos; a value by passing the value to the constructor in the initialization list.</div></div>
-</span><a name="line-92"></a> <span class="n">title</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&lt;auto-create&gt;&quot;</span><span class="p">);</span>
-<a name="line-93"></a> <span class="n">canComment</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-94"></a> <span class="n">isWriteable</span> <span class="o">=</span> <span class="nb">true</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="nl">public</span><span class="p">:</span>
-<a name="line-98"></a>
-<a name="line-99"></a> <span class="n">QString</span> <span class="n">id</span><span class="p">;</span>
-<a name="line-100"></a> <span class="n">QString</span> <span class="n">title</span><span class="p">;</span>
-<a name="line-101"></a> <span class="n">QString</span> <span class="n">timestamp</span><span class="p">;</span>
-<a name="line-102"></a> <span class="n">QString</span> <span class="n">description</span><span class="p">;</span>
-<a name="line-103"></a> <span class="n">QString</span> <span class="n">location</span><span class="p">;</span>
-<a name="line-104"></a> <span class="kt">bool</span> <span class="n">canComment</span><span class="p">;</span>
-<a name="line-105"></a> <span class="kt">bool</span> <span class="n">isWriteable</span><span class="p">;</span>
-<a name="line-106"></a> <span class="n">QStringList</span> <span class="n">tags</span><span class="p">;</span>
-<a name="line-107"></a> <span class="n">QString</span> <span class="n">url</span><span class="p">;</span>
-<a name="line-108"></a><span class="p">};</span>
-<a name="line-109"></a>
-<a name="line-110"></a><span class="p">}</span> <span class="c1">// namespace DigikamGenericGoogleServicesPlugin</span>
-<a name="line-111"></a>
-<a name="line-112"></a><span class="cp">#endif </span><span class="c1">// DIGIKAM_GS_ITEM_H</span>
+<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="p">{</span>
+<a name="line-67"></a> <span class="n">uploadCount</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-68"></a> <span class="n">uploadTotal</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-69"></a> <span class="n">newAlbumBtn</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-70"></a> <span class="n">changeUserButton</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-71"></a> <span class="n">removeAccount</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-72"></a> <span class="n">albumsListComboBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-73"></a> <span class="n">publicCheckBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-74"></a> <span class="n">familyCheckBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-75"></a> <span class="n">friendsCheckBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-76"></a> <span class="n">exportHostTagsCheckBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-77"></a> <span class="n">stripSpaceTagsCheckBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-78"></a> <span class="n">addExtraTagsCheckBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-79"></a> <span class="n">originalCheckBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-80"></a> <span class="n">resizeCheckBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-81"></a> <span class="n">dimensionSpinBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-82"></a> <span class="n">imageQualitySpinBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-83"></a> <span class="n">extendedPublicationButton</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-84"></a> <span class="n">extendedTagsButton</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-85"></a> <span class="n">contentTypeComboBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-86"></a> <span class="n">safetyLevelComboBox</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-87"></a> <span class="n">userNameDisplayLabel</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-88"></a> <span class="n">authProgressDlg</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-89"></a> <span class="n">tagsLineEdit</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-90"></a> <span class="n">widget</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-91"></a> <span class="n">talker</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-92"></a> <span class="n">imglst</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-93"></a> <span class="n">select</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-94"></a> <span class="n">albumDlg</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-95"></a> <span class="n">iface</span> <span class="o">=</span> <span class="k">nullptr</span><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="k">continue</span><span class="p">;</span>
+<a name="line-446"></a>
+<a name="line-447"></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-448"></a>
+<a name="line-449"></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-450"></a> <span class="p">{</span>
+<a name="line-451"></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-452"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-453"></a> <span class="p">}</span>
+<a name="line-454"></a> <span class="p">}</span>
+<a name="line-455"></a>
+<a name="line-456"></a> <span class="n">writeSettings</span><span class="p">();</span>
+<a name="line-457"></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-458"></a><span class="p">}</span>
+<a name="line-459"></a>
+<a name="line-460"></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-461"></a><span class="p">{</span>
+<a name="line-462"></a> <span class="k">if</span> <span class="p">(</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="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-465"></a> <span class="p">}</span>
+<a name="line-466"></a> <span class="k">else</span>
+<a name="line-467"></a> <span class="p">{</span>
+<a name="line-468"></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-469"></a> <span class="p">}</span>
+<a name="line-470"></a><span class="p">}</span>
+<a name="line-471"></a>
+<a name="line-472"></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-473"></a><span class="p">{</span>
+<a name="line-474"></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-475"></a><span class="p">}</span>
+<a name="line-476"></a>
+<a name="line-477"></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-478"></a><span class="p">{</span>
+<a name="line-479"></a> <span class="n">writeSettings</span><span class="p">();</span>
+<a name="line-480"></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-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;Slot Change User Request&quot;</span><span class="p">;</span>
+<a name="line-482"></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-483"></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-484"></a>
+<a name="line-485"></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-486"></a><span class="p">}</span>
+<a name="line-487"></a>
+<a name="line-488"></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-489"></a><span class="p">{</span>
+<a name="line-490"></a> <span class="n">KConfig</span> <span class="n">config</span><span class="p">;</span>
+<a name="line-491"></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-492"></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-493"></a>
+<a name="line-494"></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-495"></a> <span class="p">{</span>
+<a name="line-496"></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-497"></a> <span class="n">grp</span><span class="p">.</span><span class="n">deleteGroup</span><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="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-501"></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-502"></a>
+<a name="line-503"></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-504"></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-505"></a><span class="p">}</span>
+<a name="line-506"></a>
+<a name="line-507"></a><span class="cm">/**</span>
+<a name="line-508"></a><span class="cm"> * Try to guess a sensible set name from the urls given.</span>
+<a name="line-509"></a><span class="cm"> * Currently, it extracs the last path name component, and returns the most</span>
+<a name="line-510"></a><span class="cm"> * frequently seen. The function could be expanded to, for example, only</span>
+<a name="line-511"></a><span class="cm"> * accept the path if it occurs at least 50% of the time. It could also look</span>
+<a name="line-512"></a><span class="cm"> * further up in the path name.</span>
+<a name="line-513"></a><span class="cm"> */</span>
+<a name="line-514"></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-515"></a><span class="p">{</span>
+<a name="line-516"></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-517"></a>
+<a name="line-518"></a> <span class="c1">// Extract last component of directory</span>
+<a name="line-519"></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-520"></a> <span class="p">{</span>
+<a name="line-521"></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-522"></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-523"></a>
+<a name="line-524"></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-525"></a> <span class="k">continue</span><span class="p">;</span>
+<a name="line-526"></a>
+<a name="line-527"></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-528"></a> <span class="p">}</span>
+<a name="line-529"></a>
+<a name="line-530"></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-531"></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-532"></a> <span class="n">QString</span> <span class="n">name</span><span class="p">;</span>
+<a name="line-533"></a>
+<a name="line-534"></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>
+<a name="line-535"></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-536"></a> <span class="p">{</span>
+<a name="line-537"></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-538"></a>
+<a name="line-539"></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-540"></a> <span class="p">{</span>
+<a name="line-541"></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-542"></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-543"></a> <span class="p">}</span>
+<a name="line-544"></a> <span class="p">}</span>
+<a name="line-545"></a>
+<a name="line-546"></a> <span class="c1">// If there is only one entry or one name appears at least twice, return the suggestion</span>
+<a name="line-547"></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="o">||</span> <span class="n">maxCount</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">)</span>
+<a name="line-548"></a> <span class="k">return</span> <span class="n">name</span><span class="p">;</span>
+<a name="line-549"></a>
+<a name="line-550"></a> <span class="k">return</span> <span class="nf">QString</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="cm">/** This method is called when the photo set creation button is pressed. It</span>
+<a name="line-554"></a><span class="cm"> * summons a creation dialog for user input. When that is closed, it</span>
+<a name="line-555"></a><span class="cm"> * creates a new photo set in the local list. The id gets the form of</span>
+<a name="line-556"></a><span class="cm"> * UNDEFINED_ followed by a number, to indicate that it doesn&#39;t exist on</span>
+<a name="line-557"></a><span class="cm"> * Flickr yet.</span>
+<a name="line-558"></a><span class="cm"> */</span>
+<a name="line-559"></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-560"></a><span class="p">{</span>
+<a name="line-561"></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-562"></a> <span class="p">{</span>
+<a name="line-563"></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-564"></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-565"></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-566"></a>
+<a name="line-567"></a> <span class="c1">// Lets find an UNDEFINED_ style id that isn&#39;t taken yet.s</span>
+<a name="line-568"></a> <span class="n">QString</span> <span class="n">id</span><span class="p">;</span>
+<a name="line-569"></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-570"></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-571"></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-572"></a>
+<a name="line-573"></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-574"></a> <span class="p">{</span>
+<a name="line-575"></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-576"></a>
+<a name="line-577"></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-578"></a> <span class="p">{</span>
+<a name="line-579"></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-580"></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-581"></a> <span class="p">}</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="p">}</span>
+<a name="line-585"></a>
+<a name="line-586"></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-587"></a>
+<a name="line-588"></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-589"></a> <span class="c1">// Append the new photoset to the list.</span>
+<a name="line-590"></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-591"></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-592"></a>
+<a name="line-593"></a> <span class="c1">// Re-populate the photo sets combo box.</span>
+<a name="line-594"></a> <span class="n">slotPopulatePhotoSetComboBox</span><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">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-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="kt">void</span> <span class="n">FlickrWindow</span><span class="o">::</span><span class="n">slotAuthCancel</span><span class="p">()</span>
+<a name="line-603"></a><span class="p">{</span>
+<a name="line-604"></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-605"></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-606"></a><span class="p">}</span>
+<a name="line-607"></a>
+<a name="line-608"></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-609"></a><span class="p">{</span>
+<a name="line-610"></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-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">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-613"></a> <span class="p">{</span>
+<a name="line-614"></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-615"></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-616"></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-617"></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-618"></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-619"></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-620"></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-621"></a>
+<a name="line-622"></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-623"></a> <span class="p">{</span>
+<a name="line-624"></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-625"></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-626"></a> <span class="c1">// Store the id as user data, because the title is not unique.</span>
+<a name="line-627"></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-628"></a>
+<a name="line-629"></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-630"></a> <span class="p">{</span>
+<a name="line-631"></a> <span class="n">curr_index</span> <span class="o">=</span> <span class="n">index</span><span class="p">;</span>
+<a name="line-632"></a> <span class="p">}</span>
+<a name="line-633"></a>
+<a name="line-634"></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-635"></a> <span class="o">++</span><span class="n">it</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">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-639"></a> <span class="p">}</span>
+<a name="line-640"></a><span class="p">}</span>
+<a name="line-641"></a>
+<a name="line-642"></a><span class="cm">/** This slot is call when &#39;Start Uploading&#39; button is pressed.</span>
+<a name="line-643"></a><span class="cm">*/</span>
+<a name="line-644"></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-645"></a><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="s">&quot;SlotUploadImages invoked&quot;</span><span class="p">;</span>
+<a name="line-647"></a>
+<a name="line-648"></a> <span class="c1">//d-&gt;widget-&gt;d-&gt;tab-&gt;setCurrentIndex(FlickrWidget::FILELIST);</span>
+<a name="line-649"></a>
+<a name="line-650"></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-651"></a> <span class="p">{</span>
+<a name="line-652"></a> <span class="k">return</span><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">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-656"></a>
+<a name="line-657"></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-658"></a>
+<a name="line-659"></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-660"></a> <span class="p">{</span>
+<a name="line-661"></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-662"></a>
+<a name="line-663"></a> <span class="k">if</span> <span class="p">(</span><span class="n">lvItem</span><span class="p">)</span>
+<a name="line-664"></a> <span class="p">{</span>
+<a name="line-665"></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-666"></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-667"></a> <span class="n">FPhotoInfo</span> <span class="n">temp</span><span class="p">;</span>
+<a name="line-668"></a>
+<a name="line-669"></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-670"></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-671"></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-672"></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-673"></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-674"></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-675"></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-676"></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-677"></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-678"></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-679"></a>
+<a name="line-680"></a> <span class="n">QStringList</span> <span class="n">allTags</span><span class="p">;</span>
+<a name="line-681"></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-682"></a>
+<a name="line-683"></a> <span class="c1">// Tags from the dialog</span>
+<a name="line-684"></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-685"></a>
+<a name="line-686"></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-687"></a> <span class="p">{</span>
+<a name="line-688"></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-689"></a> <span class="o">++</span><span class="n">itTags</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="c1">// Tags from the database</span>
+<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">exportHostTagsCheckBox</span><span class="o">-&gt;</span><span class="n">isChecked</span><span class="p">())</span>
+<a name="line-694"></a> <span class="p">{</span>
+<a name="line-695"></a> <span class="n">QStringList</span> <span class="n">tagsFromDatabase</span><span class="p">;</span>
+<a name="line-696"></a>
+<a name="line-697"></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-698"></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-699"></a>
+<a name="line-700"></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-701"></a> <span class="p">{</span>
+<a name="line-702"></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-703"></a> <span class="o">++</span><span class="n">itTags</span><span class="p">;</span>
+<a name="line-704"></a> <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="c1">// Tags from the list view.</span>
+<a name="line-708"></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-709"></a>
+<a name="line-710"></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-711"></a> <span class="p">{</span>
+<a name="line-712"></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-713"></a> <span class="o">++</span><span class="n">itTags</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="c1">// Remove spaces if the user doesn&#39;t like them.</span>
+<a name="line-717"></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-718"></a> <span class="p">{</span>
+<a name="line-719"></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>
+<a name="line-720"></a> <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>
+<a name="line-721"></a> <span class="o">++</span><span class="n">it</span><span class="p">)</span>
+<a name="line-722"></a> <span class="p">{</span>
+<a name="line-723"></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-724"></a> <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="c1">// Debug the tag list.</span>
+<a name="line-728"></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-729"></a>
+<a name="line-730"></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-731"></a> <span class="p">{</span>
+<a name="line-732"></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-733"></a> <span class="o">++</span><span class="n">itTags</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">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-737"></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-738"></a> <span class="p">}</span>
+<a name="line-739"></a> <span class="p">}</span>
+<a name="line-740"></a>
+<a name="line-741"></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-742"></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-743"></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-744"></a> <span class="n">slotAddPhotoNext</span><span class="p">();</span>
+<a name="line-745"></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-746"></a><span class="p">}</span>
+<a name="line-747"></a>
+<a name="line-748"></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-749"></a><span class="p">{</span>
+<a name="line-750"></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-751"></a> <span class="p">{</span>
+<a name="line-752"></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-753"></a> <span class="n">setUiInProgressState</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
+<a name="line-754"></a> <span class="k">return</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">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-758"></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-759"></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-760"></a>
+<a name="line-761"></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-762"></a>
+<a name="line-763"></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-764"></a> <span class="p">{</span>
+<a name="line-765"></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-766"></a> <span class="p">}</span>
+<a name="line-767"></a> <span class="k">else</span>
+<a name="line-768"></a> <span class="p">{</span>
+<a name="line-769"></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-770"></a>
+<a name="line-771"></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-772"></a> <span class="p">{</span>
+<a name="line-773"></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-774"></a> <span class="p">{</span>
+<a name="line-775"></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-776"></a> <span class="k">break</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="o">++</span><span class="n">it</span><span class="p">;</span>
+<a name="line-780"></a> <span class="p">}</span>
+<a name="line-781"></a> <span class="p">}</span>
+<a name="line-782"></a>
+<a name="line-783"></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-784"></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-785"></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-786"></a>
+<a name="line-787"></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-788"></a> <span class="n">info</span><span class="p">,</span>
+<a name="line-789"></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-790"></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-791"></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-792"></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-793"></a>
+<a name="line-794"></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-795"></a> <span class="p">{</span>
+<a name="line-796"></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-797"></a> <span class="k">return</span><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="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-801"></a> <span class="p">{</span>
+<a name="line-802"></a> <span class="n">setUiInProgressState</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-803"></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-804"></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-805"></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-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="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-810"></a><span class="p">{</span>
+<a name="line-811"></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-812"></a>
+<a name="line-813"></a> <span class="c1">// Set location for uploaded photo</span>
+<a name="line-814"></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-815"></a>
+<a name="line-816"></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-817"></a> <span class="p">{</span>
+<a name="line-818"></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-819"></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-820"></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-821"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-822"></a> <span class="p">}</span>
+<a name="line-823"></a>
+<a name="line-824"></a> <span class="c1">// Remove photo uploaded from the list</span>
+<a name="line-825"></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-826"></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-827"></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-828"></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-829"></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-830"></a> <span class="n">slotAddPhotoNext</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="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-834"></a><span class="p">{</span>
+<a name="line-835"></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-836"></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-837"></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-838"></a><span class="p">}</span>
+<a name="line-839"></a>
+<a name="line-840"></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-841"></a><span class="p">{</span>
+<a name="line-842"></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-843"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Warning&quot;</span><span class="p">),</span>
+<a name="line-844"></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-845"></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-846"></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-847"></a>
+<a name="line-848"></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-849"></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-850"></a>
+<a name="line-851"></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-852"></a> <span class="p">{</span>
+<a name="line-853"></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-854"></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-855"></a> <span class="n">setUiInProgressState</span><span class="p">(</span><span class="nb">false</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">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-860"></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-861"></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-862"></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-863"></a> <span class="n">slotAddPhotoNext</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">delete</span> <span class="n">warn</span><span class="p">;</span>
+<a name="line-867"></a><span class="p">}</span>
+<a name="line-868"></a>
+<a name="line-869"></a><span class="cm">/* Method called when a photo set has been successfully created on Flickr.</span>
+<a name="line-870"></a><span class="cm"> * It functions to restart the normal flow after a photo set has been created</span>
+<a name="line-871"></a><span class="cm"> * on Flickr.</span>
+<a name="line-872"></a><span class="cm"> */</span>
+<a name="line-873"></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-874"></a><span class="p">{</span>
+<a name="line-875"></a> <span class="n">slotPopulatePhotoSetComboBox</span><span class="p">();</span>
+<a name="line-876"></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-877"></a><span class="p">}</span>
+<a name="line-878"></a>
+<a name="line-879"></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-880"></a><span class="p">{</span>
+<a name="line-881"></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-882"></a><span class="p">}</span>
+<a name="line-883"></a>
+<a name="line-884"></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-885"></a><span class="p">{</span>
+<a name="line-886"></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-887"></a><span class="p">}</span>
+<a name="line-888"></a>
+<a name="line-889"></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/23.html b/static/reports/cppcheck/master/23.html
index 7dbcf0cd9..839a40099 100644
--- a/static/reports/cppcheck/master/23.html
+++ b/static/reports/cppcheck/master/23.html
@@ -1,439 +1,439 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/webservices/imageshack/imageshackmpform.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/generic/webservices/imageshack/imageshackmpform.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> imageshackmpform.cpp</p>
<a href='23.html#line-45'> useInitializationList 45</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</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 : 2012-02-02</span>
<a name="line-7"></a><span class="cm"> * Description : a tool to export items to ImageShack web service</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2012 by Dodon Victor &lt;dodonvictor at gmail dot com&gt;</span>
<a name="line-10"></a><span class="cm"> * Copyright (C) 2013-2018 by Caulier Gilles &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;imageshackmpform.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;QFile&gt;</span><span class="cp"></span>
<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QUrl&gt;</span><span class="cp"></span>
<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QMimeDatabase&gt;</span><span class="cp"></span>
<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QMimeType&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;digikam_debug.h&quot;</span><span class="cp"></span>
<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&quot;wstoolutils.h&quot;</span><span class="cp"></span>
<a name="line-37"></a>
<a name="line-38"></a><span class="k">using</span> <span class="k">namespace</span> <span class="n">Digikam</span><span class="p">;</span>
<a name="line-39"></a>
<a name="line-40"></a><span class="k">namespace</span> <span class="n">DigikamGenericImageShackPlugin</span>
<a name="line-41"></a><span class="p">{</span>
<a name="line-42"></a>
<a name="line-43"></a><span class="n">ImageShackMPForm</span><span class="o">::</span><span class="n">ImageShackMPForm</span><span class="p">()</span>
<a name="line-44"></a><span class="p">{</span>
<a name="line-45"></a><span class="hll"> <span class="n">m_boundary</span> <span class="o">=</span> <span class="n">WSToolUtils</span><span class="o">::</span><span class="n">randomString</span><span class="p">(</span><span class="mi">42</span> <span class="o">+</span> <span class="mi">13</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">();</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'm_boundary' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;m_boundary&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-46"></a> <span class="n">reset</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">ImageShackMPForm</span><span class="o">::~</span><span class="n">ImageShackMPForm</span><span class="p">()</span>
<a name="line-50"></a><span class="p">{</span>
<a name="line-51"></a><span class="p">}</span>
<a name="line-52"></a>
<a name="line-53"></a><span class="kt">void</span> <span class="n">ImageShackMPForm</span><span class="o">::</span><span class="n">reset</span><span class="p">()</span>
<a name="line-54"></a><span class="p">{</span>
<a name="line-55"></a> <span class="n">m_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-56"></a> <span class="n">QByteArray</span> <span class="nf">str</span><span class="p">(</span><span class="n">contentType</span><span class="p">().</span><span class="n">toLatin1</span><span class="p">());</span>
<a name="line-57"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n</span><span class="s">MIME-version: 1.0</span><span class="se">\r\n\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-58"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">str</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="kt">void</span> <span class="n">ImageShackMPForm</span><span class="o">::</span><span class="n">finish</span><span class="p">()</span>
<a name="line-62"></a><span class="p">{</span>
<a name="line-63"></a> <span class="n">QByteArray</span> <span class="n">str</span><span class="p">;</span>
<a name="line-64"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;--&quot;</span><span class="p">;</span>
<a name="line-65"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">m_boundary</span><span class="p">;</span>
<a name="line-66"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;--&quot;</span><span class="p">;</span>
<a name="line-67"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">str</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="kt">void</span> <span class="n">ImageShackMPForm</span><span class="o">::</span><span class="n">addPair</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">value</span><span class="p">)</span>
<a name="line-71"></a><span class="p">{</span>
<a name="line-72"></a> <span class="n">QByteArray</span> <span class="n">str</span><span class="p">;</span>
<a name="line-73"></a> <span class="n">QString</span> <span class="n">content_length</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">value</span><span class="p">.</span><span class="n">length</span><span class="p">());</span>
<a name="line-74"></a>
<a name="line-75"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;--&quot;</span><span class="p">;</span>
<a name="line-76"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">m_boundary</span><span class="p">;</span>
<a name="line-77"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-78"></a>
<a name="line-79"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">name</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-80"></a> <span class="p">{</span>
<a name="line-81"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;Content-Disposition: form-data; name=</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-82"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">name</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">();</span>
<a name="line-83"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\&quot;\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-84"></a> <span class="p">}</span>
<a name="line-85"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-86"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">value</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">();</span>
<a name="line-87"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-88"></a>
<a name="line-89"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">str</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="kt">bool</span> <span class="n">ImageShackMPForm</span><span class="o">::</span><span class="n">addFile</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">path</span><span class="p">)</span>
<a name="line-93"></a><span class="p">{</span>
<a name="line-94"></a> <span class="n">QMimeDatabase</span> <span class="n">db</span><span class="p">;</span>
<a name="line-95"></a> <span class="n">QMimeType</span> <span class="n">ptr</span> <span class="o">=</span> <span class="n">db</span><span class="p">.</span><span class="n">mimeTypeForUrl</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">path</span><span class="p">));</span>
<a name="line-96"></a> <span class="n">QString</span> <span class="n">mime</span> <span class="o">=</span> <span class="n">ptr</span><span class="p">.</span><span class="n">name</span><span class="p">();</span>
<a name="line-97"></a>
<a name="line-98"></a> <span class="k">if</span> <span class="p">(</span><span class="n">mime</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-99"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-100"></a>
<a name="line-101"></a> <span class="n">QFile</span> <span class="nf">imageFile</span><span class="p">(</span><span class="n">path</span><span class="p">);</span>
<a name="line-102"></a>
<a name="line-103"></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-104"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-105"></a>
<a name="line-106"></a> <span class="n">QByteArray</span> <span class="n">imageData</span> <span class="o">=</span> <span class="n">imageFile</span><span class="p">.</span><span class="n">readAll</span><span class="p">();</span>
<a name="line-107"></a>
<a name="line-108"></a> <span class="n">QString</span> <span class="n">file_size</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">imageFile</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
<a name="line-109"></a> <span class="n">imageFile</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
<a name="line-110"></a>
<a name="line-111"></a> <span class="n">QByteArray</span> <span class="n">str</span><span class="p">;</span>
<a name="line-112"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;--&quot;</span><span class="p">;</span>
<a name="line-113"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">m_boundary</span><span class="p">;</span>
<a name="line-114"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-115"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;Content-Disposition: form-data; name=</span><span class="se">\&quot;</span><span class="s">fileupload</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>
<a name="line-116"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">QFile</span><span class="o">::</span><span class="n">encodeName</span><span class="p">(</span><span class="n">name</span><span class="p">);</span>
<a name="line-117"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\&quot;\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-118"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;Content-Length: &quot;</span><span class="p">;</span>
<a name="line-119"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">file_size</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">();</span>
<a name="line-120"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-121"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;Content-Type: &quot;</span><span class="p">;</span>
<a name="line-122"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">mime</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">();</span>
<a name="line-123"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-124"></a>
<a name="line-125"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">str</span><span class="p">);</span>
<a name="line-126"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">imageData</span><span class="p">);</span>
<a name="line-127"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">);</span>
<a name="line-128"></a>
<a name="line-129"></a> <span class="k">return</span> <span class="nb">true</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">QString</span> <span class="n">ImageShackMPForm</span><span class="o">::</span><span class="n">contentType</span><span class="p">()</span> <span class="k">const</span>
<a name="line-133"></a><span class="p">{</span>
<a name="line-134"></a> <span class="k">return</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">QLatin1String</span><span class="p">(</span><span class="n">m_boundary</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">QString</span> <span class="n">ImageShackMPForm</span><span class="o">::</span><span class="n">boundary</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">QLatin1String</span><span class="p">(</span><span class="n">m_boundary</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">QByteArray</span> <span class="n">ImageShackMPForm</span><span class="o">::</span><span class="n">formData</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">m_buffer</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="p">}</span> <span class="c1">// namespace DigikamGenericImageShackPlugin</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
index 815cb40ba..fa1b965fe 100644
--- a/static/reports/cppcheck/master/24.html
+++ b/static/reports/cppcheck/master/24.html
@@ -1,1037 +1,1037 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/webservices/mediawiki/backend/mediawiki_edit.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../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='24.html#line-297'> shadowVar 297</a><a href='24.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/25.html b/static/reports/cppcheck/master/25.html
index 9b6b0d313..00246cdc3 100644
--- a/static/reports/cppcheck/master/25.html
+++ b/static/reports/cppcheck/master/25.html
@@ -1,617 +1,617 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/webservices/mediawiki/backend/mediawiki_queryinfo.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../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='25.html#line-111'> shadowVar 111</a><a href='25.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/26.html b/static/reports/cppcheck/master/26.html
index 417286b4f..4ddcc8aa9 100644
--- a/static/reports/cppcheck/master/26.html
+++ b/static/reports/cppcheck/master/26.html
@@ -1,367 +1,379 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/webservices/mediawiki/tests/fakeserver/fakeserver.h </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/generic/webservices/mediawiki/tests/logouttest.cpp </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> fakeserver.h</p>
-<a href='26.html#line-56'> useInitializationList 56</a><a href='26.html#line-57'> useInitializationList 57</a><a href='26.html#line-58'> useInitializationList 58</a>
+ <p id="filename"><a href="index.html">Defects:</a> logouttest.cpp</p>
+<a href='26.html#line-95'> shadowVar 95</a><a href='26.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</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
+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 : 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) 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">#ifndef DIGIKAM_MEDIAWIKI_FAKE_SERVER_H</span>
-<a name="line-27"></a><span class="cp">#define DIGIKAM_MEDIAWIKI_FAKE_SERVER_H</span>
-<a name="line-28"></a>
-<a name="line-29"></a><span class="c1">// Qt includes</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="cp">#include</span> <span class="cpf">&lt;QList&gt;</span><span class="cp"></span>
-<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QMutex&gt;</span><span class="cp"></span>
-<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QObject&gt;</span><span class="cp"></span>
-<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QString&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><span class="cp">#include</span> <span class="cpf">&lt;QThread&gt;</span><span class="cp"></span>
-<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&lt;QTcpServer&gt;</span><span class="cp"></span>
-<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&lt;QTcpSocket&gt;</span><span class="cp"></span>
-<a name="line-39"></a>
-<a name="line-40"></a><span class="n">class</span> <span class="nl">FakeServer</span> <span class="p">:</span> <span class="n">QThread</span>
-<a name="line-41"></a><span class="p">{</span>
-<a name="line-42"></a> <span class="n">Q_OBJECT</span>
+<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="nl">public</span><span class="p">:</span>
-<a name="line-45"></a>
-<a name="line-46"></a> <span class="n">class</span> <span class="n">Request</span>
-<a name="line-47"></a> <span class="p">{</span>
-<a name="line-48"></a> <span class="nl">public</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">Request</span><span class="p">()</span>
-<a name="line-51"></a> <span class="p">{</span>
-<a name="line-52"></a> <span class="p">}</span>
-<a name="line-53"></a>
-<a name="line-54"></a> <span class="n">Request</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="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">a</span><span class="p">,</span> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">v</span><span class="p">)</span>
-<a name="line-55"></a> <span class="p">{</span>
-<a name="line-56"></a><span class="hll"> <span class="n">type</span> <span class="o">=</span> <span class="n">t</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'type' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;type&apos; a value by passing the value to the constructor in the initialization list.</div></div>
-</span><a name="line-57"></a><span class="hll"> <span class="n">agent</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'agent' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;agent&apos; a value by passing the value to the constructor in the initialization list.</div></div>
-</span><a name="line-58"></a><span class="hll"> <span class="n">value</span> <span class="o">=</span> <span class="n">v</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'value' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;value&apos; a value by passing the value to the constructor in the initialization list.</div></div>
-</span><a name="line-59"></a> <span class="p">}</span>
-<a name="line-60"></a>
-<a name="line-61"></a> <span class="kt">bool</span> <span class="n">operator</span><span class="o">==</span><span class="p">(</span><span class="k">const</span> <span class="n">FakeServer</span><span class="o">::</span><span class="n">Request</span> <span class="o">&amp;</span><span class="n">other</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-62"></a> <span class="p">{</span>
-<a name="line-63"></a> <span class="k">return</span> <span class="n">this</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">other</span><span class="p">.</span><span class="n">type</span> <span class="o">&amp;&amp;</span>
-<a name="line-64"></a> <span class="n">this</span><span class="o">-&gt;</span><span class="n">agent</span> <span class="o">==</span> <span class="n">other</span><span class="p">.</span><span class="n">agent</span> <span class="o">&amp;&amp;</span>
-<a name="line-65"></a> <span class="n">this</span><span class="o">-&gt;</span><span class="n">value</span> <span class="o">==</span> <span class="n">other</span><span class="p">.</span><span class="n">value</span><span class="p">;</span>
-<a name="line-66"></a> <span class="p">}</span>
-<a name="line-67"></a>
-<a name="line-68"></a> <span class="nl">public</span><span class="p">:</span>
-<a name="line-69"></a>
-<a name="line-70"></a> <span class="n">QString</span> <span class="n">type</span><span class="p">;</span>
-<a name="line-71"></a> <span class="n">QString</span> <span class="n">agent</span><span class="p">;</span>
-<a name="line-72"></a> <span class="n">QString</span> <span class="n">value</span><span class="p">;</span>
-<a name="line-73"></a> <span class="p">};</span>
+<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="nl">public</span><span class="p">:</span>
-<a name="line-76"></a>
-<a name="line-77"></a> <span class="n">explicit</span> <span class="n">FakeServer</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="o">=</span> <span class="n">nullptr</span><span class="p">);</span>
-<a name="line-78"></a> <span class="o">~</span><span class="n">FakeServer</span><span class="p">();</span>
-<a name="line-79"></a>
-<a name="line-80"></a> <span class="kt">void</span> <span class="nf">startAndWait</span><span class="p">();</span>
-<a name="line-81"></a> <span class="kt">void</span> <span class="nf">run</span><span class="p">()</span> <span class="n">override</span><span class="p">;</span>
-<a name="line-82"></a>
-<a name="line-83"></a> <span class="kt">void</span> <span class="nf">setScenario</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">scenario</span><span class="p">,</span> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">cookie</span> <span class="o">=</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;empty&quot;</span><span class="p">));</span>
-<a name="line-84"></a> <span class="kt">void</span> <span class="nf">addScenario</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">scenario</span><span class="p">,</span> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">cookie</span> <span class="o">=</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;empty&quot;</span><span class="p">));</span>
-<a name="line-85"></a> <span class="kt">void</span> <span class="nf">addScenarioFromFile</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">fileName</span><span class="p">,</span> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">cookie</span> <span class="o">=</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;empty&quot;</span><span class="p">));</span>
-<a name="line-86"></a>
-<a name="line-87"></a> <span class="kt">bool</span> <span class="nf">isScenarioDone</span><span class="p">(</span><span class="kt">int</span> <span class="n">scenarioNumber</span><span class="p">)</span> <span class="k">const</span><span class="p">;</span>
-<a name="line-88"></a> <span class="kt">bool</span> <span class="nf">isAllScenarioDone</span><span class="p">()</span> <span class="k">const</span><span class="p">;</span>
-<a name="line-89"></a>
-<a name="line-90"></a> <span class="k">const</span> <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;&amp;</span> <span class="n">getRequest</span><span class="p">();</span>
-<a name="line-91"></a> <span class="n">FakeServer</span><span class="o">::</span><span class="n">Request</span> <span class="n">takeLastRequest</span><span class="p">();</span>
-<a name="line-92"></a> <span class="n">FakeServer</span><span class="o">::</span><span class="n">Request</span> <span class="n">takeFirstRequest</span><span class="p">();</span>
-<a name="line-93"></a> <span class="kt">void</span> <span class="nf">clearRequest</span><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="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="n">private</span> <span class="nl">Q_SLOTS</span><span class="p">:</span>
-<a name="line-96"></a>
-<a name="line-97"></a> <span class="kt">void</span> <span class="n">newConnection</span><span class="p">();</span>
-<a name="line-98"></a> <span class="kt">void</span> <span class="nf">dataAvailable</span><span class="p">();</span>
-<a name="line-99"></a> <span class="kt">void</span> <span class="nf">started</span><span class="p">();</span>
+<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="nl">private</span><span class="p">:</span>
-<a name="line-102"></a>
-<a name="line-103"></a> <span class="n">QStringList</span> <span class="n">m_scenarios</span><span class="p">;</span>
-<a name="line-104"></a> <span class="n">QStringList</span> <span class="n">m_cookie</span><span class="p">;</span>
-<a name="line-105"></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">m_request</span><span class="p">;</span>
-<a name="line-106"></a> <span class="n">QTcpServer</span><span class="o">*</span> <span class="n">m_tcpServer</span><span class="p">;</span>
-<a name="line-107"></a> <span class="n">mutable</span> <span class="n">QMutex</span> <span class="n">m_mutex</span><span class="p">;</span>
-<a name="line-108"></a> <span class="n">QTcpSocket</span><span class="o">*</span> <span class="n">m_clientSocket</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="cp">#endif </span><span class="c1">// DIGIKAM_MEDIAWIKI_FAKE_SERVER_H</span>
+<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/27.html b/static/reports/cppcheck/master/27.html
index 0d43cedae..2e1246333 100644
--- a/static/reports/cppcheck/master/27.html
+++ b/static/reports/cppcheck/master/27.html
@@ -1,379 +1,367 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/webservices/mediawiki/tests/logouttest.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/generic/webservices/mediawiki/tests/fakeserver/fakeserver.h </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> logouttest.cpp</p>
-<a href='27.html#line-95'> shadowVar 95</a><a href='27.html#line-110'> shadowVar 110</a>
+ <p id="filename"><a href="index.html">Defects:</a> fakeserver.h</p>
+<a href='27.html#line-56'> useInitializationList 56</a><a href='27.html#line-57'> useInitializationList 57</a><a href='27.html#line-58'> useInitializationList 58</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>
+111</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-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-26"></a><span class="cp">#ifndef DIGIKAM_MEDIAWIKI_FAKE_SERVER_H</span>
+<a name="line-27"></a><span class="cp">#define DIGIKAM_MEDIAWIKI_FAKE_SERVER_H</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="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-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QList&gt;</span><span class="cp"></span>
+<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QMutex&gt;</span><span class="cp"></span>
+<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QObject&gt;</span><span class="cp"></span>
+<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QString&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><span class="cp">#include</span> <span class="cpf">&lt;QThread&gt;</span><span class="cp"></span>
+<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&lt;QTcpServer&gt;</span><span class="cp"></span>
+<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&lt;QTcpSocket&gt;</span><span class="cp"></span>
+<a name="line-39"></a>
+<a name="line-40"></a><span class="n">class</span> <span class="nl">FakeServer</span> <span class="p">:</span> <span class="n">QThread</span>
+<a name="line-41"></a><span class="p">{</span>
+<a name="line-42"></a> <span class="n">Q_OBJECT</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-47"></a>
-<a name="line-48"></a><span class="k">public</span><span class="o">:</span>
+<a name="line-44"></a><span class="nl">public</span><span class="p">:</span>
+<a name="line-45"></a>
+<a name="line-46"></a> <span class="n">class</span> <span class="n">Request</span>
+<a name="line-47"></a> <span class="p">{</span>
+<a name="line-48"></a> <span class="nl">public</span><span class="p">:</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="n">Request</span><span class="p">()</span>
+<a name="line-51"></a> <span class="p">{</span>
+<a name="line-52"></a> <span class="p">}</span>
+<a name="line-53"></a>
+<a name="line-54"></a> <span class="n">Request</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="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">a</span><span class="p">,</span> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">v</span><span class="p">)</span>
+<a name="line-55"></a> <span class="p">{</span>
+<a name="line-56"></a><span class="hll"> <span class="n">type</span> <span class="o">=</span> <span class="n">t</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'type' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;type&apos; a value by passing the value to the constructor in the initialization list.</div></div>
+</span><a name="line-57"></a><span class="hll"> <span class="n">agent</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'agent' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;agent&apos; a value by passing the value to the constructor in the initialization list.</div></div>
+</span><a name="line-58"></a><span class="hll"> <span class="n">value</span> <span class="o">=</span> <span class="n">v</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'value' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;value&apos; a value by passing the value to the constructor in the initialization list.</div></div>
+</span><a name="line-59"></a> <span class="p">}</span>
+<a name="line-60"></a>
+<a name="line-61"></a> <span class="kt">bool</span> <span class="n">operator</span><span class="o">==</span><span class="p">(</span><span class="k">const</span> <span class="n">FakeServer</span><span class="o">::</span><span class="n">Request</span> <span class="o">&amp;</span><span class="n">other</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-62"></a> <span class="p">{</span>
+<a name="line-63"></a> <span class="k">return</span> <span class="n">this</span><span class="o">-&gt;</span><span class="n">type</span> <span class="o">==</span> <span class="n">other</span><span class="p">.</span><span class="n">type</span> <span class="o">&amp;&amp;</span>
+<a name="line-64"></a> <span class="n">this</span><span class="o">-&gt;</span><span class="n">agent</span> <span class="o">==</span> <span class="n">other</span><span class="p">.</span><span class="n">agent</span> <span class="o">&amp;&amp;</span>
+<a name="line-65"></a> <span class="n">this</span><span class="o">-&gt;</span><span class="n">value</span> <span class="o">==</span> <span class="n">other</span><span class="p">.</span><span class="n">value</span><span class="p">;</span>
+<a name="line-66"></a> <span class="p">}</span>
+<a name="line-67"></a>
+<a name="line-68"></a> <span class="nl">public</span><span class="p">:</span>
+<a name="line-69"></a>
+<a name="line-70"></a> <span class="n">QString</span> <span class="n">type</span><span class="p">;</span>
+<a name="line-71"></a> <span class="n">QString</span> <span class="n">agent</span><span class="p">;</span>
+<a name="line-72"></a> <span class="n">QString</span> <span class="n">value</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">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="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-75"></a><span class="nl">public</span><span class="p">:</span>
+<a name="line-76"></a>
+<a name="line-77"></a> <span class="n">explicit</span> <span class="n">FakeServer</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="o">=</span> <span class="n">nullptr</span><span class="p">);</span>
+<a name="line-78"></a> <span class="o">~</span><span class="n">FakeServer</span><span class="p">();</span>
+<a name="line-79"></a>
+<a name="line-80"></a> <span class="kt">void</span> <span class="nf">startAndWait</span><span class="p">();</span>
+<a name="line-81"></a> <span class="kt">void</span> <span class="nf">run</span><span class="p">()</span> <span class="n">override</span><span class="p">;</span>
+<a name="line-82"></a>
+<a name="line-83"></a> <span class="kt">void</span> <span class="nf">setScenario</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">scenario</span><span class="p">,</span> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">cookie</span> <span class="o">=</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;empty&quot;</span><span class="p">));</span>
+<a name="line-84"></a> <span class="kt">void</span> <span class="nf">addScenario</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">scenario</span><span class="p">,</span> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">cookie</span> <span class="o">=</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;empty&quot;</span><span class="p">));</span>
+<a name="line-85"></a> <span class="kt">void</span> <span class="nf">addScenarioFromFile</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">fileName</span><span class="p">,</span> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">cookie</span> <span class="o">=</span> <span class="n">QStringLiteral</span><span class="p">(</span><span class="s">&quot;empty&quot;</span><span class="p">));</span>
+<a name="line-86"></a>
+<a name="line-87"></a> <span class="kt">bool</span> <span class="nf">isScenarioDone</span><span class="p">(</span><span class="kt">int</span> <span class="n">scenarioNumber</span><span class="p">)</span> <span class="k">const</span><span class="p">;</span>
+<a name="line-88"></a> <span class="kt">bool</span> <span class="nf">isAllScenarioDone</span><span class="p">()</span> <span class="k">const</span><span class="p">;</span>
+<a name="line-89"></a>
+<a name="line-90"></a> <span class="k">const</span> <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;&amp;</span> <span class="n">getRequest</span><span class="p">();</span>
+<a name="line-91"></a> <span class="n">FakeServer</span><span class="o">::</span><span class="n">Request</span> <span class="n">takeLastRequest</span><span class="p">();</span>
+<a name="line-92"></a> <span class="n">FakeServer</span><span class="o">::</span><span class="n">Request</span> <span class="n">takeFirstRequest</span><span class="p">();</span>
+<a name="line-93"></a> <span class="kt">void</span> <span class="nf">clearRequest</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-95"></a><span class="n">private</span> <span class="nl">Q_SLOTS</span><span class="p">:</span>
+<a name="line-96"></a>
+<a name="line-97"></a> <span class="kt">void</span> <span class="n">newConnection</span><span class="p">();</span>
+<a name="line-98"></a> <span class="kt">void</span> <span class="nf">dataAvailable</span><span class="p">();</span>
+<a name="line-99"></a> <span class="kt">void</span> <span class="nf">started</span><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-101"></a><span class="nl">private</span><span class="p">:</span>
+<a name="line-102"></a>
+<a name="line-103"></a> <span class="n">QStringList</span> <span class="n">m_scenarios</span><span class="p">;</span>
+<a name="line-104"></a> <span class="n">QStringList</span> <span class="n">m_cookie</span><span class="p">;</span>
+<a name="line-105"></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">m_request</span><span class="p">;</span>
+<a name="line-106"></a> <span class="n">QTcpServer</span><span class="o">*</span> <span class="n">m_tcpServer</span><span class="p">;</span>
+<a name="line-107"></a> <span class="n">mutable</span> <span class="n">QMutex</span> <span class="n">m_mutex</span><span class="p">;</span>
+<a name="line-108"></a> <span class="n">QTcpSocket</span><span class="o">*</span> <span class="n">m_clientSocket</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="cp">#endif </span><span class="c1">// DIGIKAM_MEDIAWIKI_FAKE_SERVER_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/28.html b/static/reports/cppcheck/master/28.html
index f0808c77f..4111783e2 100644
--- a/static/reports/cppcheck/master/28.html
+++ b/static/reports/cppcheck/master/28.html
@@ -1,1319 +1,1319 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/webservices/onedrive/odtalker.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../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='28.html#line-536'> shadowVar 536</a><a href='28.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/29.html b/static/reports/cppcheck/master/29.html
index 3188915c6..69c8fdc5c 100644
--- a/static/reports/cppcheck/master/29.html
+++ b/static/reports/cppcheck/master/29.html
@@ -1,1391 +1,1391 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/webservices/pinterest/ptalker.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../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='29.html#line-560'> shadowVar 560</a><a href='29.html#line-561'> shadowVar 561</a><a href='29.html#line-565'> shadowVar 565</a><a href='29.html#line-566'> shadowVar 566</a><a href='29.html#line-580'> shadowVar 580</a><a href='29.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/3.html b/static/reports/cppcheck/master/3.html
index 975cbfff1..ed907dc71 100644
--- a/static/reports/cppcheck/master/3.html
+++ b/static/reports/cppcheck/master/3.html
@@ -1,2327 +1,2327 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/metadata/geolocationedit/dialog/geolocationedit.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../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='3.html#line-646'> shadowVar 646</a><a href='3.html#line-712'> shadowVar 712</a><a href='3.html#line-726'> shadowVar 726</a><a href='3.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/30.html b/static/reports/cppcheck/master/30.html
index 1a900c52b..e6ea98cdc 100644
--- a/static/reports/cppcheck/master/30.html
+++ b/static/reports/cppcheck/master/30.html
@@ -1,2137 +1,2137 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/webservices/piwigo/piwigotalker.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/generic/webservices/piwigo/piwigotalker.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> piwigotalker.cpp</p>
<a href='30.html#line-639'> shadowVar 639</a><a href='30.html#line-651'> shadowVar 651</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>
<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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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-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>
</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/31.html b/static/reports/cppcheck/master/31.html
index 9aad93e1d..112554bc2 100644
--- a/static/reports/cppcheck/master/31.html
+++ b/static/reports/cppcheck/master/31.html
@@ -1,475 +1,475 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/webservices/smugmug/smugmpform.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/generic/webservices/smugmug/smugmpform.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> smugmpform.cpp</p>
<a href='31.html#line-46'> useInitializationList 46</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>
<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-07-07</span>
<a name="line-7"></a><span class="cm"> * Description : a tool to export images to Smugmug 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"> *</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;smugmpform.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;QFile&gt;</span><span class="cp"></span>
<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QMimeDatabase&gt;</span><span class="cp"></span>
<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QMimeType&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;QApplication&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;digikam_debug.h&quot;</span><span class="cp"></span>
<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&quot;wstoolutils.h&quot;</span><span class="cp"></span>
<a name="line-38"></a>
<a name="line-39"></a><span class="k">using</span> <span class="k">namespace</span> <span class="n">Digikam</span><span class="p">;</span>
<a name="line-40"></a>
<a name="line-41"></a><span class="k">namespace</span> <span class="n">DigikamGenericSmugPlugin</span>
<a name="line-42"></a><span class="p">{</span>
<a name="line-43"></a>
<a name="line-44"></a><span class="n">SmugMPForm</span><span class="o">::</span><span class="n">SmugMPForm</span><span class="p">()</span>
<a name="line-45"></a><span class="p">{</span>
<a name="line-46"></a><span class="hll"> <span class="n">m_boundary</span> <span class="o">=</span> <span class="s">&quot;----------&quot;</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'm_boundary' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;m_boundary&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-47"></a> <span class="n">m_boundary</span> <span class="o">+=</span> <span class="n">WSToolUtils</span><span class="o">::</span><span class="n">randomString</span><span class="p">(</span><span class="mi">42</span> <span class="o">+</span> <span class="mi">13</span><span class="p">).</span><span class="n">toLatin1</span><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">SmugMPForm</span><span class="o">::~</span><span class="n">SmugMPForm</span><span class="p">()</span>
<a name="line-51"></a><span class="p">{</span>
<a name="line-52"></a><span class="p">}</span>
<a name="line-53"></a>
<a name="line-54"></a><span class="kt">void</span> <span class="n">SmugMPForm</span><span class="o">::</span><span class="n">reset</span><span class="p">()</span>
<a name="line-55"></a><span class="p">{</span>
<a name="line-56"></a> <span class="n">m_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-57"></a><span class="p">}</span>
<a name="line-58"></a>
<a name="line-59"></a><span class="kt">void</span> <span class="n">SmugMPForm</span><span class="o">::</span><span class="n">finish</span><span class="p">()</span>
<a name="line-60"></a><span class="p">{</span>
<a name="line-61"></a> <span class="n">QByteArray</span> <span class="n">str</span><span class="p">;</span>
<a name="line-62"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;--&quot;</span><span class="p">;</span>
<a name="line-63"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">m_boundary</span><span class="p">;</span>
<a name="line-64"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;--&quot;</span><span class="p">;</span>
<a name="line-65"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">str</span><span class="p">);</span>
<a name="line-66"></a><span class="p">}</span>
<a name="line-67"></a>
<a name="line-68"></a><span class="kt">bool</span> <span class="n">SmugMPForm</span><span class="o">::</span><span class="n">addPair</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>
<a name="line-69"></a> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">value</span><span class="p">,</span>
<a name="line-70"></a> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">contentType</span><span class="p">)</span>
<a name="line-71"></a><span class="p">{</span>
<a name="line-72"></a> <span class="n">QByteArray</span> <span class="n">str</span><span class="p">;</span>
<a name="line-73"></a> <span class="n">QString</span> <span class="n">content_length</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">value</span><span class="p">.</span><span class="n">length</span><span class="p">());</span>
<a name="line-74"></a>
<a name="line-75"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;--&quot;</span><span class="p">;</span>
<a name="line-76"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">m_boundary</span><span class="p">;</span>
<a name="line-77"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-78"></a>
<a name="line-79"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">name</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-80"></a> <span class="p">{</span>
<a name="line-81"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;Content-Disposition: form-data; name=</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-82"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">name</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">();</span>
<a name="line-83"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\&quot;\r\n</span><span class="s">&quot;</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">contentType</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">str</span> <span class="o">+=</span> <span class="s">&quot;Content-Type: &quot;</span> <span class="o">+</span> <span class="n">QByteArray</span><span class="p">(</span><span class="n">contentType</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">());</span>
<a name="line-89"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-90"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;Mime-version: 1.0 &quot;</span><span class="p">;</span>
<a name="line-91"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-92"></a> <span class="p">}</span>
<a name="line-93"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;Content-Length: &quot;</span><span class="p">;</span>
<a name="line-94"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">content_length</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">();</span>
<a name="line-95"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-96"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">value</span><span class="p">.</span><span class="n">toUtf8</span><span class="p">();</span>
<a name="line-97"></a>
<a name="line-98"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">str</span><span class="p">);</span>
<a name="line-99"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">);</span>
<a name="line-100"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-101"></a><span class="p">}</span>
<a name="line-102"></a>
<a name="line-103"></a><span class="kt">bool</span> <span class="n">SmugMPForm</span><span class="o">::</span><span class="n">addFile</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">path</span><span class="p">)</span>
<a name="line-104"></a><span class="p">{</span>
<a name="line-105"></a> <span class="n">QMimeDatabase</span> <span class="n">db</span><span class="p">;</span>
<a name="line-106"></a> <span class="n">QMimeType</span> <span class="n">mimeType</span> <span class="o">=</span> <span class="n">db</span><span class="p">.</span><span class="n">mimeTypeForUrl</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">path</span><span class="p">));</span>
<a name="line-107"></a> <span class="n">QString</span> <span class="n">mime</span> <span class="o">=</span> <span class="n">mimeType</span><span class="p">.</span><span class="n">name</span><span class="p">();</span>
<a name="line-108"></a>
<a name="line-109"></a> <span class="k">if</span> <span class="p">(</span><span class="n">mime</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-110"></a> <span class="p">{</span>
<a name="line-111"></a> <span class="c1">// if we ourselves can&#39;t determine the mime of the local file,</span>
<a name="line-112"></a> <span class="c1">// very unlikely the remote site will be able to identify it</span>
<a name="line-113"></a> <span class="k">return</span> <span class="nb">false</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">QFile</span> <span class="n">imageFile</span><span class="p">(</span><span class="n">path</span><span class="p">);</span>
<a name="line-117"></a>
<a name="line-118"></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-119"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-120"></a>
<a name="line-121"></a> <span class="n">QByteArray</span> <span class="n">imageData</span> <span class="o">=</span> <span class="n">imageFile</span><span class="p">.</span><span class="n">readAll</span><span class="p">();</span>
<a name="line-122"></a>
<a name="line-123"></a> <span class="n">QByteArray</span> <span class="n">str</span><span class="p">;</span>
<a name="line-124"></a> <span class="n">QString</span> <span class="n">file_size</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">imageFile</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
<a name="line-125"></a> <span class="n">imageFile</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
<a name="line-126"></a>
<a name="line-127"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;--&quot;</span><span class="p">;</span>
<a name="line-128"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">m_boundary</span><span class="p">;</span>
<a name="line-129"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-130"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;Content-Disposition: form-data; name=</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-131"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">name</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">();</span>
<a name="line-132"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\&quot;</span><span class="s">; &quot;</span><span class="p">;</span>
<a name="line-133"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;filename=</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-134"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">QFile</span><span class="o">::</span><span class="n">encodeName</span><span class="p">(</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-135"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\&quot;\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-136"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;Content-Length: &quot;</span><span class="p">;</span>
<a name="line-137"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">file_size</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">();</span>
<a name="line-138"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-139"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;Content-Type: &quot;</span><span class="p">;</span>
<a name="line-140"></a> <span class="n">str</span> <span class="o">+=</span> <span class="n">mime</span><span class="p">.</span><span class="n">toLatin1</span><span class="p">();</span>
<a name="line-141"></a> <span class="n">str</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-142"></a>
<a name="line-143"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">str</span><span class="p">);</span>
<a name="line-144"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">imageData</span><span class="p">);</span>
<a name="line-145"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">);</span>
<a name="line-146"></a>
<a name="line-147"></a> <span class="k">return</span> <span class="nb">true</span><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">QString</span> <span class="n">SmugMPForm</span><span class="o">::</span><span class="n">contentType</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="k">return</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">QLatin1String</span><span class="p">(</span><span class="n">m_boundary</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">QString</span> <span class="n">SmugMPForm</span><span class="o">::</span><span class="n">boundary</span><span class="p">()</span> <span class="k">const</span>
<a name="line-156"></a><span class="p">{</span>
<a name="line-157"></a> <span class="k">return</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="n">m_boundary</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">QByteArray</span> <span class="n">SmugMPForm</span><span class="o">::</span><span class="n">formData</span><span class="p">()</span> <span class="k">const</span>
<a name="line-161"></a><span class="p">{</span>
<a name="line-162"></a> <span class="k">return</span> <span class="n">m_buffer</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="p">}</span> <span class="c1">// namespace DigikamGenericSmugPlugin</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/32.html b/static/reports/cppcheck/master/32.html
index c584e2560..129a1d8e4 100644
--- a/static/reports/cppcheck/master/32.html
+++ b/static/reports/cppcheck/master/32.html
@@ -1,523 +1,523 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/webservices/smugmug/smugitem.h </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/generic/webservices/smugmug/smugitem.h </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> smugitem.h</p>
<a href='32.html#line-78'> useInitializationList 78</a><a href='32.html#line-79'> useInitializationList 79</a><a href='32.html#line-80'> useInitializationList 80</a><a href='32.html#line-81'> useInitializationList 81</a><a href='32.html#line-130'> useInitializationList 130</a><a href='32.html#line-154'> useInitializationList 154</a><a href='32.html#line-178'> useInitializationList 178</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</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-12-01</span>
<a name="line-7"></a><span class="cm"> * Description : a tool to export images to Smugmug web service</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2008-2009 by Luka Renko &lt;lure at kubuntu dot org&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) 2018 by Thanh Trung Dinh &lt;dinhthanhtrung1996 at gmail dot com&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">#ifndef DIGIKAM_SMUG_ITEM_H</span>
<a name="line-26"></a><span class="cp">#define DIGIKAM_SMUG_ITEM_H</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;QString&gt;</span><span class="cp"></span>
<a name="line-31"></a>
<a name="line-32"></a><span class="n">namespace</span> <span class="n">DigikamGenericSmugPlugin</span>
<a name="line-33"></a><span class="p">{</span>
<a name="line-34"></a>
<a name="line-35"></a><span class="n">class</span> <span class="n">SmugUser</span>
<a name="line-36"></a><span class="p">{</span>
<a name="line-37"></a>
<a name="line-38"></a><span class="nl">public</span><span class="p">:</span>
<a name="line-39"></a>
<a name="line-40"></a> <span class="n">explicit</span> <span class="n">SmugUser</span><span class="p">()</span>
<a name="line-41"></a> <span class="p">{</span>
<a name="line-42"></a> <span class="n">fileSizeLimit</span> <span class="o">=</span> <span class="mi">0</span><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">clear</span><span class="p">()</span>
<a name="line-46"></a> <span class="p">{</span>
<a name="line-47"></a> <span class="n">email</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-48"></a> <span class="n">nickName</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-49"></a> <span class="n">displayName</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-50"></a> <span class="n">accountType</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-51"></a> <span class="n">userUri</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-52"></a> <span class="n">nodeUri</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-53"></a> <span class="n">folderUri</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-54"></a> <span class="n">fileSizeLimit</span> <span class="o">=</span> <span class="mi">0</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="nl">public</span><span class="p">:</span>
<a name="line-58"></a>
<a name="line-59"></a> <span class="n">QString</span> <span class="n">email</span><span class="p">;</span>
<a name="line-60"></a> <span class="n">QString</span> <span class="n">nickName</span><span class="p">;</span>
<a name="line-61"></a> <span class="n">QString</span> <span class="n">displayName</span><span class="p">;</span>
<a name="line-62"></a> <span class="n">QString</span> <span class="n">accountType</span><span class="p">;</span>
<a name="line-63"></a> <span class="n">QString</span> <span class="n">userUri</span><span class="p">;</span>
<a name="line-64"></a> <span class="n">QString</span> <span class="n">nodeUri</span><span class="p">;</span>
<a name="line-65"></a> <span class="n">QString</span> <span class="n">folderUri</span><span class="p">;</span>
<a name="line-66"></a> <span class="kt">int</span> <span class="n">fileSizeLimit</span><span class="p">;</span>
<a name="line-67"></a><span class="p">};</span>
<a name="line-68"></a>
<a name="line-69"></a><span class="c1">// ---------------------------------------------------------------------------------</span>
<a name="line-70"></a>
<a name="line-71"></a><span class="n">class</span> <span class="n">SmugAlbum</span>
<a name="line-72"></a><span class="p">{</span>
<a name="line-73"></a>
<a name="line-74"></a><span class="nl">public</span><span class="p">:</span>
<a name="line-75"></a>
<a name="line-76"></a> <span class="n">explicit</span> <span class="n">SmugAlbum</span><span class="p">()</span>
<a name="line-77"></a> <span class="p">{</span>
<a name="line-78"></a><span class="hll"> <span class="n">id</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'id' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;id&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-79"></a><span class="hll"> <span class="n">categoryID</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'categoryID' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;categoryID&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-80"></a><span class="hll"> <span class="n">subCategoryID</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'subCategoryID' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;subCategoryID&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-81"></a><span class="hll"> <span class="n">tmplID</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'tmplID' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;tmplID&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-82"></a> <span class="n">isPublic</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-83"></a> <span class="n">imageCount</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-84"></a> <span class="n">canShare</span> <span class="o">=</span> <span class="nb">true</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="nl">public</span><span class="p">:</span>
<a name="line-88"></a>
<a name="line-89"></a> <span class="n">qint64</span> <span class="n">id</span><span class="p">;</span>
<a name="line-90"></a> <span class="n">QString</span> <span class="n">nodeID</span><span class="p">;</span>
<a name="line-91"></a>
<a name="line-92"></a> <span class="n">QString</span> <span class="n">name</span><span class="p">;</span>
<a name="line-93"></a> <span class="n">QString</span> <span class="n">key</span><span class="p">;</span>
<a name="line-94"></a> <span class="n">QString</span> <span class="n">title</span><span class="p">;</span>
<a name="line-95"></a> <span class="n">QString</span> <span class="n">description</span><span class="p">;</span>
<a name="line-96"></a> <span class="n">QString</span> <span class="n">keywords</span><span class="p">;</span>
<a name="line-97"></a>
<a name="line-98"></a> <span class="n">qint64</span> <span class="n">categoryID</span><span class="p">;</span>
<a name="line-99"></a> <span class="n">QString</span> <span class="n">category</span><span class="p">;</span>
<a name="line-100"></a>
<a name="line-101"></a> <span class="n">qint64</span> <span class="n">subCategoryID</span><span class="p">;</span>
<a name="line-102"></a> <span class="n">QString</span> <span class="n">subCategory</span><span class="p">;</span>
<a name="line-103"></a>
<a name="line-104"></a> <span class="kt">bool</span> <span class="n">isPublic</span><span class="p">;</span>
<a name="line-105"></a> <span class="n">QString</span> <span class="n">password</span><span class="p">;</span>
<a name="line-106"></a> <span class="kt">bool</span> <span class="n">canShare</span><span class="p">;</span>
<a name="line-107"></a> <span class="n">QString</span> <span class="n">passwordHint</span><span class="p">;</span>
<a name="line-108"></a>
<a name="line-109"></a> <span class="kt">int</span> <span class="n">imageCount</span><span class="p">;</span>
<a name="line-110"></a>
<a name="line-111"></a> <span class="c1">// below fields only used by createAlbum (and not by listAlbums)</span>
<a name="line-112"></a> <span class="n">qint64</span> <span class="n">tmplID</span><span class="p">;</span>
<a name="line-113"></a> <span class="n">QString</span> <span class="n">tmpl</span><span class="p">;</span>
<a name="line-114"></a>
<a name="line-115"></a> <span class="k">static</span> <span class="kt">bool</span> <span class="nf">lessThan</span><span class="p">(</span><span class="n">SmugAlbum</span><span class="o">&amp;</span> <span class="n">a</span><span class="p">,</span> <span class="n">SmugAlbum</span><span class="o">&amp;</span> <span class="n">b</span><span class="p">)</span>
<a name="line-116"></a> <span class="p">{</span>
<a name="line-117"></a> <span class="k">return</span> <span class="n">a</span><span class="p">.</span><span class="n">title</span><span class="p">.</span><span class="n">toLower</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">b</span><span class="p">.</span><span class="n">title</span><span class="p">.</span><span class="n">toLower</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="c1">// ---------------------------------------------------------------------------------</span>
<a name="line-122"></a>
<a name="line-123"></a><span class="n">class</span> <span class="n">SmugPhoto</span>
<a name="line-124"></a><span class="p">{</span>
<a name="line-125"></a>
<a name="line-126"></a><span class="nl">public</span><span class="p">:</span>
<a name="line-127"></a>
<a name="line-128"></a> <span class="n">explicit</span> <span class="n">SmugPhoto</span><span class="p">()</span>
<a name="line-129"></a> <span class="p">{</span>
<a name="line-130"></a><span class="hll"> <span class="n">id</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'id' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;id&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-131"></a> <span class="p">}</span>
<a name="line-132"></a>
<a name="line-133"></a><span class="nl">public</span><span class="p">:</span>
<a name="line-134"></a>
<a name="line-135"></a> <span class="n">qint64</span> <span class="n">id</span><span class="p">;</span>
<a name="line-136"></a>
<a name="line-137"></a> <span class="n">QString</span> <span class="n">key</span><span class="p">;</span>
<a name="line-138"></a> <span class="n">QString</span> <span class="n">caption</span><span class="p">;</span>
<a name="line-139"></a> <span class="n">QString</span> <span class="n">keywords</span><span class="p">;</span>
<a name="line-140"></a>
<a name="line-141"></a> <span class="n">QString</span> <span class="n">thumbURL</span><span class="p">;</span>
<a name="line-142"></a> <span class="n">QString</span> <span class="n">originalURL</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="c1">// ---------------------------------------------------------------------------------</span>
<a name="line-146"></a>
<a name="line-147"></a><span class="n">class</span> <span class="n">SmugAlbumTmpl</span>
<a name="line-148"></a><span class="p">{</span>
<a name="line-149"></a>
<a name="line-150"></a><span class="nl">public</span><span class="p">:</span>
<a name="line-151"></a>
<a name="line-152"></a> <span class="n">explicit</span> <span class="n">SmugAlbumTmpl</span><span class="p">()</span>
<a name="line-153"></a> <span class="p">{</span>
<a name="line-154"></a><span class="hll"> <span class="n">id</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'id' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;id&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-155"></a> <span class="n">isPublic</span> <span class="o">=</span> <span class="nb">true</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="nl">public</span><span class="p">:</span>
<a name="line-159"></a>
<a name="line-160"></a> <span class="n">qint64</span> <span class="n">id</span><span class="p">;</span>
<a name="line-161"></a> <span class="n">QString</span> <span class="n">name</span><span class="p">;</span>
<a name="line-162"></a> <span class="n">QString</span> <span class="n">uri</span><span class="p">;</span>
<a name="line-163"></a>
<a name="line-164"></a> <span class="kt">bool</span> <span class="n">isPublic</span><span class="p">;</span>
<a name="line-165"></a> <span class="n">QString</span> <span class="n">password</span><span class="p">;</span>
<a name="line-166"></a> <span class="n">QString</span> <span class="n">passwordHint</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="c1">// ---------------------------------------------------------------------------------</span>
<a name="line-170"></a>
<a name="line-171"></a><span class="n">class</span> <span class="n">SmugCategory</span>
<a name="line-172"></a><span class="p">{</span>
<a name="line-173"></a>
<a name="line-174"></a><span class="nl">public</span><span class="p">:</span>
<a name="line-175"></a>
<a name="line-176"></a> <span class="n">explicit</span> <span class="n">SmugCategory</span><span class="p">()</span>
<a name="line-177"></a> <span class="p">{</span>
<a name="line-178"></a><span class="hll"> <span class="n">id</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'id' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;id&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-179"></a> <span class="p">}</span>
<a name="line-180"></a>
<a name="line-181"></a><span class="nl">public</span><span class="p">:</span>
<a name="line-182"></a>
<a name="line-183"></a> <span class="n">qint64</span> <span class="n">id</span><span class="p">;</span>
<a name="line-184"></a> <span class="n">QString</span> <span class="n">name</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="p">}</span> <span class="c1">// namespace DigikamGenericSmugPlugin</span>
<a name="line-188"></a>
<a name="line-189"></a><span class="cp">#endif </span><span class="c1">// DIGIKAM_SMUG_ITEM_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/33.html b/static/reports/cppcheck/master/33.html
index 1e05eadec..3581cd41b 100644
--- a/static/reports/cppcheck/master/33.html
+++ b/static/reports/cppcheck/master/33.html
@@ -1,501 +1,501 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/webservices/twitter/twittermpform.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/generic/webservices/twitter/twittermpform.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> twittermpform.cpp</p>
<a href='33.html#line-43'> useInitializationList 43</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</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-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-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="c1">// local includes</span>
<a name="line-25"></a>
<a name="line-26"></a><span class="cp">#include</span> <span class="cpf">&quot;twittermpform.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;QFile&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;digikam_debug.h&quot;</span><span class="cp"></span>
<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&quot;wstoolutils.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">DigikamGenericTwitterPlugin</span>
<a name="line-39"></a><span class="p">{</span>
<a name="line-40"></a>
<a name="line-41"></a><span class="n">TwMPForm</span><span class="o">::</span><span class="n">TwMPForm</span><span class="p">()</span>
<a name="line-42"></a><span class="p">{</span>
<a name="line-43"></a><span class="hll"> <span class="n">m_boundary</span> <span class="o">=</span> <span class="s">&quot;00TwDK&quot;</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'm_boundary' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;m_boundary&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-44"></a> <span class="n">m_boundary</span> <span class="o">+=</span> <span class="n">Digikam</span><span class="o">::</span><span class="n">WSToolUtils</span><span class="o">::</span><span class="n">randomString</span><span class="p">(</span><span class="mi">42</span> <span class="o">+</span> <span class="mi">13</span><span class="p">).</span><span class="n">toLatin1</span><span class="p">();</span>
<a name="line-45"></a> <span class="n">m_boundary</span> <span class="o">+=</span> <span class="s">&quot;KDwT99&quot;</span><span class="p">;</span>
<a name="line-46"></a>
<a name="line-47"></a> <span class="n">reset</span><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">TwMPForm</span><span class="o">::~</span><span class="n">TwMPForm</span><span class="p">()</span>
<a name="line-51"></a><span class="p">{</span>
<a name="line-52"></a><span class="p">}</span>
<a name="line-53"></a>
<a name="line-54"></a><span class="kt">void</span> <span class="n">TwMPForm</span><span class="o">::</span><span class="n">reset</span><span class="p">()</span>
<a name="line-55"></a><span class="p">{</span>
<a name="line-56"></a> <span class="n">m_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-57"></a> <span class="n">m_chunks</span><span class="p">.</span><span class="n">clear</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="n">QByteArray</span> <span class="n">TwMPForm</span><span class="o">::</span><span class="n">createPair</span><span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">key</span><span class="p">,</span> <span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">value</span><span class="p">)</span>
<a name="line-61"></a><span class="p">{</span>
<a name="line-62"></a> <span class="n">QByteArray</span> <span class="n">data</span><span class="p">(</span><span class="s">&quot;--&quot;</span><span class="p">);</span>
<a name="line-63"></a> <span class="n">data</span> <span class="o">+=</span> <span class="n">m_boundary</span><span class="p">;</span>
<a name="line-64"></a> <span class="n">data</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-65"></a> <span class="n">data</span> <span class="o">+=</span> <span class="s">&quot;Content-Disposition: form-data; name=</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-66"></a> <span class="n">data</span> <span class="o">+=</span> <span class="n">key</span><span class="p">;</span>
<a name="line-67"></a> <span class="n">data</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\&quot;\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-68"></a> <span class="n">data</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-69"></a> <span class="n">data</span> <span class="o">+=</span> <span class="n">value</span><span class="p">;</span>
<a name="line-70"></a> <span class="n">data</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-71"></a>
<a name="line-72"></a> <span class="k">return</span> <span class="n">data</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">bool</span> <span class="n">TwMPForm</span><span class="o">::</span><span class="n">addPair</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-76"></a><span class="p">{</span>
<a name="line-77"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">data</span><span class="p">);</span>
<a name="line-78"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-79"></a><span class="p">}</span>
<a name="line-80"></a>
<a name="line-81"></a><span class="n">QByteArray</span> <span class="n">TwMPForm</span><span class="o">::</span><span class="n">fileHeader</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-82"></a><span class="p">{</span>
<a name="line-83"></a> <span class="n">QByteArray</span> <span class="n">data</span><span class="p">(</span><span class="s">&quot;--&quot;</span><span class="p">);</span>
<a name="line-84"></a> <span class="n">data</span> <span class="o">+=</span> <span class="n">m_boundary</span><span class="p">;</span>
<a name="line-85"></a> <span class="n">data</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-86"></a> <span class="n">data</span> <span class="o">+=</span> <span class="s">&quot;Content-Disposition: form-data; name=</span><span class="se">\&quot;</span><span class="s">media</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>
<a name="line-87"></a> <span class="n">data</span> <span class="o">+=</span> <span class="n">QFile</span><span class="o">::</span><span class="n">encodeName</span><span class="p">(</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-88"></a> <span class="n">data</span> <span class="o">+=</span> <span class="s">&quot;</span><span class="se">\&quot;\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-89"></a> <span class="n">data</span> <span class="o">+=</span> <span class="s">&quot;Content-Type: application/octet-stream</span><span class="se">\r\n\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-90"></a>
<a name="line-91"></a> <span class="k">return</span> <span class="n">data</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">bool</span> <span class="n">TwMPForm</span><span class="o">::</span><span class="n">addFile</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="kt">bool</span> <span class="n">fragmented</span><span class="p">)</span>
<a name="line-95"></a><span class="p">{</span>
<a name="line-96"></a> <span class="n">QFile</span> <span class="n">file</span><span class="p">(</span><span class="n">imgPath</span><span class="p">);</span>
<a name="line-97"></a>
<a name="line-98"></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-99"></a> <span class="p">{</span>
<a name="line-100"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-101"></a> <span class="p">}</span>
<a name="line-102"></a>
<a name="line-103"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">fragmented</span><span class="p">)</span>
<a name="line-104"></a> <span class="p">{</span>
<a name="line-105"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">fileHeader</span><span class="p">(</span><span class="n">imgPath</span><span class="p">));</span>
<a name="line-106"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">file</span><span class="p">.</span><span class="n">readAll</span><span class="p">());</span>
<a name="line-107"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="s">&quot;</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">);</span>
<a name="line-108"></a> <span class="p">}</span>
<a name="line-109"></a> <span class="k">else</span>
<a name="line-110"></a> <span class="p">{</span>
<a name="line-111"></a> <span class="n">formChunks</span><span class="p">(</span><span class="n">file</span><span class="p">.</span><span class="n">readAll</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">file</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
<a name="line-115"></a>
<a name="line-116"></a> <span class="k">return</span> <span class="nb">true</span><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="n">QByteArray</span> <span class="n">TwMPForm</span><span class="o">::</span><span class="n">getChunk</span><span class="p">(</span><span class="kt">int</span> <span class="n">index</span><span class="p">)</span> <span class="k">const</span>
<a name="line-120"></a><span class="p">{</span>
<a name="line-121"></a> <span class="k">return</span> <span class="n">m_chunks</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">index</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="n">QString</span> <span class="n">TwMPForm</span><span class="o">::</span><span class="n">contentType</span><span class="p">()</span> <span class="k">const</span>
<a name="line-125"></a><span class="p">{</span>
<a name="line-126"></a> <span class="n">QString</span> <span class="n">type</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;multipart/form-data, boundary=</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">QLatin1String</span><span class="p">(</span><span class="n">m_boundary</span><span class="p">));</span>
<a name="line-127"></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">type</span><span class="p">;</span>
<a name="line-128"></a>
<a name="line-129"></a> <span class="k">return</span> <span class="n">type</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">QByteArray</span> <span class="n">TwMPForm</span><span class="o">::</span><span class="n">border</span><span class="p">()</span>
<a name="line-133"></a><span class="p">{</span>
<a name="line-134"></a> <span class="n">QByteArray</span> <span class="n">data</span><span class="p">;</span>
<a name="line-135"></a> <span class="n">data</span> <span class="o">+=</span> <span class="s">&quot;--&quot;</span><span class="p">;</span>
<a name="line-136"></a> <span class="n">data</span> <span class="o">+=</span> <span class="n">m_boundary</span><span class="p">;</span>
<a name="line-137"></a> <span class="n">data</span> <span class="o">+=</span> <span class="s">&quot;--</span><span class="se">\r\n</span><span class="s">&quot;</span><span class="p">;</span>
<a name="line-138"></a>
<a name="line-139"></a> <span class="k">return</span> <span class="n">data</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="kt">void</span> <span class="n">TwMPForm</span><span class="o">::</span><span class="n">finish</span><span class="p">()</span>
<a name="line-143"></a><span class="p">{</span>
<a name="line-144"></a> <span class="n">m_buffer</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">border</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">TwMPForm</span><span class="o">::</span><span class="n">formData</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">m_buffer</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="kt">void</span> <span class="n">TwMPForm</span><span class="o">::</span><span class="n">formChunks</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-153"></a><span class="p">{</span>
<a name="line-154"></a> <span class="kt">int</span> <span class="n">mediaSize</span> <span class="o">=</span> <span class="n">data</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
<a name="line-155"></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;mediaSize: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">mediaSize</span><span class="p">;</span>
<a name="line-156"></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_MEDIA_SIZE &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">MAX_MEDIA_SIZE</span><span class="p">;</span>
<a name="line-157"></a> <span class="kt">int</span> <span class="n">breakPoint</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-158"></a>
<a name="line-159"></a> <span class="k">for</span> <span class="p">(</span> <span class="p">;</span> <span class="n">breakPoint</span> <span class="o">&lt;</span> <span class="n">mediaSize</span> <span class="p">;</span> <span class="n">breakPoint</span> <span class="o">+=</span> <span class="n">MAX_MEDIA_SIZE</span><span class="p">)</span>
<a name="line-160"></a> <span class="p">{</span>
<a name="line-161"></a> <span class="n">m_chunks</span> <span class="o">&lt;&lt;</span> <span class="n">data</span><span class="p">.</span><span class="n">mid</span><span class="p">(</span><span class="n">breakPoint</span><span class="p">,</span> <span class="n">MAX_MEDIA_SIZE</span><span class="p">);</span>
<a name="line-162"></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;breakpoint &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">breakPoint</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">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;number of chunks: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">m_chunks</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
<a name="line-166"></a>
<a name="line-167"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">QByteArray</span><span class="o">&amp;</span> <span class="n">chunk</span><span class="p">,</span> <span class="n">m_chunks</span><span class="p">)</span>
<a name="line-168"></a> <span class="p">{</span>
<a name="line-169"></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 chunks: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">chunk</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
<a name="line-170"></a> <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">int</span> <span class="n">TwMPForm</span><span class="o">::</span><span class="n">numberOfChunks</span><span class="p">()</span> <span class="k">const</span>
<a name="line-174"></a><span class="p">{</span>
<a name="line-175"></a> <span class="k">return</span> <span class="n">m_chunks</span><span class="p">.</span><span class="n">size</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="p">}</span> <span class="c1">// namespace DigikamGenericTwitterPlugin</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/34.html b/static/reports/cppcheck/master/34.html
index b493a726a..742d4fea3 100644
--- a/static/reports/cppcheck/master/34.html
+++ b/static/reports/cppcheck/master/34.html
@@ -1,2071 +1,2071 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/webservices/twitter/twittertalker.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/generic/webservices/twitter/twittertalker.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> twittertalker.cpp</p>
<a href='34.html#line-944'> shadowVar 944</a><a href='34.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
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</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-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-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;twittertalker.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="p">{</span>
<a name="line-95"></a> <span class="n">clientId</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;lkRgRsucipXsUEvKh0ECblreC&quot;</span><span class="p">);</span>
<a name="line-96"></a> <span class="n">clientSecret</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;6EThTiPQHZTMo7F83iLHrfNO89fkDVvM9hVWaYH9D49xEOyMBe&quot;</span><span class="p">);</span>
<a name="line-97"></a> <span class="c1">//scope = QLatin1String(&quot;User.Read Files.ReadWrite&quot;);</span>
<a name="line-98"></a> <span class="n">requestTokenUrl</span> <span class="o">=</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-99"></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.twitter.com/oauth/authenticate&quot;</span><span class="p">);</span>
<a name="line-100"></a> <span class="n">accessTokenUrl</span> <span class="o">=</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-101"></a> <span class="n">redirectUrl</span> <span class="o">=</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-102"></a> <span class="n">uploadUrl</span> <span class="o">=</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-103"></a>
<a name="line-104"></a> <span class="n">segmentIndex</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-105"></a>
<a name="line-106"></a> <span class="n">state</span> <span class="o">=</span> <span class="n">TW_USERNAME</span><span class="p">;</span>
<a name="line-107"></a>
<a name="line-108"></a> <span class="n">parent</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-109"></a> <span class="n">netMngr</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-110"></a> <span class="n">reply</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-111"></a> <span class="n">settings</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-112"></a> <span class="n">o1Twitter</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-113"></a> <span class="n">requestor</span> <span class="o">=</span> <span class="k">nullptr</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">public</span><span class="o">:</span>
<a name="line-117"></a>
<a name="line-118"></a> <span class="n">QString</span> <span class="n">clientId</span><span class="p">;</span>
<a name="line-119"></a> <span class="n">QString</span> <span class="n">clientSecret</span><span class="p">;</span>
<a name="line-120"></a> <span class="n">QString</span> <span class="n">authUrl</span><span class="p">;</span>
<a name="line-121"></a> <span class="n">QString</span> <span class="n">requestTokenUrl</span><span class="p">;</span>
<a name="line-122"></a> <span class="n">QString</span> <span class="n">accessTokenUrl</span><span class="p">;</span>
<a name="line-123"></a> <span class="n">QString</span> <span class="n">scope</span><span class="p">;</span>
<a name="line-124"></a> <span class="n">QString</span> <span class="n">redirectUrl</span><span class="p">;</span>
<a name="line-125"></a> <span class="n">QString</span> <span class="n">accessToken</span><span class="p">;</span>
<a name="line-126"></a> <span class="n">QString</span> <span class="n">uploadUrl</span><span class="p">;</span>
<a name="line-127"></a> <span class="n">QString</span> <span class="n">mediaUploadedPath</span><span class="p">;</span>
<a name="line-128"></a> <span class="n">QString</span> <span class="n">mediaId</span><span class="p">;</span>
<a name="line-129"></a>
<a name="line-130"></a> <span class="kt">int</span> <span class="n">segmentIndex</span><span class="p">;</span>
<a name="line-131"></a>
<a name="line-132"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="n">parent</span><span class="p">;</span>
<a name="line-133"></a>
<a name="line-134"></a> <span class="n">QNetworkAccessManager</span><span class="o">*</span> <span class="n">netMngr</span><span class="p">;</span>
<a name="line-135"></a>
<a name="line-136"></a> <span class="n">QNetworkReply</span><span class="o">*</span> <span class="n">reply</span><span class="p">;</span>
<a name="line-137"></a>
<a name="line-138"></a> <span class="n">State</span> <span class="n">state</span><span class="p">;</span>
<a name="line-139"></a>
<a name="line-140"></a> <span class="n">DMetadata</span> <span class="n">meta</span><span class="p">;</span>
<a name="line-141"></a>
<a name="line-142"></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-143"></a>
<a name="line-144"></a> <span class="c1">//QWebEngineView* view;</span>
<a name="line-145"></a>
<a name="line-146"></a> <span class="n">QSettings</span><span class="o">*</span> <span class="n">settings</span><span class="p">;</span>
<a name="line-147"></a>
<a name="line-148"></a> <span class="n">O1Twitter</span><span class="o">*</span> <span class="n">o1Twitter</span><span class="p">;</span>
<a name="line-149"></a> <span class="n">O1Requestor</span><span class="o">*</span> <span class="n">requestor</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="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-153"></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-154"></a><span class="p">{</span>
<a name="line-155"></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-156"></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-157"></a>
<a name="line-158"></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-159"></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-160"></a>
<a name="line-161"></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-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">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-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">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-164"></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-165"></a>
<a name="line-166"></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-167"></a>
<a name="line-168"></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-169"></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-170"></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-171"></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-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">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-174"></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-175"></a>
<a name="line-176"></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-177"></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-178"></a>
<a name="line-179"></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-180"></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-181"></a><span class="p">}</span>
<a name="line-182"></a>
<a name="line-183"></a><span class="n">TwTalker</span><span class="o">::~</span><span class="n">TwTalker</span><span class="p">()</span>
<a name="line-184"></a><span class="p">{</span>
<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">reply</span><span class="p">)</span>
<a name="line-186"></a> <span class="p">{</span>
<a name="line-187"></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-188"></a> <span class="p">}</span>
<a name="line-189"></a>
<a name="line-190"></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-191"></a>
<a name="line-192"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
<a name="line-193"></a><span class="p">}</span>
<a name="line-194"></a>
<a name="line-195"></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-196"></a><span class="p">{</span>
<a name="line-197"></a><span class="cm">/*</span>
<a name="line-198"></a><span class="cm"> emit signalBusy(true);</span>
<a name="line-199"></a><span class="cm"> QUrl url(d-&gt;requestTokenUrl);</span>
<a name="line-200"></a><span class="cm"> QNetworkRequest netRequest(url);</span>
<a name="line-201"></a><span class="cm"> netRequest.setHeader(QNetworkRequest::ContentTypeHeader, QLatin1String(&quot;application/json&quot;));</span>
<a name="line-202"></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-203"></a><span class="cm"> QNetworkAccessManager requestMngr;</span>
<a name="line-204"></a><span class="cm"> QNetworkReply* reply;</span>
<a name="line-205"></a><span class="cm"> reply = requestMngr.post(netRequest);</span>
<a name="line-206"></a>
<a name="line-207"></a><span class="cm"> if (reply-&gt;error() != QNetworkReply::NoError){</span>
<a name="line-208"></a>
<a name="line-209"></a><span class="cm"> }</span>
<a name="line-210"></a>
<a name="line-211"></a><span class="cm"> QByteArray buffer;</span>
<a name="line-212"></a><span class="cm"> buffer.append(reply-&gt;readAll());</span>
<a name="line-213"></a><span class="cm"> QString response = fromLatin1(buffer);</span>
<a name="line-214"></a>
<a name="line-215"></a><span class="cm"> QMap&lt;QString, QString&gt; headers;</span>
<a name="line-216"></a>
<a name="line-217"></a><span class="cm"> // Discard the first line</span>
<a name="line-218"></a><span class="cm"> response = response.mid(response.indexOf(&#39;\n&#39;) + 1).trimmed();</span>
<a name="line-219"></a>
<a name="line-220"></a><span class="cm"> foreach (QString line, response.split(&#39;\n&#39;))</span>
<a name="line-221"></a><span class="cm"> {</span>
<a name="line-222"></a><span class="cm"> int colon = line.indexOf(&#39;:&#39;);</span>
<a name="line-223"></a><span class="cm"> QString headerName = line.left(colon).trimmed();</span>
<a name="line-224"></a><span class="cm"> QString headerValue = line.mid(colon + 1).trimmed();</span>
<a name="line-225"></a>
<a name="line-226"></a><span class="cm"> headers.insertMulti(headerName, headerValue);</span>
<a name="line-227"></a><span class="cm"> }</span>
<a name="line-228"></a>
<a name="line-229"></a><span class="cm"> QString oauthToken = headers[oauth_token];</span>
<a name="line-230"></a><span class="cm"> QSting oauthTokenSecret = headers[oauth_token_secret];</span>
<a name="line-231"></a>
<a name="line-232"></a><span class="cm"> QUrlQuery query(url);</span>
<a name="line-233"></a><span class="cm"> query.addQueryItem(QLatin1String(&quot;client_id&quot;), d-&gt;clientId);</span>
<a name="line-234"></a><span class="cm"> query.addQueryItem(QLatin1String(&quot;scope&quot;), d-&gt;scope);</span>
<a name="line-235"></a><span class="cm"> query.addQueryItem(QLatin1String(&quot;redirect_uri&quot;), d-&gt;redirectUrl);</span>
<a name="line-236"></a><span class="cm"> query.addQueryItem(QLatin1String(&quot;response_type&quot;), &quot;token&quot;);</span>
<a name="line-237"></a><span class="cm"> url.setQuery(query);</span>
<a name="line-238"></a>
<a name="line-239"></a><span class="cm"> d-&gt;view = new QWebEngineView(d-&gt;parent);</span>
<a name="line-240"></a><span class="cm"> d-&gt;view-&gt;setWindowFlags(Qt::Dialog);</span>
<a name="line-241"></a><span class="cm"> d-&gt;view-&gt;load(url);</span>
<a name="line-242"></a><span class="cm"> d-&gt;view-&gt;show();</span>
<a name="line-243"></a>
<a name="line-244"></a><span class="cm"> connect(d-&gt;view, SIGNAL(urlChanged(QUrl)),</span>
<a name="line-245"></a><span class="cm"> this, SLOT(slotCatchUrl(QUrl)));</span>
<a name="line-246"></a><span class="cm">*/</span>
<a name="line-247"></a>
<a name="line-248"></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-249"></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-250"></a><span class="p">}</span>
<a name="line-251"></a>
<a name="line-252"></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-253"></a><span class="p">{</span>
<a name="line-254"></a><span class="cm">/*</span>
<a name="line-255"></a><span class="cm"> d-&gt;accessToken = QString();</span>
<a name="line-256"></a><span class="cm"> d-&gt;view-&gt;page()-&gt;profile()-&gt;cookieStore()-&gt;deleteAllCookies();</span>
<a name="line-257"></a><span class="cm"> emit oneDriveLinkingSucceeded();</span>
<a name="line-258"></a><span class="cm">*/</span>
<a name="line-259"></a>
<a name="line-260"></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-261"></a>
<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">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-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">remove</span><span class="p">(</span><span class="n">QString</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">endGroup</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">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-268"></a><span class="p">{</span>
<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;Open Browser...&quot;</span><span class="p">;</span>
<a name="line-270"></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-271"></a><span class="p">}</span>
<a name="line-272"></a>
<a name="line-273"></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-274"></a><span class="p">{</span>
<a name="line-275"></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-276"></a>
<a name="line-277"></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-278"></a> <span class="p">{</span>
<a name="line-279"></a> <span class="k">return</span> <span class="n">urlParameters</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="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-283"></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-284"></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-285"></a>
<a name="line-286"></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-287"></a> <span class="p">{</span>
<a name="line-288"></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-289"></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-290"></a> <span class="p">}</span>
<a name="line-291"></a>
<a name="line-292"></a> <span class="k">return</span> <span class="n">urlParameters</span><span class="p">;</span>
<a name="line-293"></a><span class="p">}</span>
<a name="line-294"></a>
<a name="line-295"></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-296"></a><span class="p">{</span>
<a name="line-297"></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-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> <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-307"></a> <span class="k">return</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">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-311"></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-312"></a>
<a name="line-313"></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-314"></a> <span class="p">{</span>
<a name="line-315"></a> <span class="c1">//emit extraTokensReady(extraTokens);</span>
<a name="line-316"></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-317"></a>
<a name="line-318"></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-319"></a> <span class="p">{</span>
<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;</span><span class="se">\t</span><span class="s">&quot;</span>
<a name="line-321"></a> <span class="o">&lt;&lt;</span> <span class="n">key</span>
<a name="line-322"></a> <span class="o">&lt;&lt;</span> <span class="s">&quot;:&quot;</span>
<a name="line-323"></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-324"></a> <span class="p">}</span>
<a name="line-325"></a> <span class="p">}</span>
<a name="line-326"></a>
<a name="line-327"></a> <span class="n">emit</span> <span class="n">signalLinkingSucceeded</span><span class="p">();</span>
<a name="line-328"></a>
<a name="line-329"></a> <span class="n">getUserName</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="kt">bool</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">authenticated</span><span class="p">()</span>
<a name="line-333"></a><span class="p">{</span>
<a name="line-334"></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-335"></a><span class="p">}</span>
<a name="line-336"></a>
<a name="line-337"></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-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">false</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="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-349"></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-350"></a> <span class="kt">bool</span> <span class="n">rescale</span><span class="p">,</span>
<a name="line-351"></a> <span class="kt">int</span> <span class="n">maxDim</span><span class="p">,</span>
<a name="line-352"></a> <span class="kt">int</span> <span class="n">imageQuality</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">QFileInfo</span> <span class="n">imgFileInfo</span><span class="p">(</span><span class="n">imgPath</span><span class="p">);</span>
<a name="line-356"></a> <span class="n">QString</span> <span class="n">path</span><span class="p">;</span>
<a name="line-357"></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-358"></a>
<a name="line-359"></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-360"></a>
<a name="line-361"></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-362"></a> <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-363"></a> <span class="p">{</span>
<a name="line-364"></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-365"></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-366"></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-367"></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-368"></a>
<a name="line-369"></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-370"></a> <span class="p">{</span>
<a name="line-371"></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-372"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-373"></a> <span class="p">}</span>
<a name="line-374"></a>
<a name="line-375"></a>
<a name="line-376"></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-377"></a>
<a name="line-378"></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-379"></a> <span class="p">{</span>
<a name="line-380"></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-381"></a> <span class="p">}</span>
<a name="line-382"></a>
<a name="line-383"></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-384"></a>
<a name="line-385"></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-386"></a> <span class="p">{</span>
<a name="line-387"></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-388"></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-389"></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-390"></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-391"></a> <span class="p">}</span>
<a name="line-392"></a> <span class="p">}</span>
<a name="line-393"></a> <span class="k">else</span>
<a name="line-394"></a> <span class="p">{</span>
<a name="line-395"></a> <span class="n">path</span> <span class="o">=</span> <span class="n">imgPath</span><span class="p">;</span>
<a name="line-396"></a> <span class="n">chunked</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-397"></a> <span class="p">}</span>
<a name="line-398"></a>
<a name="line-399"></a> <span class="k">if</span> <span class="p">(</span><span class="n">chunked</span><span class="p">)</span>
<a name="line-400"></a> <span class="p">{</span>
<a name="line-401"></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-402"></a> <span class="p">}</span>
<a name="line-403"></a> <span class="k">else</span>
<a name="line-404"></a> <span class="p">{</span>
<a name="line-405"></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-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="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-410"></a><span class="p">{</span>
<a name="line-411"></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-412"></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-413"></a>
<a name="line-414"></a> <span class="n">TwMPForm</span> <span class="n">form</span><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="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-417"></a> <span class="p">{</span>
<a name="line-418"></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-419"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-420"></a> <span class="p">}</span>
<a name="line-421"></a>
<a name="line-422"></a> <span class="n">form</span><span class="p">.</span><span class="n">finish</span><span class="p">();</span>
<a name="line-423"></a>
<a name="line-424"></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-425"></a> <span class="p">{</span>
<a name="line-426"></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-427"></a> <span class="p">}</span>
<a name="line-428"></a>
<a name="line-429"></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-430"></a> <span class="p">{</span>
<a name="line-431"></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-432"></a> <span class="p">}</span>
<a name="line-433"></a>
<a name="line-434"></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-435"></a>
<a name="line-436"></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-437"></a>
<a name="line-438"></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-439"></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-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">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-441"></a>
<a name="line-442"></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-443"></a>
<a name="line-444"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-445"></a><span class="p">}</span>
<a name="line-446"></a>
<a name="line-447"></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-448"></a><span class="p">{</span>
<a name="line-449"></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-450"></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-451"></a>
<a name="line-452"></a> <span class="n">TwMPForm</span> <span class="n">form</span><span class="p">;</span>
<a name="line-453"></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-454"></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-455"></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-456"></a>
<a name="line-457"></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-458"></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-459"></a>
<a name="line-460"></a> <span class="cm">/* (Feb 2019)</span>
<a name="line-461"></a><span class="cm"> * Image file must be &lt;= 5MB</span>
<a name="line-462"></a><span class="cm"> * Gif must be &lt;= 15MB</span>
<a name="line-463"></a><span class="cm"> * Video must be &lt;= 512MB</span>
<a name="line-464"></a><span class="cm"> */</span>
<a name="line-465"></a>
<a name="line-466"></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-467"></a> <span class="p">{</span>
<a name="line-468"></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-469"></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-470"></a> <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">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-473"></a> <span class="p">{</span>
<a name="line-474"></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-475"></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-476"></a> <span class="k">return</span> <span class="nb">false</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">mediaCategory</span> <span class="o">=</span> <span class="s">&quot;TWEET_GIF&quot;</span><span class="p">;</span>
<a name="line-480"></a> <span class="p">}</span>
<a name="line-481"></a> <span class="k">else</span>
<a name="line-482"></a> <span class="p">{</span>
<a name="line-483"></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-484"></a> <span class="p">{</span>
<a name="line-485"></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-486"></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-487"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-488"></a> <span class="p">}</span>
<a name="line-489"></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-490"></a> <span class="p">}</span>
<a name="line-491"></a> <span class="p">}</span>
<a name="line-492"></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-493"></a> <span class="p">{</span>
<a name="line-494"></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-495"></a> <span class="p">{</span>
<a name="line-496"></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-497"></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-498"></a> <span class="k">return</span> <span class="nb">false</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="n">mediaType</span> <span class="o">=</span> <span class="s">&quot;video/mp4&quot;</span><span class="p">;</span>
<a name="line-502"></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-503"></a> <span class="p">}</span>
<a name="line-504"></a> <span class="k">else</span>
<a name="line-505"></a> <span class="p">{</span>
<a name="line-506"></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-507"></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-508"></a> <span class="k">return</span> <span class="nb">false</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">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-512"></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-513"></a> <span class="n">form</span><span class="p">.</span><span class="n">finish</span><span class="p">();</span>
<a name="line-514"></a>
<a name="line-515"></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-516"></a>
<a name="line-517"></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-518"></a>
<a name="line-519"></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-520"></a>
<a name="line-521"></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-522"></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-523"></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-524"></a>
<a name="line-525"></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-526"></a>
<a name="line-527"></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-528"></a>
<a name="line-529"></a> <span class="k">return</span> <span class="nb">true</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="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-533"></a><span class="p">{</span>
<a name="line-534"></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-535"></a>
<a name="line-536"></a> <span class="k">static</span> <span class="n">TwMPForm</span> <span class="n">form</span><span class="p">;</span>
<a name="line-537"></a>
<a name="line-538"></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-539"></a> <span class="p">{</span>
<a name="line-540"></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-541"></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-542"></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-543"></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-544"></a> <span class="p">}</span>
<a name="line-545"></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-546"></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-547"></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-548"></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-549"></a>
<a name="line-550"></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-551"></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-552"></a>
<a name="line-553"></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-554"></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-555"></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-556"></a>
<a name="line-557"></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-558"></a>
<a name="line-559"></a> <span class="c1">// Reset form for later uploads</span>
<a name="line-560"></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-561"></a> <span class="p">{</span>
<a name="line-562"></a> <span class="n">form</span><span class="p">.</span><span class="n">reset</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="k">return</span> <span class="nb">true</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="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-569"></a><span class="p">{</span>
<a name="line-570"></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-571"></a>
<a name="line-572"></a> <span class="n">TwMPForm</span> <span class="n">form</span><span class="p">;</span>
<a name="line-573"></a>
<a name="line-574"></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-575"></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-576"></a> <span class="n">form</span><span class="p">.</span><span class="n">finish</span><span class="p">();</span>
<a name="line-577"></a>
<a name="line-578"></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-579"></a>
<a name="line-580"></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-581"></a>
<a name="line-582"></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-583"></a>
<a name="line-584"></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-585"></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-586"></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-587"></a>
<a name="line-588"></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-589"></a>
<a name="line-590"></a> <span class="k">return</span> <span class="nb">true</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="kt">void</span> <span class="n">TwTalker</span><span class="o">::</span><span class="n">getUserName</span><span class="p">()</span>
<a name="line-594"></a><span class="p">{</span>
<a name="line-595"></a> <span class="cm">/*</span>
<a name="line-596"></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-597"></a><span class="cm"> * Look at debug message printed to console for futher ideas and exploitation</span>
<a name="line-598"></a><span class="cm"> */</span>
<a name="line-599"></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-600"></a>
<a name="line-601"></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-602"></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-603"></a>
<a name="line-604"></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-605"></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-606"></a>
<a name="line-607"></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-608"></a><span class="p">}</span>
<a name="line-609"></a>
<a name="line-610"></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-611"></a><span class="p">{</span>
<a name="line-612"></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-613"></a>
<a name="line-614"></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-615"></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-616"></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-617"></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-618"></a>
<a name="line-619"></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-620"></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-621"></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-622"></a>
<a name="line-623"></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-624"></a><span class="p">}</span>
<a name="line-625"></a>
<a name="line-626"></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-627"></a><span class="p">{</span>
<a name="line-628"></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-629"></a>
<a name="line-630"></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-631"></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-632"></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-633"></a>
<a name="line-634"></a> <span class="n">QUrlQuery</span> <span class="n">query</span><span class="p">;</span>
<a name="line-635"></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-636"></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-637"></a>
<a name="line-638"></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-639"></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-640"></a>
<a name="line-641"></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-642"></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-643"></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-644"></a><span class="p">}</span>
<a name="line-645"></a>
<a name="line-646"></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-647"></a><span class="p">{</span>
<a name="line-648"></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-649"></a>
<a name="line-650"></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-651"></a> <span class="p">{</span>
<a name="line-652"></a> <span class="k">return</span><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="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-656"></a>
<a name="line-657"></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-658"></a> <span class="p">{</span>
<a name="line-659"></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-660"></a> <span class="p">{</span>
<a name="line-661"></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-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;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-663"></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-664"></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-665"></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-666"></a>
<a name="line-667"></a> <span class="n">reply</span><span class="o">-&gt;</span><span class="n">deleteLater</span><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> <span class="p">}</span>
<a name="line-671"></a>
<a name="line-672"></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-673"></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-674"></a>
<a name="line-675"></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-676"></a> <span class="p">{</span>
<a name="line-677"></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-678"></a>
<a name="line-679"></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-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;In TW_LISTFOLDERS&quot;</span><span class="p">;</span>
<a name="line-681"></a> <span class="n">parseResponseListFolders</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
<a name="line-682"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-683"></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-684"></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-685"></a> <span class="n">parseResponseCreateFolder</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
<a name="line-686"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-687"></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-688"></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-689"></a> <span class="n">parseResponseAddPhoto</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
<a name="line-690"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-691"></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-692"></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-693"></a> <span class="n">parseResponseUserName</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
<a name="line-694"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-695"></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-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_CREATETWEET&quot;</span><span class="p">;</span>
<a name="line-697"></a> <span class="n">parseResponseCreateTweet</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> <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-700"></a> <span class="n">segmentIndex</span> <span class="o">=</span> <span class="mi">0</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_UPLOADINIT&quot;</span><span class="p">;</span>
<a name="line-702"></a> <span class="n">parseResponseAddPhotoInit</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> <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-705"></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-706"></a> <span class="n">segmentIndex</span><span class="o">++</span><span class="p">;</span>
<a name="line-707"></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-708"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-709"></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-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;In TW_UPLOADSTATUSCHECK&quot;</span><span class="p">;</span>
<a name="line-711"></a> <span class="n">parseCheckUploadStatus</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
<a name="line-712"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-713"></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-714"></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-715"></a> <span class="n">parseResponseAddPhotoFinalize</span><span class="p">(</span><span class="n">buffer</span><span class="p">);</span>
<a name="line-716"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-717"></a> <span class="k">default</span><span class="o">:</span>
<a name="line-718"></a> <span class="k">break</span><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">reply</span><span class="o">-&gt;</span><span class="n">deleteLater</span><span class="p">();</span>
<a name="line-722"></a><span class="p">}</span>
<a name="line-723"></a>
<a name="line-724"></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-725"></a><span class="p">{</span>
<a name="line-726"></a> <span class="n">QJsonParseError</span> <span class="n">err</span><span class="p">;</span>
<a name="line-727"></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-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;parseResponseAddPhoto: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">doc</span><span class="p">;</span>
<a name="line-729"></a>
<a name="line-730"></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-731"></a> <span class="p">{</span>
<a name="line-732"></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-733"></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-734"></a> <span class="k">return</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="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-738"></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-739"></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-740"></a>
<a name="line-741"></a> <span class="c1">// We haven&#39;t emit signalAddPhotoSucceeded() here yet, since we need to update the status first</span>
<a name="line-742"></a> <span class="n">createTweet</span><span class="p">(</span><span class="n">mediaId</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">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-746"></a><span class="p">{</span>
<a name="line-747"></a> <span class="n">QJsonParseError</span> <span class="n">err</span><span class="p">;</span>
<a name="line-748"></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-749"></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-750"></a>
<a name="line-751"></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-752"></a> <span class="p">{</span>
<a name="line-753"></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-754"></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-755"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-756"></a> <span class="p">}</span>
<a name="line-757"></a>
<a name="line-758"></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-759"></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-760"></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-761"></a>
<a name="line-762"></a> <span class="c1">// We haven&#39;t emit signalAddPhotoSucceeded() here yet, since we need to update the status first</span>
<a name="line-763"></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-764"></a><span class="p">}</span>
<a name="line-765"></a>
<a name="line-766"></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-767"></a><span class="p">{</span>
<a name="line-768"></a> <span class="cm">/* (Fev. 2019)</span>
<a name="line-769"></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-770"></a><span class="cm"> * This is indeed an expected response code, because the response should be with an empty body.</span>
<a name="line-771"></a><span class="cm"> * However, in order to keep a compatible prototype of parseResponse methodes and reserve for future change,</span>
<a name="line-772"></a><span class="cm"> * we should keep argument const QByteArray&amp; data.</span>
<a name="line-773"></a><span class="cm"> */</span>
<a name="line-774"></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-775"></a>
<a name="line-776"></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-777"></a> <span class="p">{</span>
<a name="line-778"></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-779"></a> <span class="p">}</span>
<a name="line-780"></a> <span class="k">else</span>
<a name="line-781"></a> <span class="p">{</span>
<a name="line-782"></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-783"></a> <span class="p">}</span>
<a name="line-784"></a><span class="p">}</span>
<a name="line-785"></a>
<a name="line-786"></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-787"></a><span class="p">{</span>
<a name="line-788"></a> <span class="n">QJsonParseError</span> <span class="n">err</span><span class="p">;</span>
<a name="line-789"></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-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;parseResponseAddPhotoFinalize: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">doc</span><span class="p">;</span>
<a name="line-791"></a>
<a name="line-792"></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-793"></a> <span class="p">{</span>
<a name="line-794"></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-795"></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-796"></a> <span class="k">return</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">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-800"></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-801"></a>
<a name="line-802"></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-803"></a> <span class="p">{</span>
<a name="line-804"></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-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;state: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">state</span><span class="p">;</span>
<a name="line-806"></a>
<a name="line-807"></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-808"></a> <span class="p">{</span>
<a name="line-809"></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-810"></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-811"></a> <span class="p">}</span>
<a name="line-812"></a> <span class="p">}</span>
<a name="line-813"></a> <span class="k">else</span>
<a name="line-814"></a> <span class="p">{</span>
<a name="line-815"></a> <span class="c1">// We haven&#39;t emit signalAddPhotoSucceeded() here yet, since we need to update the status first</span>
<a name="line-816"></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-817"></a> <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">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-821"></a><span class="p">{</span>
<a name="line-822"></a> <span class="n">QJsonParseError</span> <span class="n">err</span><span class="p">;</span>
<a name="line-823"></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-824"></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-825"></a>
<a name="line-826"></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-827"></a> <span class="p">{</span>
<a name="line-828"></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-829"></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-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">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-834"></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-835"></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-836"></a>
<a name="line-837"></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-838"></a> <span class="p">{</span>
<a name="line-839"></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-840"></a> <span class="p">}</span>
<a name="line-841"></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-842"></a> <span class="p">{</span>
<a name="line-843"></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-844"></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-845"></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-846"></a> <span class="s">&quot;Code: %1, name: %2, message: %3&quot;</span><span class="p">,</span>
<a name="line-847"></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-848"></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-849"></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-850"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-851"></a> <span class="p">}</span>
<a name="line-852"></a> <span class="k">else</span> <span class="c1">// succeeded</span>
<a name="line-853"></a> <span class="p">{</span>
<a name="line-854"></a> <span class="c1">// We haven&#39;t emit signalAddPhotoSucceeded() here yet, since we need to update the status first</span>
<a name="line-855"></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-856"></a> <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">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-860"></a><span class="p">{</span>
<a name="line-861"></a> <span class="n">QJsonParseError</span> <span class="n">err</span><span class="p">;</span>
<a name="line-862"></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-863"></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-864"></a>
<a name="line-865"></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-866"></a> <span class="p">{</span>
<a name="line-867"></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-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="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-872"></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-873"></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-874"></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-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;user screen name: @&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">screenName</span><span class="p">;</span>
<a name="line-876"></a>
<a name="line-877"></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-878"></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-879"></a><span class="p">}</span>
<a name="line-880"></a>
<a name="line-881"></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-882"></a><span class="p">{</span>
<a name="line-883"></a> <span class="n">QJsonParseError</span> <span class="n">err</span><span class="p">;</span>
<a name="line-884"></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-885"></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-886"></a>
<a name="line-887"></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-888"></a> <span class="p">{</span>
<a name="line-889"></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-890"></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-891"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-892"></a> <span class="p">}</span>
<a name="line-893"></a>
<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;Tweet posted successfully!&quot;</span><span class="p">;</span>
<a name="line-895"></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-896"></a> <span class="n">emit</span> <span class="nf">signalAddPhotoSucceeded</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="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-900"></a><span class="p">{</span>
<a name="line-901"></a> <span class="n">QJsonParseError</span> <span class="n">err</span><span class="p">;</span>
<a name="line-902"></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-903"></a>
<a name="line-904"></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-905"></a> <span class="p">{</span>
<a name="line-906"></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-907"></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-908"></a> <span class="k">return</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="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-912"></a> <span class="c1">//qCDebug(DIGIKAM_WEBSERVICES_LOG) &lt;&lt; &quot;Json: &quot; &lt;&lt; doc;</span>
<a name="line-913"></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-914"></a>
<a name="line-915"></a> <span class="c1">//qCDebug(DIGIKAM_WEBSERVICES_LOG) &lt;&lt; &quot;Json response: &quot; &lt;&lt; jsonArray;</span>
<a name="line-916"></a>
<a name="line-917"></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-918"></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-919"></a>
<a name="line-920"></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-921"></a> <span class="p">{</span>
<a name="line-922"></a> <span class="n">QString</span> <span class="n">path</span><span class="p">;</span>
<a name="line-923"></a> <span class="n">QString</span> <span class="n">folderName</span><span class="p">;</span>
<a name="line-924"></a> <span class="n">QJsonObject</span> <span class="n">folder</span><span class="p">;</span>
<a name="line-925"></a>
<a name="line-926"></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-927"></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-928"></a>
<a name="line-929"></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-930"></a> <span class="p">{</span>
<a name="line-931"></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-932"></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-933"></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-934"></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-935"></a> <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">emit</span> <span class="n">signalBusy</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-939"></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-940"></a><span class="p">}</span>
<a name="line-941"></a>
<a name="line-942"></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-943"></a><span class="p">{</span>
<a name="line-944"></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-945"></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-946"></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-947"></a>
<a name="line-948"></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-949"></a>
<a name="line-950"></a> <span class="k">if</span> <span class="p">(</span><span class="n">fail</span><span class="p">)</span>
<a name="line-951"></a> <span class="p">{</span>
<a name="line-952"></a> <span class="n">QJsonParseError</span> <span class="n">err</span><span class="p">;</span>
<a name="line-953"></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-954"></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-955"></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-956"></a> <span class="p">}</span>
<a name="line-957"></a> <span class="k">else</span>
<a name="line-958"></a> <span class="p">{</span>
<a name="line-959"></a> <span class="n">emit</span> <span class="n">signalCreateFolderSucceeded</span><span class="p">();</span>
<a name="line-960"></a> <span class="p">}</span>
<a name="line-961"></a><span class="p">}</span>
<a name="line-962"></a>
<a name="line-963"></a><span class="p">}</span> <span class="c1">// namespace DigikamGenericTwitterPlugin</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/35.html b/static/reports/cppcheck/master/35.html
index 8f16fd761..07a28bd7b 100644
--- a/static/reports/cppcheck/master/35.html
+++ b/static/reports/cppcheck/master/35.html
@@ -1,2501 +1,409 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/webservices/yandexfotki/yftalker.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/rawimport/native/rawpostprocessing.cpp </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> yftalker.cpp</p>
-<a href='35.html#line-826'> shadowVar 826</a><a href='35.html#line-857'> shadowVar 857</a>
+ <p id="filename"><a href="index.html">Defects:</a> rawpostprocessing.cpp</p>
+<a href='35.html#line-54'> useInitializationList 54</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</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 : 2008-13-08</span>
+<a name="line-7"></a><span class="cm"> * Description : Raw post processing corrections.</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) 2008-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-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;rawpostprocessing.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-26"></a><span class="c1">// Local 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-28"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
+<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&quot;imagehistogram.h&quot;</span><span class="cp"></span>
+<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&quot;imagelevels.h&quot;</span><span class="cp"></span>
+<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&quot;wbfilter.h&quot;</span><span class="cp"></span>
+<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&quot;curvesfilter.h&quot;</span><span class="cp"></span>
+<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&quot;bcgfilter.h&quot;</span><span class="cp"></span>
+<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_globals.h&quot;</span><span class="cp"></span>
+<a name="line-35"></a>
+<a name="line-36"></a><span class="k">namespace</span> <span class="n">DigikamRawImportNativePlugin</span>
+<a name="line-37"></a><span class="p">{</span>
+<a name="line-38"></a>
+<a name="line-39"></a><span class="n">RawPostProcessing</span><span class="o">::</span><span class="n">RawPostProcessing</span><span class="p">(</span><span class="n">DImg</span><span class="o">*</span> <span class="k">const</span> <span class="n">orgImage</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="k">const</span> <span class="n">DRawDecoding</span><span class="o">&amp;</span> <span class="n">settings</span><span class="p">)</span>
+<a name="line-40"></a> <span class="o">:</span> <span class="n">DImgThreadedFilter</span><span class="p">(</span><span class="n">parent</span><span class="p">)</span>
+<a name="line-41"></a><span class="p">{</span>
+<a name="line-42"></a> <span class="n">setFilterName</span><span class="p">(</span><span class="s">&quot;RawPostProcessing&quot;</span><span class="p">);</span>
+<a name="line-43"></a> <span class="n">setOriginalImage</span><span class="p">(</span><span class="n">orgImage</span><span class="o">-&gt;</span><span class="n">copy</span><span class="p">());</span>
+<a name="line-44"></a> <span class="n">m_customRawSettings</span> <span class="o">=</span> <span class="n">settings</span><span class="p">;</span>
+<a name="line-45"></a> <span class="n">initFilter</span><span class="p">();</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-48"></a><span class="n">RawPostProcessing</span><span class="o">::</span><span class="n">RawPostProcessing</span><span class="p">(</span><span class="n">DImgThreadedFilter</span><span class="o">*</span> <span class="k">const</span> <span class="n">parentFilter</span><span class="p">,</span>
+<a name="line-49"></a> <span class="k">const</span> <span class="n">DImg</span><span class="o">&amp;</span> <span class="n">orgImage</span><span class="p">,</span> <span class="k">const</span> <span class="n">DImg</span><span class="o">&amp;</span> <span class="n">destImage</span><span class="p">,</span>
+<a name="line-50"></a> <span class="kt">int</span> <span class="n">progressBegin</span><span class="p">,</span> <span class="kt">int</span> <span class="n">progressEnd</span><span class="p">,</span> <span class="k">const</span> <span class="n">DRawDecoding</span><span class="o">&amp;</span> <span class="n">settings</span><span class="p">)</span>
+<a name="line-51"></a> <span class="o">:</span> <span class="n">DImgThreadedFilter</span><span class="p">(</span><span class="n">parentFilter</span><span class="p">,</span> <span class="n">orgImage</span><span class="p">,</span> <span class="n">destImage</span><span class="p">,</span> <span class="n">progressBegin</span><span class="p">,</span> <span class="n">progressEnd</span><span class="p">,</span>
+<a name="line-52"></a> <span class="n">parentFilter</span><span class="o">-&gt;</span><span class="n">filterName</span><span class="p">()</span> <span class="o">+</span> <span class="s">&quot;: RawPostProcessing&quot;</span><span class="p">)</span>
+<a name="line-53"></a><span class="p">{</span>
+<a name="line-54"></a><span class="hll"> <span class="n">m_customRawSettings</span> <span class="o">=</span> <span class="n">settings</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'm_customRawSettings' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;m_customRawSettings&apos; a value by passing the value to the constructor in the initialization list.</div></div>
+</span><a name="line-55"></a>
+<a name="line-56"></a> <span class="c1">// NOTE: use dynamic binding as this virtual method can be re-implemented in derived classes.</span>
+<a name="line-57"></a> <span class="k">this</span><span class="o">-&gt;</span><span class="n">filterImage</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-60"></a><span class="n">RawPostProcessing</span><span class="o">::~</span><span class="n">RawPostProcessing</span><span class="p">()</span>
+<a name="line-61"></a><span class="p">{</span>
+<a name="line-62"></a> <span class="n">cancelFilter</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="kt">void</span> <span class="n">RawPostProcessing</span><span class="o">::</span><span class="n">filterImage</span><span class="p">()</span>
+<a name="line-66"></a><span class="p">{</span>
+<a name="line-67"></a> <span class="n">rawPostProcessing</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="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-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-70"></a><span class="kt">void</span> <span class="n">RawPostProcessing</span><span class="o">::</span><span class="n">rawPostProcessing</span><span class="p">()</span>
+<a name="line-71"></a><span class="p">{</span>
+<a name="line-72"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_orgImage</span><span class="p">.</span><span class="n">bits</span><span class="p">()</span> <span class="o">||</span> <span class="o">!</span><span class="n">m_orgImage</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">||</span> <span class="o">!</span><span class="n">m_orgImage</span><span class="p">.</span><span class="n">height</span><span class="p">())</span>
+<a name="line-73"></a> <span class="p">{</span>
+<a name="line-74"></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="p">(</span><span class="s">&quot;RawPostProcessing::rawPostProcessing: no image m_orgImage.bits() available!&quot;</span><span class="p">);</span>
+<a name="line-75"></a> <span class="k">return</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="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_customRawSettings</span><span class="p">.</span><span class="n">postProcessingSettingsIsDirty</span><span class="p">())</span>
+<a name="line-79"></a> <span class="p">{</span>
+<a name="line-80"></a> <span class="n">m_destImage</span> <span class="o">=</span> <span class="n">m_orgImage</span><span class="p">;</span>
+<a name="line-81"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-82"></a> <span class="p">}</span>
+<a name="line-83"></a>
+<a name="line-84"></a> <span class="n">postProgress</span><span class="p">(</span><span class="mi">20</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">m_customRawSettings</span><span class="p">.</span><span class="n">exposureComp</span> <span class="o">!=</span> <span class="mf">0.0</span> <span class="o">||</span> <span class="n">m_customRawSettings</span><span class="p">.</span><span class="n">saturation</span> <span class="o">!=</span> <span class="mf">1.0</span><span class="p">)</span>
+<a name="line-87"></a> <span class="p">{</span>
+<a name="line-88"></a> <span class="n">WBContainer</span> <span class="n">settings</span><span class="p">;</span>
+<a name="line-89"></a> <span class="n">settings</span><span class="p">.</span><span class="n">temperature</span> <span class="o">=</span> <span class="mf">6500.0</span><span class="p">;</span>
+<a name="line-90"></a> <span class="n">settings</span><span class="p">.</span><span class="n">dark</span> <span class="o">=</span> <span class="mf">0.5</span><span class="p">;</span>
+<a name="line-91"></a> <span class="n">settings</span><span class="p">.</span><span class="n">black</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">;</span>
+<a name="line-92"></a> <span class="n">settings</span><span class="p">.</span><span class="n">exposition</span> <span class="o">=</span> <span class="n">m_customRawSettings</span><span class="p">.</span><span class="n">exposureComp</span><span class="p">;</span>
+<a name="line-93"></a> <span class="n">settings</span><span class="p">.</span><span class="n">gamma</span> <span class="o">=</span> <span class="mf">1.0</span><span class="p">;</span>
+<a name="line-94"></a> <span class="n">settings</span><span class="p">.</span><span class="n">saturation</span> <span class="o">=</span> <span class="n">m_customRawSettings</span><span class="p">.</span><span class="n">saturation</span><span class="p">;</span>
+<a name="line-95"></a> <span class="n">settings</span><span class="p">.</span><span class="n">green</span> <span class="o">=</span> <span class="mf">1.0</span><span class="p">;</span>
+<a name="line-96"></a> <span class="n">WBFilter</span> <span class="nf">wb</span><span class="p">(</span><span class="o">&amp;</span><span class="n">m_orgImage</span><span class="p">,</span> <span class="mi">0L</span><span class="p">,</span> <span class="n">settings</span><span class="p">);</span>
+<a name="line-97"></a> <span class="n">wb</span><span class="p">.</span><span class="n">startFilterDirectly</span><span class="p">();</span>
+<a name="line-98"></a> <span class="n">m_orgImage</span><span class="p">.</span><span class="n">putImageData</span><span class="p">(</span><span class="n">wb</span><span class="p">.</span><span class="n">getTargetImage</span><span class="p">().</span><span class="n">bits</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-101"></a> <span class="n">postProgress</span><span class="p">(</span><span class="mi">40</span><span class="p">);</span>
+<a name="line-102"></a>
+<a name="line-103"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_customRawSettings</span><span class="p">.</span><span class="n">lightness</span> <span class="o">!=</span> <span class="mf">0.0</span> <span class="o">||</span> <span class="n">m_customRawSettings</span><span class="p">.</span><span class="n">contrast</span> <span class="o">!=</span> <span class="mf">1.0</span> <span class="o">||</span> <span class="n">m_customRawSettings</span><span class="p">.</span><span class="n">gamma</span> <span class="o">!=</span> <span class="mf">1.0</span><span class="p">)</span>
+<a name="line-104"></a> <span class="p">{</span>
+<a name="line-105"></a> <span class="n">BCGContainer</span> <span class="n">settings</span><span class="p">;</span>
+<a name="line-106"></a> <span class="n">settings</span><span class="p">.</span><span class="n">brightness</span> <span class="o">=</span> <span class="n">m_customRawSettings</span><span class="p">.</span><span class="n">lightness</span><span class="p">;</span>
+<a name="line-107"></a> <span class="n">settings</span><span class="p">.</span><span class="n">contrast</span> <span class="o">=</span> <span class="n">m_customRawSettings</span><span class="p">.</span><span class="n">contrast</span><span class="p">;</span>
+<a name="line-108"></a> <span class="n">settings</span><span class="p">.</span><span class="n">gamma</span> <span class="o">=</span> <span class="n">m_customRawSettings</span><span class="p">.</span><span class="n">gamma</span><span class="p">;</span>
+<a name="line-109"></a> <span class="n">BCGFilter</span> <span class="nf">bcg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">m_orgImage</span><span class="p">,</span> <span class="mi">0L</span><span class="p">,</span> <span class="n">settings</span><span class="p">);</span>
+<a name="line-110"></a> <span class="n">bcg</span><span class="p">.</span><span class="n">startFilterDirectly</span><span class="p">();</span>
+<a name="line-111"></a> <span class="n">m_orgImage</span><span class="p">.</span><span class="n">putImageData</span><span class="p">(</span><span class="n">bcg</span><span class="p">.</span><span class="n">getTargetImage</span><span class="p">().</span><span class="n">bits</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">postProgress</span><span class="p">(</span><span class="mi">60</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-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-116"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_customRawSettings</span><span class="p">.</span><span class="n">curveAdjust</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-117"></a> <span class="p">{</span>
+<a name="line-118"></a> <span class="n">CurvesContainer</span> <span class="n">prm</span><span class="p">(</span><span class="n">ImageCurves</span><span class="o">::</span><span class="n">CURVE_SMOOTH</span><span class="p">,</span> <span class="n">m_orgImage</span><span class="p">.</span><span class="n">sixteenBit</span><span class="p">());</span>
+<a name="line-119"></a> <span class="n">prm</span><span class="p">.</span><span class="n">values</span><span class="p">[</span><span class="n">LuminosityChannel</span><span class="p">]</span> <span class="o">=</span> <span class="n">m_customRawSettings</span><span class="p">.</span><span class="n">curveAdjust</span><span class="p">;</span>
+<a name="line-120"></a> <span class="n">CurvesFilter</span> <span class="nf">curves</span><span class="p">(</span><span class="o">&amp;</span><span class="n">m_orgImage</span><span class="p">,</span> <span class="mi">0L</span><span class="p">,</span> <span class="n">prm</span><span class="p">);</span>
+<a name="line-121"></a> <span class="n">curves</span><span class="p">.</span><span class="n">startFilterDirectly</span><span class="p">();</span>
+<a name="line-122"></a> <span class="n">m_orgImage</span><span class="p">.</span><span class="n">putImageData</span><span class="p">(</span><span class="n">curves</span><span class="p">.</span><span class="n">getTargetImage</span><span class="p">().</span><span class="n">bits</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">postProgress</span><span class="p">(</span><span class="mi">80</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">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-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-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-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">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="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="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">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="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-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="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-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="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-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="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="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="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-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-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-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-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-127"></a> <span class="n">m_destImage</span> <span class="o">=</span> <span class="n">m_orgImage</span><span class="p">;</span>
+<a name="line-128"></a>
+<a name="line-129"></a> <span class="n">postProgress</span><span class="p">(</span><span class="mi">100</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="p">}</span> <span class="c1">// namespace DigikamRawImportNativePlugin</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/36.html b/static/reports/cppcheck/master/36.html
index 793292012..2a5c9a824 100644
--- a/static/reports/cppcheck/master/36.html
+++ b/static/reports/cppcheck/master/36.html
@@ -1,409 +1,2501 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/rawimport/native/rawpostprocessing.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/generic/webservices/yandexfotki/yftalker.cpp </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> rawpostprocessing.cpp</p>
-<a href='36.html#line-54'> useInitializationList 54</a>
+ <p id="filename"><a href="index.html">Defects:</a> yftalker.cpp</p>
+<a href='36.html#line-826'> shadowVar 826</a><a href='36.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</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 : 2008-13-08</span>
-<a name="line-7"></a><span class="cm"> * Description : Raw post processing corrections.</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) 2008-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-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-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;rawpostprocessing.h&quot;</span><span class="cp"></span>
+<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">// Local includes</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">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
-<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&quot;imagehistogram.h&quot;</span><span class="cp"></span>
-<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&quot;imagelevels.h&quot;</span><span class="cp"></span>
-<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&quot;wbfilter.h&quot;</span><span class="cp"></span>
-<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&quot;curvesfilter.h&quot;</span><span class="cp"></span>
-<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&quot;bcgfilter.h&quot;</span><span class="cp"></span>
-<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_globals.h&quot;</span><span class="cp"></span>
-<a name="line-35"></a>
-<a name="line-36"></a><span class="k">namespace</span> <span class="n">DigikamRawImportNativePlugin</span>
-<a name="line-37"></a><span class="p">{</span>
-<a name="line-38"></a>
-<a name="line-39"></a><span class="n">RawPostProcessing</span><span class="o">::</span><span class="n">RawPostProcessing</span><span class="p">(</span><span class="n">DImg</span><span class="o">*</span> <span class="k">const</span> <span class="n">orgImage</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="k">const</span> <span class="n">DRawDecoding</span><span class="o">&amp;</span> <span class="n">settings</span><span class="p">)</span>
-<a name="line-40"></a> <span class="o">:</span> <span class="n">DImgThreadedFilter</span><span class="p">(</span><span class="n">parent</span><span class="p">)</span>
-<a name="line-41"></a><span class="p">{</span>
-<a name="line-42"></a> <span class="n">setFilterName</span><span class="p">(</span><span class="s">&quot;RawPostProcessing&quot;</span><span class="p">);</span>
-<a name="line-43"></a> <span class="n">setOriginalImage</span><span class="p">(</span><span class="n">orgImage</span><span class="o">-&gt;</span><span class="n">copy</span><span class="p">());</span>
-<a name="line-44"></a> <span class="n">m_customRawSettings</span> <span class="o">=</span> <span class="n">settings</span><span class="p">;</span>
-<a name="line-45"></a> <span class="n">initFilter</span><span class="p">();</span>
-<a name="line-46"></a><span class="p">}</span>
+<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="n">RawPostProcessing</span><span class="o">::</span><span class="n">RawPostProcessing</span><span class="p">(</span><span class="n">DImgThreadedFilter</span><span class="o">*</span> <span class="k">const</span> <span class="n">parentFilter</span><span class="p">,</span>
-<a name="line-49"></a> <span class="k">const</span> <span class="n">DImg</span><span class="o">&amp;</span> <span class="n">orgImage</span><span class="p">,</span> <span class="k">const</span> <span class="n">DImg</span><span class="o">&amp;</span> <span class="n">destImage</span><span class="p">,</span>
-<a name="line-50"></a> <span class="kt">int</span> <span class="n">progressBegin</span><span class="p">,</span> <span class="kt">int</span> <span class="n">progressEnd</span><span class="p">,</span> <span class="k">const</span> <span class="n">DRawDecoding</span><span class="o">&amp;</span> <span class="n">settings</span><span class="p">)</span>
-<a name="line-51"></a> <span class="o">:</span> <span class="n">DImgThreadedFilter</span><span class="p">(</span><span class="n">parentFilter</span><span class="p">,</span> <span class="n">orgImage</span><span class="p">,</span> <span class="n">destImage</span><span class="p">,</span> <span class="n">progressBegin</span><span class="p">,</span> <span class="n">progressEnd</span><span class="p">,</span>
-<a name="line-52"></a> <span class="n">parentFilter</span><span class="o">-&gt;</span><span class="n">filterName</span><span class="p">()</span> <span class="o">+</span> <span class="s">&quot;: RawPostProcessing&quot;</span><span class="p">)</span>
-<a name="line-53"></a><span class="p">{</span>
-<a name="line-54"></a><span class="hll"> <span class="n">m_customRawSettings</span> <span class="o">=</span> <span class="n">settings</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'm_customRawSettings' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;m_customRawSettings&apos; a value by passing the value to the constructor in the initialization list.</div></div>
-</span><a name="line-55"></a>
-<a name="line-56"></a> <span class="c1">// NOTE: use dynamic binding as this virtual method can be re-implemented in derived classes.</span>
-<a name="line-57"></a> <span class="k">this</span><span class="o">-&gt;</span><span class="n">filterImage</span><span class="p">();</span>
-<a name="line-58"></a><span class="p">}</span>
+<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="n">RawPostProcessing</span><span class="o">::~</span><span class="n">RawPostProcessing</span><span class="p">()</span>
-<a name="line-61"></a><span class="p">{</span>
-<a name="line-62"></a> <span class="n">cancelFilter</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="kt">void</span> <span class="n">RawPostProcessing</span><span class="o">::</span><span class="n">filterImage</span><span class="p">()</span>
-<a name="line-66"></a><span class="p">{</span>
-<a name="line-67"></a> <span class="n">rawPostProcessing</span><span class="p">();</span>
-<a name="line-68"></a><span class="p">}</span>
+<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="kt">void</span> <span class="n">RawPostProcessing</span><span class="o">::</span><span class="n">rawPostProcessing</span><span class="p">()</span>
-<a name="line-71"></a><span class="p">{</span>
-<a name="line-72"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_orgImage</span><span class="p">.</span><span class="n">bits</span><span class="p">()</span> <span class="o">||</span> <span class="o">!</span><span class="n">m_orgImage</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">||</span> <span class="o">!</span><span class="n">m_orgImage</span><span class="p">.</span><span class="n">height</span><span class="p">())</span>
-<a name="line-73"></a> <span class="p">{</span>
-<a name="line-74"></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="p">(</span><span class="s">&quot;RawPostProcessing::rawPostProcessing: no image m_orgImage.bits() available!&quot;</span><span class="p">);</span>
-<a name="line-75"></a> <span class="k">return</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="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_customRawSettings</span><span class="p">.</span><span class="n">postProcessingSettingsIsDirty</span><span class="p">())</span>
-<a name="line-79"></a> <span class="p">{</span>
-<a name="line-80"></a> <span class="n">m_destImage</span> <span class="o">=</span> <span class="n">m_orgImage</span><span class="p">;</span>
-<a name="line-81"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-82"></a> <span class="p">}</span>
-<a name="line-83"></a>
-<a name="line-84"></a> <span class="n">postProgress</span><span class="p">(</span><span class="mi">20</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">m_customRawSettings</span><span class="p">.</span><span class="n">exposureComp</span> <span class="o">!=</span> <span class="mf">0.0</span> <span class="o">||</span> <span class="n">m_customRawSettings</span><span class="p">.</span><span class="n">saturation</span> <span class="o">!=</span> <span class="mf">1.0</span><span class="p">)</span>
-<a name="line-87"></a> <span class="p">{</span>
-<a name="line-88"></a> <span class="n">WBContainer</span> <span class="n">settings</span><span class="p">;</span>
-<a name="line-89"></a> <span class="n">settings</span><span class="p">.</span><span class="n">temperature</span> <span class="o">=</span> <span class="mf">6500.0</span><span class="p">;</span>
-<a name="line-90"></a> <span class="n">settings</span><span class="p">.</span><span class="n">dark</span> <span class="o">=</span> <span class="mf">0.5</span><span class="p">;</span>
-<a name="line-91"></a> <span class="n">settings</span><span class="p">.</span><span class="n">black</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">;</span>
-<a name="line-92"></a> <span class="n">settings</span><span class="p">.</span><span class="n">exposition</span> <span class="o">=</span> <span class="n">m_customRawSettings</span><span class="p">.</span><span class="n">exposureComp</span><span class="p">;</span>
-<a name="line-93"></a> <span class="n">settings</span><span class="p">.</span><span class="n">gamma</span> <span class="o">=</span> <span class="mf">1.0</span><span class="p">;</span>
-<a name="line-94"></a> <span class="n">settings</span><span class="p">.</span><span class="n">saturation</span> <span class="o">=</span> <span class="n">m_customRawSettings</span><span class="p">.</span><span class="n">saturation</span><span class="p">;</span>
-<a name="line-95"></a> <span class="n">settings</span><span class="p">.</span><span class="n">green</span> <span class="o">=</span> <span class="mf">1.0</span><span class="p">;</span>
-<a name="line-96"></a> <span class="n">WBFilter</span> <span class="nf">wb</span><span class="p">(</span><span class="o">&amp;</span><span class="n">m_orgImage</span><span class="p">,</span> <span class="mi">0L</span><span class="p">,</span> <span class="n">settings</span><span class="p">);</span>
-<a name="line-97"></a> <span class="n">wb</span><span class="p">.</span><span class="n">startFilterDirectly</span><span class="p">();</span>
-<a name="line-98"></a> <span class="n">m_orgImage</span><span class="p">.</span><span class="n">putImageData</span><span class="p">(</span><span class="n">wb</span><span class="p">.</span><span class="n">getTargetImage</span><span class="p">().</span><span class="n">bits</span><span class="p">());</span>
-<a name="line-99"></a> <span class="p">}</span>
+<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-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="n">postProgress</span><span class="p">(</span><span class="mi">40</span><span class="p">);</span>
-<a name="line-102"></a>
-<a name="line-103"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_customRawSettings</span><span class="p">.</span><span class="n">lightness</span> <span class="o">!=</span> <span class="mf">0.0</span> <span class="o">||</span> <span class="n">m_customRawSettings</span><span class="p">.</span><span class="n">contrast</span> <span class="o">!=</span> <span class="mf">1.0</span> <span class="o">||</span> <span class="n">m_customRawSettings</span><span class="p">.</span><span class="n">gamma</span> <span class="o">!=</span> <span class="mf">1.0</span><span class="p">)</span>
-<a name="line-104"></a> <span class="p">{</span>
-<a name="line-105"></a> <span class="n">BCGContainer</span> <span class="n">settings</span><span class="p">;</span>
-<a name="line-106"></a> <span class="n">settings</span><span class="p">.</span><span class="n">brightness</span> <span class="o">=</span> <span class="n">m_customRawSettings</span><span class="p">.</span><span class="n">lightness</span><span class="p">;</span>
-<a name="line-107"></a> <span class="n">settings</span><span class="p">.</span><span class="n">contrast</span> <span class="o">=</span> <span class="n">m_customRawSettings</span><span class="p">.</span><span class="n">contrast</span><span class="p">;</span>
-<a name="line-108"></a> <span class="n">settings</span><span class="p">.</span><span class="n">gamma</span> <span class="o">=</span> <span class="n">m_customRawSettings</span><span class="p">.</span><span class="n">gamma</span><span class="p">;</span>
-<a name="line-109"></a> <span class="n">BCGFilter</span> <span class="nf">bcg</span><span class="p">(</span><span class="o">&amp;</span><span class="n">m_orgImage</span><span class="p">,</span> <span class="mi">0L</span><span class="p">,</span> <span class="n">settings</span><span class="p">);</span>
-<a name="line-110"></a> <span class="n">bcg</span><span class="p">.</span><span class="n">startFilterDirectly</span><span class="p">();</span>
-<a name="line-111"></a> <span class="n">m_orgImage</span><span class="p">.</span><span class="n">putImageData</span><span class="p">(</span><span class="n">bcg</span><span class="p">.</span><span class="n">getTargetImage</span><span class="p">().</span><span class="n">bits</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">postProgress</span><span class="p">(</span><span class="mi">60</span><span class="p">);</span>
+<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-115"></a>
-<a name="line-116"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_customRawSettings</span><span class="p">.</span><span class="n">curveAdjust</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-117"></a> <span class="p">{</span>
-<a name="line-118"></a> <span class="n">CurvesContainer</span> <span class="n">prm</span><span class="p">(</span><span class="n">ImageCurves</span><span class="o">::</span><span class="n">CURVE_SMOOTH</span><span class="p">,</span> <span class="n">m_orgImage</span><span class="p">.</span><span class="n">sixteenBit</span><span class="p">());</span>
-<a name="line-119"></a> <span class="n">prm</span><span class="p">.</span><span class="n">values</span><span class="p">[</span><span class="n">LuminosityChannel</span><span class="p">]</span> <span class="o">=</span> <span class="n">m_customRawSettings</span><span class="p">.</span><span class="n">curveAdjust</span><span class="p">;</span>
-<a name="line-120"></a> <span class="n">CurvesFilter</span> <span class="nf">curves</span><span class="p">(</span><span class="o">&amp;</span><span class="n">m_orgImage</span><span class="p">,</span> <span class="mi">0L</span><span class="p">,</span> <span class="n">prm</span><span class="p">);</span>
-<a name="line-121"></a> <span class="n">curves</span><span class="p">.</span><span class="n">startFilterDirectly</span><span class="p">();</span>
-<a name="line-122"></a> <span class="n">m_orgImage</span><span class="p">.</span><span class="n">putImageData</span><span class="p">(</span><span class="n">curves</span><span class="p">.</span><span class="n">getTargetImage</span><span class="p">().</span><span class="n">bits</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">postProgress</span><span class="p">(</span><span class="mi">80</span><span class="p">);</span>
+<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="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">m_destImage</span> <span class="o">=</span> <span class="n">m_orgImage</span><span class="p">;</span>
-<a name="line-128"></a>
-<a name="line-129"></a> <span class="n">postProgress</span><span class="p">(</span><span class="mi">100</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="p">}</span> <span class="c1">// namespace DigikamRawImportNativePlugin</span>
+<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-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-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-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">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="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="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">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="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-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="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-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="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-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="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="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="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-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-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-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-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>
</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/37.html b/static/reports/cppcheck/master/37.html
index 2a7a780d2..3af1bc503 100644
--- a/static/reports/cppcheck/master/37.html
+++ b/static/reports/cppcheck/master/37.html
@@ -1,473 +1,473 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/libs/album/engine/albumpointer.h </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/libs/album/engine/albumpointer.h </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> albumpointer.h</p>
<a href='37.html#line-139'> operatorEqRetRefThis 139</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</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-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-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-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-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-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="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-145"></a> <span class="p">{</span>
<a name="line-146"></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-147"></a> <span class="p">{</span>
<a name="line-148"></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-149"></a> <span class="p">}</span>
<a name="line-150"></a>
<a name="line-151"></a> <span class="k">return</span> <span class="o">*</span><span class="n">this</span><span class="p">;</span>
<a name="line-152"></a> <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="p">}</span> <span class="c1">// namespace Digikam</span>
<a name="line-156"></a>
<a name="line-157"></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-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;</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-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">TAlbum</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">SAlbum</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">DAlbum</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">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-163"></a>
<a name="line-164"></a><span class="cp">#endif </span><span class="c1">// DIGIKAM_ALBUM_POINTER_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/38.html b/static/reports/cppcheck/master/38.html
index 6a7ac4c51..bd25f5823 100644
--- a/static/reports/cppcheck/master/38.html
+++ b/static/reports/cppcheck/master/38.html
@@ -1,2631 +1,2631 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/libs/dngwriter/dngwriter_convert.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/libs/dngwriter/dngwriter_convert.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> dngwriter_convert.cpp</p>
<a href='38.html#line-273'> shadowVar 273</a><a href='38.html#line-273'> shadowVar 273</a><a href='38.html#line-923'> shadowVar 923</a><a href='38.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
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 : 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) 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-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-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">sprintf</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="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="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/39.html b/static/reports/cppcheck/master/39.html
index 70fcaa4cb..ae156fcdc 100644
--- a/static/reports/cppcheck/master/39.html
+++ b/static/reports/cppcheck/master/39.html
@@ -1,1197 +1,1197 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/libs/threadimageio/fileio/loadsavetask.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/libs/threadimageio/fileio/loadsavetask.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> loadsavetask.cpp</p>
<a href='39.html#line-97'> knownConditionTrueFalse 97</a><a href='39.html#line-168'> knownConditionTrueFalse 168</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</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-12-17</span>
<a name="line-7"></a><span class="cm"> * Description : image file IO threaded interface.</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2005-2013 by Marcel Wiesweg &lt;marcel dot wiesweg at gmx dot de&gt;</span>
<a name="line-10"></a><span class="cm"> * Copyright (C) 2005-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)</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;loadsavetask.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="c1">// Local includes</span>
<a name="line-30"></a>
<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&quot;iccmanager.h&quot;</span><span class="cp"></span>
<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&quot;icctransform.h&quot;</span><span class="cp"></span>
<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&quot;loadsavethread.h&quot;</span><span class="cp"></span>
<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&quot;managedloadsavethread.h&quot;</span><span class="cp"></span>
<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&quot;sharedloadsavethread.h&quot;</span><span class="cp"></span>
<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&quot;loadingcache.h&quot;</span><span class="cp"></span>
<a name="line-38"></a>
<a name="line-39"></a><span class="k">namespace</span> <span class="n">Digikam</span>
<a name="line-40"></a><span class="p">{</span>
<a name="line-41"></a>
<a name="line-42"></a><span class="kt">void</span> <span class="n">LoadingTask</span><span class="o">::</span><span class="n">execute</span><span class="p">()</span>
<a name="line-43"></a><span class="p">{</span>
<a name="line-44"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_loadingTaskStatus</span> <span class="o">==</span> <span class="n">LoadingTaskStatusStopping</span><span class="p">)</span>
<a name="line-45"></a> <span class="p">{</span>
<a name="line-46"></a> <span class="k">return</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">DImg</span> <span class="n">img</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">filePath</span><span class="p">,</span> <span class="k">this</span><span class="p">,</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">rawDecodingSettings</span><span class="p">);</span>
<a name="line-50"></a> <span class="n">m_thread</span><span class="o">-&gt;</span><span class="n">taskHasFinished</span><span class="p">();</span>
<a name="line-51"></a> <span class="n">m_thread</span><span class="o">-&gt;</span><span class="n">imageLoaded</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">,</span> <span class="n">img</span><span class="p">);</span>
<a name="line-52"></a><span class="p">}</span>
<a name="line-53"></a>
<a name="line-54"></a><span class="n">LoadingTask</span><span class="o">::</span><span class="n">TaskType</span> <span class="n">LoadingTask</span><span class="o">::</span><span class="n">type</span><span class="p">()</span>
<a name="line-55"></a><span class="p">{</span>
<a name="line-56"></a> <span class="k">return</span> <span class="n">TaskTypeLoading</span><span class="p">;</span>
<a name="line-57"></a><span class="p">}</span>
<a name="line-58"></a>
<a name="line-59"></a><span class="kt">void</span> <span class="n">LoadingTask</span><span class="o">::</span><span class="n">progressInfo</span><span class="p">(</span><span class="kt">float</span> <span class="n">progress</span><span class="p">)</span>
<a name="line-60"></a><span class="p">{</span>
<a name="line-61"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_loadingTaskStatus</span> <span class="o">==</span> <span class="n">LoadingTaskStatusLoading</span><span class="p">)</span>
<a name="line-62"></a> <span class="p">{</span>
<a name="line-63"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_thread</span> <span class="o">&amp;&amp;</span> <span class="n">m_thread</span><span class="o">-&gt;</span><span class="n">querySendNotifyEvent</span><span class="p">())</span>
<a name="line-64"></a> <span class="p">{</span>
<a name="line-65"></a> <span class="n">m_thread</span><span class="o">-&gt;</span><span class="n">loadingProgress</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">,</span> <span class="n">progress</span><span class="p">);</span>
<a name="line-66"></a> <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">bool</span> <span class="n">LoadingTask</span><span class="o">::</span><span class="n">continueQuery</span><span class="p">()</span>
<a name="line-71"></a><span class="p">{</span>
<a name="line-72"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_loadingTaskStatus</span> <span class="o">!=</span> <span class="n">LoadingTaskStatusStopping</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">void</span> <span class="n">LoadingTask</span><span class="o">::</span><span class="n">setStatus</span><span class="p">(</span><span class="n">LoadingTaskStatus</span> <span class="n">status</span><span class="p">)</span>
<a name="line-76"></a><span class="p">{</span>
<a name="line-77"></a> <span class="n">m_loadingTaskStatus</span> <span class="o">=</span> <span class="n">status</span><span class="p">;</span>
<a name="line-78"></a><span class="p">}</span>
<a name="line-79"></a>
<a name="line-80"></a><span class="c1">//---------------------------------------------------------------------------------------------------</span>
<a name="line-81"></a>
<a name="line-82"></a><span class="n">SharedLoadingTask</span><span class="o">::</span><span class="n">SharedLoadingTask</span><span class="p">(</span><span class="n">LoadSaveThread</span><span class="o">*</span> <span class="k">const</span> <span class="kr">thread</span><span class="p">,</span> <span class="k">const</span> <span class="n">LoadingDescription</span><span class="o">&amp;</span> <span class="n">description</span><span class="p">,</span>
<a name="line-83"></a> <span class="n">LoadSaveThread</span><span class="o">::</span><span class="n">AccessMode</span> <span class="n">mode</span><span class="p">,</span> <span class="n">LoadingTaskStatus</span> <span class="n">loadingTaskStatus</span><span class="p">)</span>
<a name="line-84"></a> <span class="o">:</span> <span class="n">LoadingTask</span><span class="p">(</span><span class="kr">thread</span><span class="p">,</span> <span class="n">description</span><span class="p">,</span> <span class="n">loadingTaskStatus</span><span class="p">),</span>
<a name="line-85"></a> <span class="n">m_completed</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
<a name="line-86"></a> <span class="n">m_accessMode</span><span class="p">(</span><span class="n">mode</span><span class="p">),</span>
<a name="line-87"></a> <span class="n">m_usedProcess</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="k">if</span> <span class="p">(</span><span class="n">m_accessMode</span> <span class="o">==</span> <span class="n">LoadSaveThread</span><span class="o">::</span><span class="n">AccessModeRead</span> <span class="o">&amp;&amp;</span> <span class="n">needsPostProcessing</span><span class="p">())</span>
<a name="line-90"></a> <span class="p">{</span>
<a name="line-91"></a> <span class="n">m_accessMode</span> <span class="o">=</span> <span class="n">LoadSaveThread</span><span class="o">::</span><span class="n">AccessModeReadWrite</span><span class="p">;</span>
<a name="line-92"></a> <span class="p">}</span>
<a name="line-93"></a><span class="p">}</span>
<a name="line-94"></a>
<a name="line-95"></a><span class="kt">void</span> <span class="n">SharedLoadingTask</span><span class="o">::</span><span class="n">execute</span><span class="p">()</span>
<a name="line-96"></a><span class="p">{</span>
<a name="line-97"></a><span class="hll"> <span class="k">if</span> <span class="p">(</span><span class="n">m_loadingTaskStatus</span> <span class="o">==</span> <span class="n">LoadingTaskStatusStopping</span><span class="p">)</span><span class='error2'>&lt;--- Assuming condition 'm_loadingTaskStatus==LoadingTaskStatusStopping' is false</span>
</span><a name="line-98"></a> <span class="p">{</span>
<a name="line-99"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-100"></a> <span class="p">}</span>
<a name="line-101"></a>
<a name="line-102"></a> <span class="c1">// send StartedLoadingEvent from each single Task, not via LoadingProcess list</span>
<a name="line-103"></a>
<a name="line-104"></a> <span class="n">m_thread</span><span class="o">-&gt;</span><span class="n">imageStartedLoading</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">);</span>
<a name="line-105"></a>
<a name="line-106"></a> <span class="n">LoadingCache</span><span class="o">*</span> <span class="k">const</span> <span class="n">cache</span> <span class="o">=</span> <span class="n">LoadingCache</span><span class="o">::</span><span class="n">cache</span><span class="p">();</span>
<a name="line-107"></a> <span class="p">{</span>
<a name="line-108"></a> <span class="n">LoadingCache</span><span class="o">::</span><span class="n">CacheLock</span> <span class="n">lock</span><span class="p">(</span><span class="n">cache</span><span class="p">);</span>
<a name="line-109"></a>
<a name="line-110"></a> <span class="c1">// find possible cached images</span>
<a name="line-111"></a>
<a name="line-112"></a> <span class="n">DImg</span><span class="o">*</span> <span class="n">cachedImg</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-113"></a> <span class="n">QStringList</span> <span class="n">lookupKeys</span> <span class="o">=</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">lookupCacheKeys</span><span class="p">();</span>
<a name="line-114"></a>
<a name="line-115"></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">lookupKeys</span><span class="p">)</span>
<a name="line-116"></a> <span class="p">{</span>
<a name="line-117"></a> <span class="k">if</span> <span class="p">((</span><span class="n">cachedImg</span> <span class="o">=</span> <span class="n">cache</span><span class="o">-&gt;</span><span class="n">retrieveImage</span><span class="p">(</span><span class="n">key</span><span class="p">)))</span>
<a name="line-118"></a> <span class="p">{</span>
<a name="line-119"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">needCheckRawDecoding</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">cachedImg</span><span class="o">-&gt;</span><span class="n">rawDecodingSettings</span><span class="p">()</span> <span class="o">==</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">rawDecodingSettings</span><span class="p">)</span>
<a name="line-122"></a> <span class="p">{</span>
<a name="line-123"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-124"></a> <span class="p">}</span>
<a name="line-125"></a> <span class="k">else</span>
<a name="line-126"></a> <span class="p">{</span>
<a name="line-127"></a> <span class="n">cachedImg</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-128"></a> <span class="p">}</span>
<a name="line-129"></a> <span class="p">}</span>
<a name="line-130"></a> <span class="k">else</span>
<a name="line-131"></a> <span class="p">{</span>
<a name="line-132"></a> <span class="k">break</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> <span class="p">}</span>
<a name="line-136"></a>
<a name="line-137"></a> <span class="k">if</span> <span class="p">(</span><span class="n">cachedImg</span><span class="p">)</span>
<a name="line-138"></a> <span class="p">{</span>
<a name="line-139"></a> <span class="c1">// image is found in image cache, loading is successful</span>
<a name="line-140"></a>
<a name="line-141"></a> <span class="n">m_img</span> <span class="o">=</span> <span class="n">DImg</span><span class="p">(</span><span class="o">*</span><span class="n">cachedImg</span><span class="p">);</span>
<a name="line-142"></a> <span class="p">}</span>
<a name="line-143"></a> <span class="k">else</span>
<a name="line-144"></a> <span class="p">{</span>
<a name="line-145"></a> <span class="c1">// find possible running loading process</span>
<a name="line-146"></a>
<a name="line-147"></a> <span class="n">m_usedProcess</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-148"></a>
<a name="line-149"></a> <span class="k">for</span> <span class="p">(</span><span class="n">QStringList</span><span class="o">::</span><span class="n">const_iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">lookupKeys</span><span class="p">.</span><span class="n">constBegin</span><span class="p">()</span> <span class="p">;</span> <span class="n">it</span> <span class="o">!=</span> <span class="n">lookupKeys</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-150"></a> <span class="p">{</span>
<a name="line-151"></a> <span class="k">if</span> <span class="p">((</span><span class="n">m_usedProcess</span> <span class="o">=</span> <span class="n">cache</span><span class="o">-&gt;</span><span class="n">retrieveLoadingProcess</span><span class="p">(</span><span class="o">*</span><span class="n">it</span><span class="p">)))</span>
<a name="line-152"></a> <span class="p">{</span>
<a name="line-153"></a> <span class="k">break</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>
<a name="line-157"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_usedProcess</span><span class="p">)</span>
<a name="line-158"></a> <span class="p">{</span>
<a name="line-159"></a> <span class="c1">// Other process is right now loading this image.</span>
<a name="line-160"></a> <span class="c1">// Add this task to the list of listeners and</span>
<a name="line-161"></a> <span class="c1">// attach this thread to the other thread, wait until loading</span>
<a name="line-162"></a> <span class="c1">// has finished.</span>
<a name="line-163"></a>
<a name="line-164"></a> <span class="n">m_usedProcess</span><span class="o">-&gt;</span><span class="n">addListener</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-165"></a>
<a name="line-166"></a> <span class="c1">// break loop when either the loading has completed, or this task is being stopped</span>
<a name="line-167"></a>
<a name="line-168"></a><span class="hll"> <span class="k">while</span> <span class="p">((</span><span class="n">m_loadingTaskStatus</span> <span class="o">!=</span> <span class="n">LoadingTaskStatusStopping</span><span class="p">)</span> <span class="o">&amp;&amp;</span><span class='error2'>&lt;--- Condition 'm_loadingTaskStatus!=LoadingTaskStatusStopping' is always true</span>
</span><a name="line-169"></a> <span class="n">m_usedProcess</span> <span class="o">&amp;&amp;</span>
<a name="line-170"></a> <span class="o">!</span><span class="n">m_usedProcess</span><span class="o">-&gt;</span><span class="n">completed</span><span class="p">())</span>
<a name="line-171"></a> <span class="p">{</span>
<a name="line-172"></a> <span class="n">lock</span><span class="p">.</span><span class="n">timedWait</span><span class="p">();</span>
<a name="line-173"></a> <span class="p">}</span>
<a name="line-174"></a>
<a name="line-175"></a> <span class="c1">// remove listener from process</span>
<a name="line-176"></a>
<a name="line-177"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_usedProcess</span><span class="p">)</span>
<a name="line-178"></a> <span class="p">{</span>
<a name="line-179"></a> <span class="n">m_usedProcess</span><span class="o">-&gt;</span><span class="n">removeListener</span><span class="p">(</span><span class="k">this</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="c1">// set to 0, as checked in setStatus</span>
<a name="line-183"></a>
<a name="line-184"></a> <span class="n">m_usedProcess</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-185"></a>
<a name="line-186"></a> <span class="c1">// wake up the process which is waiting until all listeners have removed themselves</span>
<a name="line-187"></a>
<a name="line-188"></a> <span class="n">lock</span><span class="p">.</span><span class="n">wakeAll</span><span class="p">();</span>
<a name="line-189"></a>
<a name="line-190"></a> <span class="c1">// m_img is now set to the result</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="c1">// Neither in cache, nor currently loading in different thread.</span>
<a name="line-195"></a> <span class="c1">// Load it here and now, add this LoadingProcess to cache list.</span>
<a name="line-196"></a>
<a name="line-197"></a> <span class="n">cache</span><span class="o">-&gt;</span><span class="n">addLoadingProcess</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-198"></a>
<a name="line-199"></a> <span class="c1">// Add this to the list of listeners</span>
<a name="line-200"></a>
<a name="line-201"></a> <span class="n">addListener</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-202"></a>
<a name="line-203"></a> <span class="c1">// for use in setStatus</span>
<a name="line-204"></a>
<a name="line-205"></a> <span class="n">m_usedProcess</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<a name="line-206"></a>
<a name="line-207"></a> <span class="c1">// Notify other processes that we are now loading this image.</span>
<a name="line-208"></a> <span class="c1">// They might be interested - see notifyNewLoadingProcess below</span>
<a name="line-209"></a>
<a name="line-210"></a> <span class="n">cache</span><span class="o">-&gt;</span><span class="n">notifyNewLoadingProcess</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">m_loadingDescription</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>
<a name="line-215"></a> <span class="k">if</span> <span class="p">(</span><span class="n">continueQuery</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">m_img</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-216"></a> <span class="p">{</span>
<a name="line-217"></a> <span class="c1">// load image</span>
<a name="line-218"></a>
<a name="line-219"></a> <span class="n">m_img</span> <span class="o">=</span> <span class="n">DImg</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">filePath</span><span class="p">,</span> <span class="k">this</span><span class="p">,</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">rawDecodingSettings</span><span class="p">);</span>
<a name="line-220"></a>
<a name="line-221"></a> <span class="k">if</span> <span class="p">(</span><span class="n">continueQuery</span><span class="p">())</span>
<a name="line-222"></a> <span class="p">{</span>
<a name="line-223"></a> <span class="n">LoadingCache</span><span class="o">::</span><span class="n">CacheLock</span> <span class="n">lock</span><span class="p">(</span><span class="n">cache</span><span class="p">);</span>
<a name="line-224"></a>
<a name="line-225"></a> <span class="c1">// put valid image into cache of loaded images</span>
<a name="line-226"></a>
<a name="line-227"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_img</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-228"></a> <span class="p">{</span>
<a name="line-229"></a> <span class="n">cache</span><span class="o">-&gt;</span><span class="n">putImage</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">cacheKey</span><span class="p">(),</span> <span class="n">m_img</span><span class="p">,</span>
<a name="line-230"></a> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">filePath</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="c1">// remove this from the list of loading processes in cache</span>
<a name="line-234"></a>
<a name="line-235"></a> <span class="n">cache</span><span class="o">-&gt;</span><span class="n">removeLoadingProcess</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-236"></a>
<a name="line-237"></a> <span class="c1">// dispatch image to all listeners, including this</span>
<a name="line-238"></a>
<a name="line-239"></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_listeners</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-240"></a> <span class="p">{</span>
<a name="line-241"></a> <span class="n">LoadingProcessListener</span><span class="o">*</span> <span class="k">const</span> <span class="n">l</span> <span class="o">=</span> <span class="n">m_listeners</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-242"></a>
<a name="line-243"></a> <span class="k">if</span> <span class="p">(</span><span class="n">l</span><span class="o">-&gt;</span><span class="n">accessMode</span><span class="p">()</span> <span class="o">==</span> <span class="n">LoadSaveThread</span><span class="o">::</span><span class="n">AccessModeReadWrite</span><span class="p">)</span>
<a name="line-244"></a> <span class="p">{</span>
<a name="line-245"></a> <span class="c1">// If a listener requested ReadWrite access, it gets a deep copy.</span>
<a name="line-246"></a> <span class="c1">// DImg is explicitly shared.</span>
<a name="line-247"></a>
<a name="line-248"></a> <span class="n">l</span><span class="o">-&gt;</span><span class="n">setResult</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">,</span> <span class="n">m_img</span><span class="p">.</span><span class="n">copy</span><span class="p">());</span>
<a name="line-249"></a> <span class="p">}</span>
<a name="line-250"></a> <span class="k">else</span>
<a name="line-251"></a> <span class="p">{</span>
<a name="line-252"></a> <span class="n">l</span><span class="o">-&gt;</span><span class="n">setResult</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">,</span> <span class="n">m_img</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="c1">// remove myself from list of listeners</span>
<a name="line-257"></a>
<a name="line-258"></a> <span class="n">removeListener</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-259"></a>
<a name="line-260"></a> <span class="c1">// indicate that loading has finished so that listeners can stop waiting</span>
<a name="line-261"></a>
<a name="line-262"></a> <span class="n">m_completed</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-263"></a>
<a name="line-264"></a> <span class="c1">// wake all listeners waiting on cache condVar, so that they remove themselves</span>
<a name="line-265"></a>
<a name="line-266"></a> <span class="n">lock</span><span class="p">.</span><span class="n">wakeAll</span><span class="p">();</span>
<a name="line-267"></a>
<a name="line-268"></a> <span class="c1">// wait until all listeners have removed themselves</span>
<a name="line-269"></a>
<a name="line-270"></a> <span class="k">while</span> <span class="p">(</span><span class="n">m_listeners</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-271"></a> <span class="p">{</span>
<a name="line-272"></a> <span class="n">lock</span><span class="p">.</span><span class="n">timedWait</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="c1">// set to 0, as checked in setStatus</span>
<a name="line-276"></a>
<a name="line-277"></a> <span class="n">m_usedProcess</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-278"></a> <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="c1">// following the golden rule to avoid deadlocks, do this when CacheLock is not held</span>
<a name="line-282"></a>
<a name="line-283"></a> <span class="k">if</span> <span class="p">(</span><span class="n">continueQuery</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">m_img</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-284"></a> <span class="p">{</span>
<a name="line-285"></a> <span class="k">if</span> <span class="p">(</span><span class="n">accessMode</span><span class="p">()</span> <span class="o">==</span> <span class="n">LoadSaveThread</span><span class="o">::</span><span class="n">AccessModeReadWrite</span><span class="p">)</span>
<a name="line-286"></a> <span class="p">{</span>
<a name="line-287"></a> <span class="n">m_img</span><span class="p">.</span><span class="n">detach</span><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="n">postProcess</span><span class="p">();</span>
<a name="line-291"></a> <span class="p">}</span>
<a name="line-292"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">continueQuery</span><span class="p">())</span>
<a name="line-293"></a> <span class="p">{</span>
<a name="line-294"></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;Cannot load image for&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">filePath</span><span class="p">;</span>
<a name="line-295"></a> <span class="p">}</span>
<a name="line-296"></a> <span class="k">else</span>
<a name="line-297"></a> <span class="p">{</span>
<a name="line-298"></a> <span class="n">m_img</span> <span class="o">=</span> <span class="n">DImg</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="n">m_thread</span><span class="o">-&gt;</span><span class="n">taskHasFinished</span><span class="p">();</span>
<a name="line-302"></a> <span class="n">m_thread</span><span class="o">-&gt;</span><span class="n">imageLoaded</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">,</span> <span class="n">m_img</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="kt">void</span> <span class="n">SharedLoadingTask</span><span class="o">::</span><span class="n">setResult</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">DImg</span><span class="o">&amp;</span> <span class="n">img</span><span class="p">)</span>
<a name="line-306"></a><span class="p">{</span>
<a name="line-307"></a> <span class="c1">// this is called from another process&#39;s execute while this task is waiting on m_usedProcess.</span>
<a name="line-308"></a> <span class="c1">// Note that loadingDescription need not equal m_loadingDescription (may be superior)</span>
<a name="line-309"></a>
<a name="line-310"></a> <span class="n">LoadingDescription</span> <span class="n">tempDescription</span> <span class="o">=</span> <span class="n">loadingDescription</span><span class="p">;</span>
<a name="line-311"></a>
<a name="line-312"></a> <span class="c1">// these are taken from our own description</span>
<a name="line-313"></a>
<a name="line-314"></a> <span class="n">tempDescription</span><span class="p">.</span><span class="n">postProcessingParameters</span> <span class="o">=</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">postProcessingParameters</span><span class="p">;</span>
<a name="line-315"></a> <span class="n">m_loadingDescription</span> <span class="o">=</span> <span class="n">tempDescription</span><span class="p">;</span>
<a name="line-316"></a> <span class="n">m_img</span> <span class="o">=</span> <span class="n">img</span><span class="p">;</span>
<a name="line-317"></a><span class="p">}</span>
<a name="line-318"></a>
<a name="line-319"></a><span class="kt">bool</span> <span class="n">SharedLoadingTask</span><span class="o">::</span><span class="n">needsPostProcessing</span><span class="p">()</span> <span class="k">const</span>
<a name="line-320"></a><span class="p">{</span>
<a name="line-321"></a> <span class="k">return</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">postProcessingParameters</span><span class="p">.</span><span class="n">needsProcessing</span><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">SharedLoadingTask</span><span class="o">::</span><span class="n">postProcess</span><span class="p">()</span>
<a name="line-325"></a><span class="p">{</span>
<a name="line-326"></a> <span class="c1">// ---- Color management ---- //</span>
<a name="line-327"></a>
<a name="line-328"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">postProcessingParameters</span><span class="p">.</span><span class="n">colorManagement</span><span class="p">)</span>
<a name="line-329"></a> <span class="p">{</span>
<a name="line-330"></a> <span class="k">case</span> <span class="n">LoadingDescription</span><span class="o">::</span><span class="nl">NoColorConversion</span><span class="p">:</span>
<a name="line-331"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-332"></a>
<a name="line-333"></a> <span class="k">case</span> <span class="n">LoadingDescription</span><span class="o">::</span><span class="nl">ApplyTransform</span><span class="p">:</span>
<a name="line-334"></a> <span class="p">{</span>
<a name="line-335"></a> <span class="n">IccTransform</span> <span class="n">trans</span> <span class="o">=</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">postProcessingParameters</span><span class="p">.</span><span class="n">transform</span><span class="p">();</span>
<a name="line-336"></a> <span class="n">trans</span><span class="p">.</span><span class="n">apply</span><span class="p">(</span><span class="n">m_img</span><span class="p">);</span>
<a name="line-337"></a> <span class="n">m_img</span><span class="p">.</span><span class="n">setIccProfile</span><span class="p">(</span><span class="n">trans</span><span class="p">.</span><span class="n">outputProfile</span><span class="p">());</span>
<a name="line-338"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-339"></a> <span class="p">}</span>
<a name="line-340"></a>
<a name="line-341"></a> <span class="k">case</span> <span class="n">LoadingDescription</span><span class="o">::</span><span class="nl">ConvertForEditor</span><span class="p">:</span>
<a name="line-342"></a> <span class="p">{</span>
<a name="line-343"></a> <span class="n">IccManager</span> <span class="n">manager</span><span class="p">(</span><span class="n">m_img</span><span class="p">);</span>
<a name="line-344"></a> <span class="n">manager</span><span class="p">.</span><span class="n">transformDefault</span><span class="p">();</span>
<a name="line-345"></a> <span class="k">break</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="k">case</span> <span class="n">LoadingDescription</span><span class="o">::</span><span class="nl">ConvertToSRGB</span><span class="p">:</span>
<a name="line-349"></a> <span class="p">{</span>
<a name="line-350"></a> <span class="n">IccManager</span> <span class="n">manager</span><span class="p">(</span><span class="n">m_img</span><span class="p">);</span>
<a name="line-351"></a> <span class="n">manager</span><span class="p">.</span><span class="n">transformToSRGB</span><span class="p">();</span>
<a name="line-352"></a> <span class="k">break</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="k">case</span> <span class="n">LoadingDescription</span><span class="o">::</span><span class="nl">ConvertForDisplay</span><span class="p">:</span>
<a name="line-356"></a> <span class="p">{</span>
<a name="line-357"></a> <span class="n">IccManager</span> <span class="n">manager</span><span class="p">(</span><span class="n">m_img</span><span class="p">);</span>
<a name="line-358"></a> <span class="n">manager</span><span class="p">.</span><span class="n">transformForDisplay</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">postProcessingParameters</span><span class="p">.</span><span class="n">profile</span><span class="p">());</span>
<a name="line-359"></a> <span class="k">break</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="k">case</span> <span class="n">LoadingDescription</span><span class="o">::</span><span class="nl">ConvertForOutput</span><span class="p">:</span>
<a name="line-363"></a> <span class="p">{</span>
<a name="line-364"></a> <span class="n">IccManager</span> <span class="n">manager</span><span class="p">(</span><span class="n">m_img</span><span class="p">);</span>
<a name="line-365"></a> <span class="n">manager</span><span class="p">.</span><span class="n">transformForOutput</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">postProcessingParameters</span><span class="p">.</span><span class="n">profile</span><span class="p">());</span>
<a name="line-366"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-367"></a> <span class="p">}</span>
<a name="line-368"></a> <span class="p">}</span>
<a name="line-369"></a><span class="p">}</span>
<a name="line-370"></a>
<a name="line-371"></a><span class="kt">void</span> <span class="n">SharedLoadingTask</span><span class="o">::</span><span class="n">progressInfo</span><span class="p">(</span><span class="kt">float</span> <span class="n">progress</span><span class="p">)</span>
<a name="line-372"></a><span class="p">{</span>
<a name="line-373"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_loadingTaskStatus</span> <span class="o">==</span> <span class="n">LoadingTaskStatusLoading</span><span class="p">)</span>
<a name="line-374"></a> <span class="p">{</span>
<a name="line-375"></a> <span class="n">LoadingCache</span><span class="o">*</span> <span class="k">const</span> <span class="n">cache</span> <span class="o">=</span> <span class="n">LoadingCache</span><span class="o">::</span><span class="n">cache</span><span class="p">();</span>
<a name="line-376"></a> <span class="n">LoadingCache</span><span class="o">::</span><span class="n">CacheLock</span> <span class="n">lock</span><span class="p">(</span><span class="n">cache</span><span class="p">);</span>
<a name="line-377"></a>
<a name="line-378"></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_listeners</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-379"></a> <span class="p">{</span>
<a name="line-380"></a> <span class="n">LoadingProcessListener</span><span class="o">*</span> <span class="k">const</span> <span class="n">l</span> <span class="o">=</span> <span class="n">m_listeners</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-381"></a> <span class="n">LoadSaveNotifier</span><span class="o">*</span> <span class="k">const</span> <span class="n">notifier</span> <span class="o">=</span> <span class="n">l</span><span class="o">-&gt;</span><span class="n">loadSaveNotifier</span><span class="p">();</span>
<a name="line-382"></a>
<a name="line-383"></a> <span class="k">if</span> <span class="p">(</span><span class="n">notifier</span> <span class="o">&amp;&amp;</span> <span class="n">l</span><span class="o">-&gt;</span><span class="n">querySendNotifyEvent</span><span class="p">())</span>
<a name="line-384"></a> <span class="p">{</span>
<a name="line-385"></a> <span class="n">notifier</span><span class="o">-&gt;</span><span class="n">loadingProgress</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">,</span> <span class="n">progress</span><span class="p">);</span>
<a name="line-386"></a> <span class="p">}</span>
<a name="line-387"></a> <span class="p">}</span>
<a name="line-388"></a> <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="kt">bool</span> <span class="n">SharedLoadingTask</span><span class="o">::</span><span class="n">continueQuery</span><span class="p">()</span>
<a name="line-392"></a><span class="p">{</span>
<a name="line-393"></a> <span class="c1">// If this is called, the thread is currently loading an image.</span>
<a name="line-394"></a> <span class="c1">// In shared loading, we cannot stop until all listeners have been removed as well</span>
<a name="line-395"></a>
<a name="line-396"></a> <span class="k">return</span> <span class="p">((</span><span class="n">m_loadingTaskStatus</span> <span class="o">!=</span> <span class="n">LoadingTaskStatusStopping</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">m_listeners</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-397"></a><span class="p">}</span>
<a name="line-398"></a>
<a name="line-399"></a><span class="kt">void</span> <span class="n">SharedLoadingTask</span><span class="o">::</span><span class="n">setStatus</span><span class="p">(</span><span class="n">LoadingTaskStatus</span> <span class="n">status</span><span class="p">)</span>
<a name="line-400"></a><span class="p">{</span>
<a name="line-401"></a> <span class="n">m_loadingTaskStatus</span> <span class="o">=</span> <span class="n">status</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">m_loadingTaskStatus</span> <span class="o">==</span> <span class="n">LoadingTaskStatusStopping</span><span class="p">)</span>
<a name="line-404"></a> <span class="p">{</span>
<a name="line-405"></a> <span class="n">LoadingCache</span><span class="o">*</span> <span class="k">const</span> <span class="n">cache</span> <span class="o">=</span> <span class="n">LoadingCache</span><span class="o">::</span><span class="n">cache</span><span class="p">();</span>
<a name="line-406"></a> <span class="n">LoadingCache</span><span class="o">::</span><span class="n">CacheLock</span> <span class="n">lock</span><span class="p">(</span><span class="n">cache</span><span class="p">);</span>
<a name="line-407"></a>
<a name="line-408"></a> <span class="c1">// check for m_usedProcess, to avoid race condition that it has finished before</span>
<a name="line-409"></a>
<a name="line-410"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_usedProcess</span><span class="p">)</span>
<a name="line-411"></a> <span class="p">{</span>
<a name="line-412"></a> <span class="c1">// remove this from the list of loading processes in cache</span>
<a name="line-413"></a>
<a name="line-414"></a> <span class="n">cache</span><span class="o">-&gt;</span><span class="n">removeLoadingProcess</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-415"></a>
<a name="line-416"></a> <span class="c1">// remove this from list of listeners - check in continueQuery() of active thread</span>
<a name="line-417"></a>
<a name="line-418"></a> <span class="n">m_usedProcess</span><span class="o">-&gt;</span><span class="n">removeListener</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-419"></a>
<a name="line-420"></a> <span class="c1">// set m_usedProcess to 0, signalling that we have detached already</span>
<a name="line-421"></a>
<a name="line-422"></a> <span class="n">m_usedProcess</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-423"></a>
<a name="line-424"></a> <span class="c1">// wake all listeners - particularly this - from waiting on cache condvar</span>
<a name="line-425"></a>
<a name="line-426"></a> <span class="n">lock</span><span class="p">.</span><span class="n">wakeAll</span><span class="p">();</span>
<a name="line-427"></a> <span class="p">}</span>
<a name="line-428"></a> <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="kt">bool</span> <span class="n">SharedLoadingTask</span><span class="o">::</span><span class="n">completed</span><span class="p">()</span> <span class="k">const</span>
<a name="line-432"></a><span class="p">{</span>
<a name="line-433"></a> <span class="k">return</span> <span class="n">m_completed</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">QString</span> <span class="n">SharedLoadingTask</span><span class="o">::</span><span class="n">filePath</span><span class="p">()</span> <span class="k">const</span>
<a name="line-437"></a><span class="p">{</span>
<a name="line-438"></a> <span class="k">return</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">filePath</span><span class="p">;</span>
<a name="line-439"></a><span class="p">}</span>
<a name="line-440"></a>
<a name="line-441"></a><span class="n">QString</span> <span class="n">SharedLoadingTask</span><span class="o">::</span><span class="n">cacheKey</span><span class="p">()</span> <span class="k">const</span>
<a name="line-442"></a><span class="p">{</span>
<a name="line-443"></a> <span class="k">return</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">cacheKey</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="kt">void</span> <span class="n">SharedLoadingTask</span><span class="o">::</span><span class="n">addListener</span><span class="p">(</span><span class="n">LoadingProcessListener</span><span class="o">*</span> <span class="k">const</span> <span class="n">listener</span><span class="p">)</span>
<a name="line-447"></a><span class="p">{</span>
<a name="line-448"></a> <span class="n">m_listeners</span> <span class="o">&lt;&lt;</span> <span class="n">listener</span><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">SharedLoadingTask</span><span class="o">::</span><span class="n">removeListener</span><span class="p">(</span><span class="n">LoadingProcessListener</span><span class="o">*</span> <span class="k">const</span> <span class="n">listener</span><span class="p">)</span>
<a name="line-452"></a><span class="p">{</span>
<a name="line-453"></a> <span class="n">m_listeners</span><span class="p">.</span><span class="n">removeAll</span><span class="p">(</span><span class="n">listener</span><span class="p">);</span>
<a name="line-454"></a><span class="p">}</span>
<a name="line-455"></a>
<a name="line-456"></a><span class="kt">void</span> <span class="n">SharedLoadingTask</span><span class="o">::</span><span class="n">notifyNewLoadingProcess</span><span class="p">(</span><span class="n">LoadingProcess</span><span class="o">*</span> <span class="k">const</span> <span class="n">process</span><span class="p">,</span> <span class="k">const</span> <span class="n">LoadingDescription</span><span class="o">&amp;</span> <span class="n">description</span><span class="p">)</span>
<a name="line-457"></a><span class="p">{</span>
<a name="line-458"></a> <span class="c1">// Ok, we are notified that another task has been started in another thread.</span>
<a name="line-459"></a> <span class="c1">// We are of course only interested if the task loads the same file,</span>
<a name="line-460"></a> <span class="c1">// and we are right now loading a reduced version, and the other task is loading the full version.</span>
<a name="line-461"></a> <span class="c1">// In this case, we notify our own thread (a signal to the API user is emitted) of this.</span>
<a name="line-462"></a> <span class="c1">// The fact that we are receiving the method call shows that this task is registered with the LoadingCache,</span>
<a name="line-463"></a> <span class="c1">// somewhere in between the calls to addLoadingProcess(this) and removeLoadingProcess(this) above.</span>
<a name="line-464"></a>
<a name="line-465"></a> <span class="k">if</span> <span class="p">((</span><span class="n">process</span> <span class="o">!=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">LoadingProcess</span><span class="o">*&gt;</span><span class="p">(</span><span class="k">this</span><span class="p">))</span> <span class="o">&amp;&amp;</span>
<a name="line-466"></a> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">isReducedVersion</span><span class="p">()</span> <span class="o">&amp;&amp;</span>
<a name="line-467"></a> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">equalsIgnoreReducedVersion</span><span class="p">(</span><span class="n">description</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
<a name="line-468"></a> <span class="o">!</span><span class="n">description</span><span class="p">.</span><span class="n">isReducedVersion</span><span class="p">())</span>
<a name="line-469"></a> <span class="p">{</span>
<a name="line-470"></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_listeners</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-471"></a> <span class="p">{</span>
<a name="line-472"></a> <span class="n">m_listeners</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">loadSaveNotifier</span><span class="p">()</span><span class="o">-&gt;</span>
<a name="line-473"></a> <span class="n">moreCompleteLoadingAvailable</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">,</span> <span class="n">description</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="kt">bool</span> <span class="n">SharedLoadingTask</span><span class="o">::</span><span class="n">querySendNotifyEvent</span><span class="p">()</span> <span class="k">const</span>
<a name="line-479"></a><span class="p">{</span>
<a name="line-480"></a> <span class="k">return</span> <span class="n">m_thread</span> <span class="o">&amp;&amp;</span> <span class="n">m_thread</span><span class="o">-&gt;</span><span class="n">querySendNotifyEvent</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">LoadSaveNotifier</span><span class="o">*</span> <span class="n">SharedLoadingTask</span><span class="o">::</span><span class="n">loadSaveNotifier</span><span class="p">()</span> <span class="k">const</span>
<a name="line-484"></a><span class="p">{</span>
<a name="line-485"></a> <span class="k">return</span> <span class="n">m_thread</span><span class="p">;</span>
<a name="line-486"></a><span class="p">}</span>
<a name="line-487"></a>
<a name="line-488"></a><span class="n">LoadSaveThread</span><span class="o">::</span><span class="n">AccessMode</span> <span class="n">SharedLoadingTask</span><span class="o">::</span><span class="n">accessMode</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="k">return</span> <span class="n">m_accessMode</span><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="c1">//---------------------------------------------------------------------------------------------------</span>
<a name="line-494"></a>
<a name="line-495"></a><span class="kt">void</span> <span class="n">SavingTask</span><span class="o">::</span><span class="n">execute</span><span class="p">()</span>
<a name="line-496"></a><span class="p">{</span>
<a name="line-497"></a> <span class="n">m_thread</span><span class="o">-&gt;</span><span class="n">imageStartedSaving</span><span class="p">(</span><span class="n">m_filePath</span><span class="p">);</span>
<a name="line-498"></a> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="n">m_img</span><span class="p">.</span><span class="n">save</span><span class="p">(</span><span class="n">m_filePath</span><span class="p">,</span> <span class="n">m_format</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
<a name="line-499"></a> <span class="n">m_thread</span><span class="o">-&gt;</span><span class="n">taskHasFinished</span><span class="p">();</span>
<a name="line-500"></a> <span class="n">m_thread</span><span class="o">-&gt;</span><span class="n">imageSaved</span><span class="p">(</span><span class="n">m_filePath</span><span class="p">,</span> <span class="n">success</span><span class="p">);</span>
<a name="line-501"></a><span class="p">}</span>
<a name="line-502"></a>
<a name="line-503"></a><span class="n">LoadingTask</span><span class="o">::</span><span class="n">TaskType</span> <span class="n">SavingTask</span><span class="o">::</span><span class="n">type</span><span class="p">()</span>
<a name="line-504"></a><span class="p">{</span>
<a name="line-505"></a> <span class="k">return</span> <span class="n">TaskTypeSaving</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="kt">void</span> <span class="n">SavingTask</span><span class="o">::</span><span class="n">progressInfo</span><span class="p">(</span><span class="kt">float</span> <span class="n">progress</span><span class="p">)</span>
<a name="line-509"></a><span class="p">{</span>
<a name="line-510"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_thread</span><span class="o">-&gt;</span><span class="n">querySendNotifyEvent</span><span class="p">())</span>
<a name="line-511"></a> <span class="p">{</span>
<a name="line-512"></a> <span class="n">m_thread</span><span class="o">-&gt;</span><span class="n">savingProgress</span><span class="p">(</span><span class="n">m_filePath</span><span class="p">,</span> <span class="n">progress</span><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>
<a name="line-516"></a><span class="kt">bool</span> <span class="n">SavingTask</span><span class="o">::</span><span class="n">continueQuery</span><span class="p">()</span>
<a name="line-517"></a><span class="p">{</span>
<a name="line-518"></a> <span class="k">return</span> <span class="p">(</span><span class="n">m_savingTaskStatus</span> <span class="o">!=</span> <span class="n">SavingTaskStatusStopping</span><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="kt">void</span> <span class="n">SavingTask</span><span class="o">::</span><span class="n">setStatus</span><span class="p">(</span><span class="n">SavingTaskStatus</span> <span class="n">status</span><span class="p">)</span>
<a name="line-522"></a><span class="p">{</span>
<a name="line-523"></a> <span class="n">m_savingTaskStatus</span> <span class="o">=</span> <span class="n">status</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="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/4.html b/static/reports/cppcheck/master/4.html
index f14b74593..9810bf697 100644
--- a/static/reports/cppcheck/master/4.html
+++ b/static/reports/cppcheck/master/4.html
@@ -1,1403 +1,1403 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/metadata/geolocationedit/kmlexport/kmlexport.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/generic/metadata/geolocationedit/kmlexport/kmlexport.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> kmlexport.cpp</p>
<a href='4.html#line-208'> shadowVar 208</a><a href='4.html#line-318'> shadowVar 318</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</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 export GPS data to KML file.</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2006-2007 by Stephane Pontier &lt;shadow dot walker at free dot fr&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"> *</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;kmlexport.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;QImageReader&gt;</span><span class="cp"></span>
<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QPainter&gt;</span><span class="cp"></span>
<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QRegExp&gt;</span><span class="cp"></span>
<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QTextStream&gt;</span><span class="cp"></span>
<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QStandardPaths&gt;</span><span class="cp"></span>
<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QApplication&gt;</span><span class="cp"></span>
<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QIODevice&gt;</span><span class="cp"></span>
<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&lt;QDir&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;ksharedconfig.h&gt;</span><span class="cp"></span>
<a name="line-40"></a><span class="cp">#include</span> <span class="cpf">&lt;kconfiggroup.h&gt;</span><span class="cp"></span>
<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&gt;</span><span class="cp"></span>
<a name="line-42"></a>
<a name="line-43"></a><span class="c1">// Local includes</span>
<a name="line-44"></a>
<a name="line-45"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
<a name="line-46"></a><span class="cp">#include</span> <span class="cpf">&quot;dmessagebox.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">DigikamGenericGeolocationEditPlugin</span>
<a name="line-49"></a><span class="p">{</span>
<a name="line-50"></a>
<a name="line-51"></a><span class="n">KmlExport</span><span class="o">::</span><span class="n">KmlExport</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-52"></a><span class="p">{</span>
<a name="line-53"></a> <span class="n">m_localTarget</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-54"></a> <span class="n">m_optimize_googlemap</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-55"></a> <span class="n">m_GPXtracks</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-56"></a> <span class="n">m_iconSize</span> <span class="o">=</span> <span class="mi">33</span><span class="p">;</span>
<a name="line-57"></a> <span class="n">m_googlemapSize</span> <span class="o">=</span> <span class="mi">32</span><span class="p">;</span>
<a name="line-58"></a> <span class="n">m_size</span> <span class="o">=</span> <span class="mi">320</span><span class="p">;</span>
<a name="line-59"></a> <span class="n">m_altitudeMode</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-60"></a> <span class="n">m_TimeZone</span> <span class="o">=</span> <span class="mi">12</span><span class="p">;</span>
<a name="line-61"></a> <span class="n">m_LineWidth</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<a name="line-62"></a> <span class="n">m_GPXOpacity</span> <span class="o">=</span> <span class="mi">64</span><span class="p">;</span>
<a name="line-63"></a> <span class="n">m_GPXAltitudeMode</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-64"></a> <span class="n">m_kmlDocument</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-65"></a> <span class="n">m_iface</span> <span class="o">=</span> <span class="n">iface</span><span class="p">;</span>
<a name="line-66"></a><span class="p">}</span>
<a name="line-67"></a>
<a name="line-68"></a><span class="n">KmlExport</span><span class="o">::~</span><span class="n">KmlExport</span><span class="p">()</span>
<a name="line-69"></a><span class="p">{</span>
<a name="line-70"></a><span class="p">}</span>
<a name="line-71"></a>
<a name="line-72"></a><span class="kt">void</span> <span class="n">KmlExport</span><span class="o">::</span><span class="n">setUrls</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-73"></a><span class="p">{</span>
<a name="line-74"></a> <span class="n">m_urls</span> <span class="o">=</span> <span class="n">urls</span><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="n">QString</span> <span class="n">KmlExport</span><span class="o">::</span><span class="n">webifyFileName</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">fileName</span><span class="p">)</span> <span class="k">const</span>
<a name="line-78"></a><span class="p">{</span>
<a name="line-79"></a> <span class="n">QString</span> <span class="n">webFileName</span> <span class="o">=</span> <span class="n">fileName</span><span class="p">.</span><span class="n">toLower</span><span class="p">();</span>
<a name="line-80"></a>
<a name="line-81"></a> <span class="c1">// Remove potentially troublesome chars</span>
<a name="line-82"></a> <span class="n">webFileName</span> <span class="o">=</span> <span class="n">webFileName</span><span class="p">.</span><span class="n">replace</span><span class="p">(</span><span class="n">QRegExp</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;[^-0-9a-z]+&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-83"></a>
<a name="line-84"></a> <span class="k">return</span> <span class="n">webFileName</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="n">QImage</span> <span class="n">KmlExport</span><span class="o">::</span><span class="n">generateSquareThumbnail</span><span class="p">(</span><span class="k">const</span> <span class="n">QImage</span><span class="o">&amp;</span> <span class="n">fullImage</span><span class="p">,</span> <span class="kt">int</span> <span class="n">size</span><span class="p">)</span> <span class="k">const</span>
<a name="line-88"></a><span class="p">{</span>
<a name="line-89"></a> <span class="n">QImage</span> <span class="n">image</span> <span class="o">=</span> <span class="n">fullImage</span><span class="p">.</span><span class="n">scaled</span><span class="p">(</span><span class="n">size</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">KeepAspectRatioByExpanding</span><span class="p">);</span>
<a name="line-90"></a>
<a name="line-91"></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">==</span> <span class="n">size</span> <span class="o">&amp;&amp;</span> <span class="n">image</span><span class="p">.</span><span class="n">height</span><span class="p">()</span> <span class="o">==</span> <span class="n">size</span><span class="p">)</span>
<a name="line-92"></a> <span class="p">{</span>
<a name="line-93"></a> <span class="k">return</span> <span class="n">image</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">QPixmap</span> <span class="n">croppedPix</span><span class="p">(</span><span class="n">size</span><span class="p">,</span> <span class="n">size</span><span class="p">);</span>
<a name="line-97"></a> <span class="n">QPainter</span> <span class="nf">painter</span><span class="p">(</span><span class="o">&amp;</span><span class="n">croppedPix</span><span class="p">);</span>
<a name="line-98"></a>
<a name="line-99"></a> <span class="kt">int</span> <span class="n">sx</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">sy</span> <span class="o">=</span> <span class="mi">0</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">image</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">size</span><span class="p">)</span>
<a name="line-102"></a> <span class="p">{</span>
<a name="line-103"></a> <span class="n">sx</span> <span class="o">=</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">-</span> <span class="n">size</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">;</span>
<a name="line-104"></a> <span class="p">}</span>
<a name="line-105"></a> <span class="k">else</span>
<a name="line-106"></a> <span class="p">{</span>
<a name="line-107"></a> <span class="n">sy</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">-</span> <span class="n">size</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">;</span>
<a name="line-108"></a> <span class="p">}</span>
<a name="line-109"></a>
<a name="line-110"></a> <span class="n">painter</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">image</span><span class="p">,</span> <span class="n">sx</span><span class="p">,</span> <span class="n">sy</span><span class="p">,</span> <span class="n">size</span><span class="p">,</span> <span class="n">size</span><span class="p">);</span>
<a name="line-111"></a> <span class="n">painter</span><span class="p">.</span><span class="n">end</span><span class="p">();</span>
<a name="line-112"></a>
<a name="line-113"></a> <span class="k">return</span> <span class="n">croppedPix</span><span class="p">.</span><span class="n">toImage</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">QImage</span> <span class="n">KmlExport</span><span class="o">::</span><span class="n">generateBorderedThumbnail</span><span class="p">(</span><span class="k">const</span> <span class="n">QImage</span><span class="o">&amp;</span> <span class="n">fullImage</span><span class="p">,</span> <span class="kt">int</span> <span class="n">size</span><span class="p">)</span> <span class="k">const</span>
<a name="line-117"></a><span class="p">{</span>
<a name="line-118"></a> <span class="kt">int</span> <span class="n">image_border</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<a name="line-119"></a>
<a name="line-120"></a> <span class="c1">// getting an image minus the border</span>
<a name="line-121"></a> <span class="n">QImage</span> <span class="n">image</span> <span class="o">=</span> <span class="n">fullImage</span><span class="p">.</span><span class="n">scaled</span><span class="p">(</span><span class="n">size</span> <span class="o">-</span><span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">image_border</span><span class="p">),</span> <span class="n">size</span> <span class="o">-</span> <span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">image_border</span><span class="p">),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">KeepAspectRatioByExpanding</span><span class="p">);</span>
<a name="line-122"></a>
<a name="line-123"></a> <span class="n">QPixmap</span> <span class="nf">croppedPix</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">+</span> <span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">image_border</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">+</span> <span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">image_border</span><span class="p">));</span>
<a name="line-124"></a> <span class="n">QPainter</span> <span class="nf">painter</span><span class="p">(</span><span class="o">&amp;</span><span class="n">croppedPix</span><span class="p">);</span>
<a name="line-125"></a>
<a name="line-126"></a> <span class="n">QColor</span> <span class="nf">BrushColor</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">);</span>
<a name="line-127"></a> <span class="n">painter</span><span class="p">.</span><span class="n">fillRect</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">image</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">+</span> <span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">image_border</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">+</span> <span class="p">(</span><span class="mi">2</span><span class="o">*</span><span class="n">image_border</span><span class="p">),</span> <span class="n">BrushColor</span><span class="p">);</span>
<a name="line-128"></a>
<a name="line-129"></a> <span class="cm">/*! @todo add a corner to the thumbnail and a hotspot to the kml element */</span>
<a name="line-130"></a>
<a name="line-131"></a> <span class="n">painter</span><span class="p">.</span><span class="n">drawImage</span><span class="p">(</span><span class="n">image_border</span><span class="p">,</span> <span class="n">image_border</span><span class="p">,</span> <span class="n">image</span><span class="p">);</span>
<a name="line-132"></a> <span class="n">painter</span><span class="p">.</span><span class="n">end</span><span class="p">();</span>
<a name="line-133"></a>
<a name="line-134"></a> <span class="k">return</span> <span class="n">croppedPix</span><span class="p">.</span><span class="n">toImage</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="kt">void</span> <span class="n">KmlExport</span><span class="o">::</span><span class="n">generateImagesthumb</span><span class="p">(</span><span class="k">const</span> <span class="n">QUrl</span><span class="o">&amp;</span> <span class="n">imageURL</span><span class="p">,</span> <span class="n">QDomElement</span><span class="o">&amp;</span> <span class="n">kmlAlbum</span><span class="p">)</span>
<a name="line-138"></a><span class="p">{</span>
<a name="line-139"></a> <span class="n">DItemInfo</span> <span class="n">info</span><span class="p">(</span><span class="n">m_iface</span><span class="o">-&gt;</span><span class="n">itemInfo</span><span class="p">(</span><span class="n">imageURL</span><span class="p">));</span>
<a name="line-140"></a>
<a name="line-141"></a> <span class="c1">// Load image</span>
<a name="line-142"></a> <span class="n">QString</span> <span class="n">path</span> <span class="o">=</span> <span class="n">imageURL</span><span class="p">.</span><span class="n">toLocalFile</span><span class="p">();</span>
<a name="line-143"></a> <span class="n">QFile</span> <span class="nf">imageFile</span><span class="p">(</span><span class="n">path</span><span class="p">);</span>
<a name="line-144"></a>
<a name="line-145"></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-146"></a> <span class="p">{</span>
<a name="line-147"></a> <span class="n">logError</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Could not read image &#39;%1&#39;&quot;</span><span class="p">,</span> <span class="n">path</span><span class="p">));</span>
<a name="line-148"></a> <span class="k">return</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">QImageReader</span> <span class="n">reader</span><span class="p">(</span><span class="o">&amp;</span><span class="n">imageFile</span><span class="p">);</span>
<a name="line-152"></a> <span class="n">QString</span> <span class="n">imageFormat</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">reader</span><span class="p">.</span><span class="n">format</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="n">imageFormat</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-155"></a> <span class="p">{</span>
<a name="line-156"></a> <span class="n">logError</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Format of image &#39;%1&#39; is unknown&quot;</span><span class="p">,</span> <span class="n">path</span><span class="p">));</span>
<a name="line-157"></a> <span class="k">return</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">imageFile</span><span class="p">.</span><span class="n">close</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="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-163"></a> <span class="p">{</span>
<a name="line-164"></a> <span class="n">logError</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Could not read image &#39;%1&#39;&quot;</span><span class="p">,</span> <span class="n">path</span><span class="p">));</span>
<a name="line-165"></a> <span class="k">return</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="n">QByteArray</span> <span class="n">imageData</span> <span class="o">=</span> <span class="n">imageFile</span><span class="p">.</span><span class="n">readAll</span><span class="p">();</span>
<a name="line-169"></a> <span class="n">imageFile</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
<a name="line-170"></a> <span class="n">QImage</span> <span class="n">image</span><span class="p">;</span>
<a name="line-171"></a>
<a name="line-172"></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">loadFromData</span><span class="p">(</span><span class="n">imageData</span><span class="p">))</span>
<a name="line-173"></a> <span class="p">{</span>
<a name="line-174"></a> <span class="n">logError</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Error loading image &#39;%1&#39;&quot;</span><span class="p">,</span> <span class="n">path</span><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="c1">// Process images</span>
<a name="line-179"></a>
<a name="line-180"></a> <span class="k">if</span> <span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">orientation</span><span class="p">()</span> <span class="o">!=</span> <span class="n">DMetadata</span><span class="o">::</span><span class="n">ORIENTATION_UNSPECIFIED</span><span class="p">)</span>
<a name="line-181"></a> <span class="p">{</span>
<a name="line-182"></a> <span class="n">m_meta</span><span class="p">.</span><span class="n">rotateExifQImage</span><span class="p">(</span><span class="n">image</span><span class="p">,</span> <span class="p">(</span><span class="n">MetaEngine</span><span class="o">::</span><span class="n">ImageOrientation</span><span class="p">)</span><span class="n">info</span><span class="p">.</span><span class="n">orientation</span><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="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">m_size</span><span class="p">,</span> <span class="n">m_size</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">KeepAspectRatioByExpanding</span><span class="p">);</span>
<a name="line-186"></a> <span class="n">QImage</span> <span class="n">icon</span><span class="p">;</span>
<a name="line-187"></a>
<a name="line-188"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_optimize_googlemap</span><span class="p">)</span>
<a name="line-189"></a> <span class="p">{</span>
<a name="line-190"></a> <span class="n">icon</span> <span class="o">=</span> <span class="n">generateSquareThumbnail</span><span class="p">(</span><span class="n">image</span><span class="p">,</span><span class="n">m_googlemapSize</span><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="c1">// icon = image.smoothScale(m_iconSize, m_iconSize, QImage::ScaleMax);</span>
<a name="line-195"></a> <span class="n">icon</span> <span class="o">=</span> <span class="n">generateBorderedThumbnail</span><span class="p">(</span><span class="n">image</span><span class="p">,</span> <span class="n">m_iconSize</span><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="c1">// Save images</span>
<a name="line-199"></a>
<a name="line-200"></a> <span class="cm">/** @todo remove the extension of the file</span>
<a name="line-201"></a><span class="cm"> * it&#39;s appear with digikam but not with gwenview</span>
<a name="line-202"></a><span class="cm"> * which already seems to strip the extension</span>
<a name="line-203"></a><span class="cm"> */</span>
<a name="line-204"></a> <span class="n">QString</span> <span class="n">baseFileName</span> <span class="o">=</span> <span class="n">webifyFileName</span><span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">name</span><span class="p">());</span>
<a name="line-205"></a> <span class="c1">//baseFileName = mUniqueNameHelper.makeNameUnique(baseFileName);</span>
<a name="line-206"></a> <span class="n">QString</span> <span class="n">fullFileName</span><span class="p">;</span>
<a name="line-207"></a> <span class="n">fullFileName</span> <span class="o">=</span> <span class="n">baseFileName</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">imageFormat</span><span class="p">.</span><span class="n">toLower</span><span class="p">();</span>
<a name="line-208"></a><span class="hll"> <span class="n">QString</span> <span class="n">destPath</span> <span class="o">=</span> <span class="n">m_imageDir</span><span class="p">.</span><span class="n">filePath</span><span class="p">(</span><span class="n">fullFileName</span><span class="p">);</span><span class='error2'>&lt;--- Shadowed declaration</span>
</span><a name="line-209"></a>
<a name="line-210"></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">destPath</span><span class="p">,</span> <span class="n">imageFormat</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="mi">85</span><span class="p">))</span>
<a name="line-211"></a> <span class="p">{</span>
<a name="line-212"></a> <span class="c1">// if not able to save the image, it&#39;s pointless to create a placemark</span>
<a name="line-213"></a> <span class="n">logError</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Could not save image &#39;%1&#39; to &#39;%2&#39;&quot;</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="n">destPath</span><span class="p">));</span>
<a name="line-214"></a> <span class="p">}</span>
<a name="line-215"></a> <span class="k">else</span>
<a name="line-216"></a> <span class="p">{</span>
<a name="line-217"></a> <span class="n">logInfo</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Creation of picture &#39;%1&#39;&quot;</span><span class="p">,</span> <span class="n">fullFileName</span><span class="p">));</span>
<a name="line-218"></a>
<a name="line-219"></a> <span class="kt">double</span> <span class="n">alt</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">,</span> <span class="n">lat</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">,</span> <span class="n">lng</span> <span class="o">=</span> <span class="mf">0.0</span><span class="p">;</span>
<a name="line-220"></a>
<a name="line-221"></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>
<a name="line-222"></a> <span class="p">{</span>
<a name="line-223"></a> <span class="n">lat</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">latitude</span><span class="p">();</span>
<a name="line-224"></a> <span class="n">lng</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">longitude</span><span class="p">();</span>
<a name="line-225"></a> <span class="n">alt</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">altitude</span><span class="p">();</span>
<a name="line-226"></a> <span class="p">}</span>
<a name="line-227"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">m_meta</span><span class="p">.</span><span class="n">load</span><span class="p">(</span><span class="n">imageURL</span><span class="p">.</span><span class="n">toLocalFile</span><span class="p">()))</span>
<a name="line-228"></a> <span class="p">{</span>
<a name="line-229"></a> <span class="n">m_meta</span><span class="p">.</span><span class="n">getGPSInfo</span><span class="p">(</span><span class="n">alt</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-230"></a> <span class="p">}</span>
<a name="line-231"></a>
<a name="line-232"></a> <span class="n">QDomElement</span> <span class="n">kmlPlacemark</span> <span class="o">=</span> <span class="n">addKmlElement</span><span class="p">(</span><span class="n">kmlAlbum</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Placemark&quot;</span><span class="p">));</span>
<a name="line-233"></a> <span class="n">addKmlTextElement</span><span class="p">(</span><span class="n">kmlPlacemark</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">fullFileName</span><span class="p">);</span>
<a name="line-234"></a> <span class="c1">// location and altitude</span>
<a name="line-235"></a> <span class="n">QDomElement</span> <span class="n">kmlGeometry</span> <span class="o">=</span> <span class="n">addKmlElement</span><span class="p">(</span><span class="n">kmlPlacemark</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Point&quot;</span><span class="p">));</span>
<a name="line-236"></a>
<a name="line-237"></a> <span class="k">if</span> <span class="p">(</span><span class="n">alt</span><span class="p">)</span>
<a name="line-238"></a> <span class="p">{</span>
<a name="line-239"></a> <span class="n">addKmlTextElement</span><span class="p">(</span><span class="n">kmlGeometry</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;coordinates&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="s">&quot;%1,%2,%3 &quot;</span><span class="p">)</span>
<a name="line-240"></a> <span class="p">.</span><span class="n">arg</span><span class="p">(</span><span class="n">lng</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">8</span><span class="p">)</span>
<a name="line-241"></a> <span class="p">.</span><span class="n">arg</span><span class="p">(</span><span class="n">lat</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">8</span><span class="p">)</span>
<a name="line-242"></a> <span class="p">.</span><span class="n">arg</span><span class="p">(</span><span class="n">alt</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">8</span><span class="p">));</span>
<a name="line-243"></a> <span class="p">}</span>
<a name="line-244"></a> <span class="k">else</span>
<a name="line-245"></a> <span class="p">{</span>
<a name="line-246"></a> <span class="n">addKmlTextElement</span><span class="p">(</span><span class="n">kmlGeometry</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;coordinates&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="s">&quot;%1,%2 &quot;</span><span class="p">)</span>
<a name="line-247"></a> <span class="p">.</span><span class="n">arg</span><span class="p">(</span><span class="n">lng</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">8</span><span class="p">)</span>
<a name="line-248"></a> <span class="p">.</span><span class="n">arg</span><span class="p">(</span><span class="n">lat</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">8</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="k">if</span> <span class="p">(</span><span class="n">m_altitudeMode</span> <span class="o">==</span> <span class="mi">2</span><span class="p">)</span>
<a name="line-252"></a> <span class="p">{</span>
<a name="line-253"></a> <span class="n">addKmlTextElement</span><span class="p">(</span><span class="n">kmlGeometry</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;altitudeMode&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;absolute&quot;</span><span class="p">));</span>
<a name="line-254"></a> <span class="p">}</span>
<a name="line-255"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">m_altitudeMode</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span>
<a name="line-256"></a> <span class="p">{</span>
<a name="line-257"></a> <span class="n">addKmlTextElement</span><span class="p">(</span><span class="n">kmlGeometry</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;altitudeMode&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;relativeToGround&quot;</span><span class="p">));</span>
<a name="line-258"></a> <span class="p">}</span>
<a name="line-259"></a> <span class="k">else</span>
<a name="line-260"></a> <span class="p">{</span>
<a name="line-261"></a> <span class="n">addKmlTextElement</span><span class="p">(</span><span class="n">kmlGeometry</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;altitudeMode&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;clampToGround&quot;</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">addKmlTextElement</span><span class="p">(</span><span class="n">kmlGeometry</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;extrude&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;1&quot;</span><span class="p">));</span>
<a name="line-265"></a>
<a name="line-266"></a> <span class="c1">// we try to load exif value if any otherwise, try the application db</span>
<a name="line-267"></a>
<a name="line-268"></a> <span class="cm">/** we need to take the DateTimeOriginal</span>
<a name="line-269"></a><span class="cm"> * if we refer to https://www.exif.org/Exif2-2.PDF</span>
<a name="line-270"></a><span class="cm"> * (standard)DateTime: is The date and time of image creation. In this standard it is the date and time the file was changed</span>
<a name="line-271"></a><span class="cm"> * DateTimeOriginal: The date and time when the original image data was generated.</span>
<a name="line-272"></a><span class="cm"> * For a DSC the date and time the picture was taken are recorded.</span>
<a name="line-273"></a><span class="cm"> * DateTimeDigitized: The date and time when the image was stored as digital data.</span>
<a name="line-274"></a><span class="cm"> * So for:</span>
<a name="line-275"></a><span class="cm"> * - a DSC: the right time is the DateTimeDigitized which is also DateTimeOriginal</span>
<a name="line-276"></a><span class="cm"> * if the picture has been modified the (standard)DateTime should change.</span>
<a name="line-277"></a><span class="cm"> * - a scanned picture, the right time is the DateTimeOriginal which should also be the DateTime</span>
<a name="line-278"></a><span class="cm"> * the (standard)DateTime should be the same except if the picture is modified</span>
<a name="line-279"></a><span class="cm"> * - a panorama created from several pictures, the right time is the DateTimeOriginal (average of DateTimeOriginal actually)</span>
<a name="line-280"></a><span class="cm"> * The (standard)DateTime is the creation date of the panorama.</span>
<a name="line-281"></a><span class="cm"> * it&#39;s seems the time to take into account is the DateTimeOriginal.</span>
<a name="line-282"></a><span class="cm"> * but the MetadataProcessor::getItemDateTime() return the (standard)DateTime first</span>
<a name="line-283"></a><span class="cm"> * MetadataProcessor seems to take Original dateTime first so it should be alright now.</span>
<a name="line-284"></a><span class="cm"> */</span>
<a name="line-285"></a> <span class="n">QDateTime</span> <span class="n">datetime</span><span class="p">;</span>
<a name="line-286"></a>
<a name="line-287"></a> <span class="n">m_meta</span><span class="p">.</span><span class="n">getItemDateTime</span><span class="p">();</span>
<a name="line-288"></a>
<a name="line-289"></a> <span class="k">if</span> <span class="p">(</span><span class="n">datetime</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-290"></a> <span class="p">{</span>
<a name="line-291"></a> <span class="n">QDomElement</span> <span class="n">kmlTimeStamp</span> <span class="o">=</span> <span class="n">addKmlElement</span><span class="p">(</span><span class="n">kmlPlacemark</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;TimeStamp&quot;</span><span class="p">));</span>
<a name="line-292"></a> <span class="n">addKmlTextElement</span><span class="p">(</span><span class="n">kmlTimeStamp</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;when&quot;</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-ddThh:mm:ssZ&quot;</span><span class="p">)));</span>
<a name="line-293"></a> <span class="p">}</span>
<a name="line-294"></a> <span class="k">else</span>
<a name="line-295"></a> <span class="p">{</span>
<a name="line-296"></a> <span class="n">QDomElement</span> <span class="n">kmlTimeStamp</span> <span class="o">=</span> <span class="n">addKmlElement</span><span class="p">(</span><span class="n">kmlPlacemark</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;TimeStamp&quot;</span><span class="p">));</span>
<a name="line-297"></a> <span class="n">addKmlTextElement</span><span class="p">(</span><span class="n">kmlTimeStamp</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;when&quot;</span><span class="p">),</span> <span class="p">(</span><span class="n">info</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-ddThh:mm:ssZ&quot;</span><span class="p">)));</span>
<a name="line-298"></a> <span class="p">}</span>
<a name="line-299"></a>
<a name="line-300"></a> <span class="n">QString</span> <span class="n">my_description</span><span class="p">;</span>
<a name="line-301"></a>
<a name="line-302"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_optimize_googlemap</span><span class="p">)</span>
<a name="line-303"></a> <span class="p">{</span>
<a name="line-304"></a> <span class="n">my_description</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&lt;img src=</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">m_UrlDestDir</span> <span class="o">+</span> <span class="n">m_imageDirBasename</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">fullFileName</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">&gt;&quot;</span><span class="p">);</span>
<a name="line-305"></a> <span class="p">}</span>
<a name="line-306"></a> <span class="k">else</span>
<a name="line-307"></a> <span class="p">{</span>
<a name="line-308"></a> <span class="n">my_description</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&lt;img src=</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">m_imageDirBasename</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">fullFileName</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">&gt;&quot;</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="n">my_description</span> <span class="o">+=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;&lt;br/&gt;&quot;</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="p">;</span>
<a name="line-312"></a>
<a name="line-313"></a> <span class="n">addKmlTextElement</span><span class="p">(</span><span class="n">kmlPlacemark</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;description&quot;</span><span class="p">),</span> <span class="n">my_description</span><span class="p">);</span>
<a name="line-314"></a> <span class="n">logInfo</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Creation of placemark &#39;%1&#39;&quot;</span><span class="p">,</span> <span class="n">fullFileName</span><span class="p">));</span>
<a name="line-315"></a>
<a name="line-316"></a> <span class="c1">// Save icon</span>
<a name="line-317"></a> <span class="n">QString</span> <span class="n">iconFileName</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;thumb_&quot;</span><span class="p">)</span> <span class="o">+</span> <span class="n">baseFileName</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">imageFormat</span><span class="p">.</span><span class="n">toLower</span><span class="p">();</span>
<a name="line-318"></a><span class="hll"> <span class="n">QString</span> <span class="n">destPath</span> <span class="o">=</span> <span class="n">m_imageDir</span><span class="p">.</span><span class="n">filePath</span><span class="p">(</span><span class="n">iconFileName</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
</span><a name="line-319"></a>
<a name="line-320"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">icon</span><span class="p">.</span><span class="n">save</span><span class="p">(</span><span class="n">destPath</span><span class="p">,</span> <span class="n">imageFormat</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="mi">85</span><span class="p">))</span>
<a name="line-321"></a> <span class="p">{</span>
<a name="line-322"></a> <span class="n">logWarning</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Could not save icon for image &#39;%1&#39; to &#39;%2&#39;&quot;</span><span class="p">,</span> <span class="n">path</span><span class="p">,</span> <span class="n">destPath</span><span class="p">));</span>
<a name="line-323"></a> <span class="p">}</span>
<a name="line-324"></a> <span class="k">else</span>
<a name="line-325"></a> <span class="p">{</span>
<a name="line-326"></a> <span class="n">logInfo</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Creation of icon &#39;%1&#39;&quot;</span><span class="p">,</span> <span class="n">iconFileName</span><span class="p">));</span>
<a name="line-327"></a> <span class="c1">// style et icon</span>
<a name="line-328"></a> <span class="n">QDomElement</span> <span class="n">kmlStyle</span> <span class="o">=</span> <span class="n">addKmlElement</span><span class="p">(</span><span class="n">kmlPlacemark</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Style&quot;</span><span class="p">));</span>
<a name="line-329"></a> <span class="n">QDomElement</span> <span class="n">kmlIconStyle</span> <span class="o">=</span> <span class="n">addKmlElement</span><span class="p">(</span><span class="n">kmlStyle</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;IconStyle&quot;</span><span class="p">));</span>
<a name="line-330"></a> <span class="n">QDomElement</span> <span class="n">kmlIcon</span> <span class="o">=</span> <span class="n">addKmlElement</span><span class="p">(</span><span class="n">kmlIconStyle</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Icon&quot;</span><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">m_optimize_googlemap</span><span class="p">)</span>
<a name="line-333"></a> <span class="p">{</span>
<a name="line-334"></a> <span class="n">addKmlTextElement</span><span class="p">(</span><span class="n">kmlIcon</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">m_UrlDestDir</span> <span class="o">+</span> <span class="n">m_imageDirBasename</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">iconFileName</span><span class="p">);</span>
<a name="line-335"></a> <span class="p">}</span>
<a name="line-336"></a> <span class="k">else</span>
<a name="line-337"></a> <span class="p">{</span>
<a name="line-338"></a> <span class="n">addKmlTextElement</span><span class="p">(</span><span class="n">kmlIcon</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">m_imageDirBasename</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">iconFileName</span><span class="p">);</span>
<a name="line-339"></a> <span class="p">}</span>
<a name="line-340"></a>
<a name="line-341"></a> <span class="n">QDomElement</span> <span class="n">kmlBallonStyle</span> <span class="o">=</span> <span class="n">addKmlElement</span><span class="p">(</span><span class="n">kmlStyle</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;BalloonStyle&quot;</span><span class="p">));</span>
<a name="line-342"></a> <span class="n">addKmlTextElement</span><span class="p">(</span><span class="n">kmlBallonStyle</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;text&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;$[description]&quot;</span><span class="p">));</span>
<a name="line-343"></a> <span class="p">}</span>
<a name="line-344"></a> <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="kt">void</span> <span class="n">KmlExport</span><span class="o">::</span><span class="n">addTrack</span><span class="p">(</span><span class="n">QDomElement</span><span class="o">&amp;</span> <span class="n">kmlAlbum</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">m_GPXFile</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-350"></a> <span class="p">{</span>
<a name="line-351"></a> <span class="n">logWarning</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;No GPX file chosen.&quot;</span><span class="p">));</span>
<a name="line-352"></a> <span class="k">return</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">m_gpxParser</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-356"></a> <span class="kt">bool</span> <span class="n">ret</span> <span class="o">=</span> <span class="n">m_gpxParser</span><span class="p">.</span><span class="n">loadGPXFile</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">m_GPXFile</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="o">!</span><span class="n">ret</span><span class="p">)</span>
<a name="line-359"></a> <span class="p">{</span>
<a name="line-360"></a> <span class="n">logError</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Cannot parse %1 GPX file.&quot;</span><span class="p">,</span> <span class="n">m_GPXFile</span><span class="p">));</span>
<a name="line-361"></a> <span class="k">return</span><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">m_gpxParser</span><span class="p">.</span><span class="n">numPoints</span><span class="p">()</span> <span class="o">&lt;=</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-365"></a> <span class="p">{</span>
<a name="line-366"></a> <span class="n">logError</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;The %1 GPX file do not have a date-time track to use.&quot;</span><span class="p">,</span>
<a name="line-367"></a> <span class="n">m_GPXFile</span><span class="p">));</span>
<a name="line-368"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-369"></a> <span class="p">}</span>
<a name="line-370"></a>
<a name="line-371"></a> <span class="c1">// create a folder that will contain tracks and points</span>
<a name="line-372"></a> <span class="n">QDomElement</span> <span class="n">kmlFolder</span> <span class="o">=</span> <span class="n">addKmlElement</span><span class="p">(</span><span class="n">kmlAlbum</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>
<a name="line-373"></a> <span class="n">addKmlTextElement</span><span class="p">(</span><span class="n">kmlFolder</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">i18n</span><span class="p">(</span><span class="s">&quot;Tracks&quot;</span><span class="p">));</span>
<a name="line-374"></a>
<a name="line-375"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_optimize_googlemap</span><span class="p">)</span>
<a name="line-376"></a> <span class="p">{</span>
<a name="line-377"></a> <span class="c1">// style of points and track</span>
<a name="line-378"></a> <span class="n">QDomElement</span> <span class="n">kmlTrackStyle</span> <span class="o">=</span> <span class="n">addKmlElement</span><span class="p">(</span><span class="n">kmlAlbum</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Style&quot;</span><span class="p">));</span>
<a name="line-379"></a> <span class="n">kmlTrackStyle</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;id&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;track&quot;</span><span class="p">));</span>
<a name="line-380"></a> <span class="n">QDomElement</span> <span class="n">kmlIconStyle</span> <span class="o">=</span> <span class="n">addKmlElement</span><span class="p">(</span><span class="n">kmlTrackStyle</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;IconStyle&quot;</span><span class="p">));</span>
<a name="line-381"></a> <span class="n">QDomElement</span> <span class="n">kmlIcon</span> <span class="o">=</span> <span class="n">addKmlElement</span><span class="p">(</span><span class="n">kmlIconStyle</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Icon&quot;</span><span class="p">));</span>
<a name="line-382"></a> <span class="c1">//! FIXME is there a way to be sure of the location of the icon?</span>
<a name="line-383"></a> <span class="n">addKmlTextElement</span><span class="p">(</span><span class="n">kmlIcon</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">QLatin1String</span><span class="p">(</span><span class="s">&quot;http://maps.google.com/mapfiles/kml/pal4/icon60.png&quot;</span><span class="p">));</span>
<a name="line-384"></a>
<a name="line-385"></a> <span class="n">m_gpxParser</span><span class="p">.</span><span class="n">CreateTrackPoints</span><span class="p">(</span><span class="n">kmlFolder</span><span class="p">,</span> <span class="o">*</span><span class="n">m_kmlDocument</span><span class="p">,</span> <span class="n">m_TimeZone</span> <span class="o">-</span> <span class="mi">12</span><span class="p">,</span> <span class="n">m_GPXAltitudeMode</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="c1">// linetrack style</span>
<a name="line-389"></a> <span class="n">QDomElement</span> <span class="n">kmlLineTrackStyle</span> <span class="o">=</span> <span class="n">addKmlElement</span><span class="p">(</span><span class="n">kmlAlbum</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Style&quot;</span><span class="p">));</span>
<a name="line-390"></a> <span class="n">kmlLineTrackStyle</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;id&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;linetrack&quot;</span><span class="p">));</span>
<a name="line-391"></a> <span class="n">QDomElement</span> <span class="n">kmlLineStyle</span> <span class="o">=</span> <span class="n">addKmlElement</span><span class="p">(</span><span class="n">kmlLineTrackStyle</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;LineStyle&quot;</span><span class="p">));</span>
<a name="line-392"></a>
<a name="line-393"></a> <span class="c1">// the KML color is not #RRGGBB but AABBGGRR</span>
<a name="line-394"></a> <span class="n">QString</span> <span class="n">KMLColorValue</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;%1%2%3%4&quot;</span><span class="p">)</span>
<a name="line-395"></a> <span class="p">.</span><span class="n">arg</span><span class="p">((</span><span class="kt">int</span><span class="p">)</span><span class="n">m_GPXOpacity</span> <span class="o">*</span> <span class="mi">256</span> <span class="o">/</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">16</span><span class="p">)</span>
<a name="line-396"></a> <span class="p">.</span><span class="n">arg</span><span class="p">((</span><span class="o">&amp;</span><span class="n">m_GPXColor</span><span class="p">)</span><span class="o">-&gt;</span><span class="n">blue</span><span class="p">(),</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">16</span><span class="p">)</span>
<a name="line-397"></a> <span class="p">.</span><span class="n">arg</span><span class="p">((</span><span class="o">&amp;</span><span class="n">m_GPXColor</span><span class="p">)</span><span class="o">-&gt;</span><span class="n">green</span><span class="p">(),</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">16</span><span class="p">)</span>
<a name="line-398"></a> <span class="p">.</span><span class="n">arg</span><span class="p">((</span><span class="o">&amp;</span><span class="n">m_GPXColor</span><span class="p">)</span><span class="o">-&gt;</span><span class="n">red</span><span class="p">(),</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">16</span><span class="p">);</span>
<a name="line-399"></a> <span class="n">addKmlTextElement</span><span class="p">(</span><span class="n">kmlLineStyle</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;color&quot;</span><span class="p">),</span> <span class="n">KMLColorValue</span><span class="p">);</span>
<a name="line-400"></a> <span class="n">addKmlTextElement</span><span class="p">(</span><span class="n">kmlLineStyle</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;width&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="s">&quot;%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">m_LineWidth</span><span class="p">));</span>
<a name="line-401"></a>
<a name="line-402"></a> <span class="n">m_gpxParser</span><span class="p">.</span><span class="n">CreateTrackLine</span><span class="p">(</span><span class="n">kmlAlbum</span><span class="p">,</span> <span class="o">*</span><span class="n">m_kmlDocument</span><span class="p">,</span> <span class="n">m_GPXAltitudeMode</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="kt">void</span> <span class="n">KmlExport</span><span class="o">::</span><span class="n">generate</span><span class="p">()</span>
<a name="line-406"></a><span class="p">{</span>
<a name="line-407"></a> <span class="n">getConfig</span><span class="p">();</span>
<a name="line-408"></a> <span class="n">m_logData</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-409"></a>
<a name="line-410"></a> <span class="c1">//! @todo perform a test here before continuing.</span>
<a name="line-411"></a> <span class="n">QDir</span><span class="p">().</span><span class="n">mkpath</span><span class="p">(</span><span class="n">m_tempDestDir</span><span class="p">.</span><span class="n">absolutePath</span><span class="p">());</span>
<a name="line-412"></a> <span class="n">QDir</span><span class="p">().</span><span class="n">mkpath</span><span class="p">(</span><span class="n">m_imageDir</span><span class="p">.</span><span class="n">absolutePath</span><span class="p">());</span>
<a name="line-413"></a>
<a name="line-414"></a> <span class="c1">// create the document, and it&#39;s root</span>
<a name="line-415"></a> <span class="n">m_kmlDocument</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QDomDocument</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-416"></a> <span class="n">QDomImplementation</span> <span class="n">impl</span><span class="p">;</span>
<a name="line-417"></a> <span class="n">QDomProcessingInstruction</span> <span class="n">instr</span> <span class="o">=</span> <span class="n">m_kmlDocument</span><span class="o">-&gt;</span><span class="n">createProcessingInstruction</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;xml&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;version=</span><span class="se">\&quot;</span><span class="s">1.0</span><span class="se">\&quot;</span><span class="s"> encoding=</span><span class="se">\&quot;</span><span class="s">UTF-8</span><span class="se">\&quot;</span><span class="s">&quot;</span><span class="p">));</span>
<a name="line-418"></a> <span class="n">m_kmlDocument</span><span class="o">-&gt;</span><span class="n">appendChild</span><span class="p">(</span><span class="n">instr</span><span class="p">);</span>
<a name="line-419"></a> <span class="n">QDomElement</span> <span class="n">kmlRoot</span> <span class="o">=</span> <span class="n">m_kmlDocument</span><span class="o">-&gt;</span><span class="n">createElementNS</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;http://www.opengis.net/kml/2.2&quot;</span><span class="p">),</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;kml&quot;</span><span class="p">));</span>
<a name="line-420"></a> <span class="n">m_kmlDocument</span><span class="o">-&gt;</span><span class="n">appendChild</span><span class="p">(</span><span class="n">kmlRoot</span><span class="p">);</span>
<a name="line-421"></a>
<a name="line-422"></a> <span class="n">QDomElement</span> <span class="n">kmlAlbum</span> <span class="o">=</span> <span class="n">addKmlElement</span><span class="p">(</span><span class="n">kmlRoot</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>
<a name="line-423"></a> <span class="n">QDomElement</span> <span class="n">kmlName</span> <span class="o">=</span> <span class="n">addKmlTextElement</span><span class="p">(</span><span class="n">kmlAlbum</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">m_KMLFileName</span><span class="p">);</span>
<a name="line-424"></a> <span class="n">QDomElement</span> <span class="n">kmlDescription</span> <span class="o">=</span> <span class="n">addKmlHtmlElement</span><span class="p">(</span><span class="n">kmlAlbum</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;description&quot;</span><span class="p">),</span>
<a name="line-425"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Created with Geolocation Editor from &lt;a href=</span><span class="se">\&quot;</span><span class="s">https://www.digikam.org/</span><span class="se">\&quot;</span><span class="s">&gt;digiKam&lt;/a&gt;&quot;</span><span class="p">));</span>
<a name="line-426"></a>
<a name="line-427"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_GPXtracks</span><span class="p">)</span>
<a name="line-428"></a> <span class="p">{</span>
<a name="line-429"></a> <span class="n">addTrack</span><span class="p">(</span><span class="n">kmlAlbum</span><span class="p">);</span>
<a name="line-430"></a> <span class="p">}</span>
<a name="line-431"></a>
<a name="line-432"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="o">&gt;</span> <span class="n">images</span> <span class="o">=</span> <span class="n">m_urls</span><span class="p">;</span>
<a name="line-433"></a> <span class="kt">int</span> <span class="n">pos</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<a name="line-434"></a>
<a name="line-435"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="o">&gt;::</span><span class="n">ConstIterator</span> <span class="n">imagesEnd</span> <span class="p">(</span><span class="n">images</span><span class="p">.</span><span class="n">constEnd</span><span class="p">());</span>
<a name="line-436"></a>
<a name="line-437"></a> <span class="k">for</span> <span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="o">&gt;::</span><span class="n">ConstIterator</span> <span class="n">selIt</span> <span class="o">=</span> <span class="n">images</span><span class="p">.</span><span class="n">constBegin</span><span class="p">()</span> <span class="p">;</span>
<a name="line-438"></a> <span class="n">selIt</span> <span class="o">!=</span> <span class="n">imagesEnd</span> <span class="p">;</span> <span class="o">++</span><span class="n">selIt</span><span class="p">,</span> <span class="o">++</span><span class="n">pos</span><span class="p">)</span>
<a name="line-439"></a> <span class="p">{</span>
<a name="line-440"></a> <span class="kt">double</span> <span class="n">alt</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-441"></a> <span class="n">QUrl</span> <span class="n">url</span> <span class="o">=</span> <span class="o">*</span><span class="n">selIt</span><span class="p">;</span>
<a name="line-442"></a> <span class="n">DItemInfo</span> <span class="nf">info</span><span class="p">(</span><span class="n">m_iface</span><span class="o">-&gt;</span><span class="n">itemInfo</span><span class="p">(</span><span class="n">url</span><span class="p">));</span>
<a name="line-443"></a> <span class="kt">bool</span> <span class="n">hasGPSInfo</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">hasGeolocationInfo</span><span class="p">();</span>
<a name="line-444"></a>
<a name="line-445"></a> <span class="k">if</span> <span class="p">(</span><span class="n">hasGPSInfo</span><span class="p">)</span>
<a name="line-446"></a> <span class="p">{</span>
<a name="line-447"></a> <span class="n">lat</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">latitude</span><span class="p">();</span>
<a name="line-448"></a> <span class="n">lng</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">longitude</span><span class="p">();</span>
<a name="line-449"></a> <span class="n">alt</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">altitude</span><span class="p">();</span>
<a name="line-450"></a> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">lat</span><span class="p">;</span> <span class="c1">// Remove clang warnings.</span>
<a name="line-451"></a> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">lng</span><span class="p">;</span> <span class="c1">// Remove clang warnings.</span>
<a name="line-452"></a> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">alt</span><span class="p">;</span> <span class="c1">// Remove clang warnings.</span>
<a name="line-453"></a> <span class="p">}</span>
<a name="line-454"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">m_meta</span><span class="p">.</span><span class="n">load</span><span class="p">(</span><span class="n">url</span><span class="p">.</span><span class="n">toLocalFile</span><span class="p">()))</span>
<a name="line-455"></a> <span class="p">{</span>
<a name="line-456"></a> <span class="n">hasGPSInfo</span> <span class="o">=</span> <span class="n">m_meta</span><span class="p">.</span><span class="n">getGPSInfo</span><span class="p">(</span><span class="n">alt</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-457"></a> <span class="p">}</span>
<a name="line-458"></a>
<a name="line-459"></a> <span class="k">if</span> <span class="p">(</span><span class="n">hasGPSInfo</span><span class="p">)</span>
<a name="line-460"></a> <span class="p">{</span>
<a name="line-461"></a> <span class="c1">// generation de l&#39;image et de l&#39;icone</span>
<a name="line-462"></a> <span class="n">generateImagesthumb</span><span class="p">(</span><span class="n">url</span><span class="p">,</span> <span class="n">kmlAlbum</span><span class="p">);</span>
<a name="line-463"></a> <span class="p">}</span>
<a name="line-464"></a> <span class="k">else</span>
<a name="line-465"></a> <span class="p">{</span>
<a name="line-466"></a> <span class="n">logWarning</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;No position data for &#39;%1&#39;&quot;</span><span class="p">,</span> <span class="n">info</span><span class="p">.</span><span class="n">name</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="n">emit</span> <span class="n">signalProgressChanged</span><span class="p">(</span><span class="n">pos</span><span class="p">);</span>
<a name="line-470"></a> <span class="n">QApplication</span><span class="o">::</span><span class="n">processEvents</span><span class="p">();</span>
<a name="line-471"></a> <span class="p">}</span>
<a name="line-472"></a>
<a name="line-473"></a> <span class="cm">/** @todo change to kml or kmz if compressed */</span>
<a name="line-474"></a> <span class="n">QFile</span> <span class="n">file</span><span class="p">(</span><span class="n">m_tempDestDir</span><span class="p">.</span><span class="n">filePath</span><span class="p">(</span><span class="n">m_KMLFileName</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;.kml&quot;</span><span class="p">)));</span>
<a name="line-475"></a>
<a name="line-476"></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">WriteOnly</span><span class="p">))</span>
<a name="line-477"></a> <span class="p">{</span>
<a name="line-478"></a> <span class="n">logError</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Cannot open file for writing&quot;</span><span class="p">));</span>
<a name="line-479"></a> <span class="k">delete</span> <span class="n">m_kmlDocument</span><span class="p">;</span>
<a name="line-480"></a> <span class="n">m_kmlDocument</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-481"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-482"></a> <span class="p">}</span>
<a name="line-483"></a>
<a name="line-484"></a> <span class="n">QTextStream</span> <span class="n">stream</span><span class="p">(</span><span class="o">&amp;</span><span class="n">file</span><span class="p">);</span> <span class="c1">// we will serialize the data into the file</span>
<a name="line-485"></a> <span class="n">stream</span> <span class="o">&lt;&lt;</span> <span class="n">m_kmlDocument</span><span class="o">-&gt;</span><span class="n">toString</span><span class="p">();</span>
<a name="line-486"></a> <span class="n">file</span><span class="p">.</span><span class="n">close</span><span class="p">();</span>
<a name="line-487"></a>
<a name="line-488"></a> <span class="k">delete</span> <span class="n">m_kmlDocument</span><span class="p">;</span>
<a name="line-489"></a> <span class="n">m_kmlDocument</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-490"></a>
<a name="line-491"></a> <span class="n">logInfo</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Move %1 to final directory %2&quot;</span><span class="p">,</span> <span class="n">m_tempDestDir</span><span class="p">.</span><span class="n">absolutePath</span><span class="p">(),</span> <span class="n">m_baseDestDir</span><span class="p">));</span>
<a name="line-492"></a>
<a name="line-493"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">copyDir</span><span class="p">(</span><span class="n">m_tempDestDir</span><span class="p">.</span><span class="n">absolutePath</span><span class="p">(),</span> <span class="n">m_baseDestDir</span><span class="p">))</span>
<a name="line-494"></a> <span class="p">{</span>
<a name="line-495"></a> <span class="n">logWarning</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Cannot move data to destination directory&quot;</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="n">QDir</span><span class="p">(</span><span class="n">m_tempDestDir</span><span class="p">.</span><span class="n">absolutePath</span><span class="p">()).</span><span class="n">removeRecursively</span><span class="p">();</span>
<a name="line-499"></a>
<a name="line-500"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_logData</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-501"></a> <span class="p">{</span>
<a name="line-502"></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">Information</span><span class="p">,</span>
<a name="line-503"></a> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">activeWindow</span><span class="p">(),</span>
<a name="line-504"></a> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">applicationName</span><span class="p">(),</span>
<a name="line-505"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Report below have been generated while KML file processing:&quot;</span><span class="p">),</span>
<a name="line-506"></a> <span class="n">m_logData</span><span class="p">);</span>
<a name="line-507"></a> <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="kt">bool</span> <span class="n">KmlExport</span><span class="o">::</span><span class="n">copyDir</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">srcFilePath</span><span class="p">,</span> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">dstFilePath</span><span class="p">)</span>
<a name="line-511"></a><span class="p">{</span>
<a name="line-512"></a> <span class="k">if</span> <span class="p">(</span><span class="n">QFileInfo</span><span class="p">(</span><span class="n">srcFilePath</span><span class="p">).</span><span class="n">isDir</span><span class="p">())</span>
<a name="line-513"></a> <span class="p">{</span>
<a name="line-514"></a> <span class="n">QDir</span> <span class="n">srcDir</span><span class="p">(</span><span class="n">srcFilePath</span><span class="p">);</span>
<a name="line-515"></a> <span class="n">QDir</span> <span class="nf">dstDir</span><span class="p">(</span><span class="n">dstFilePath</span><span class="p">);</span>
<a name="line-516"></a>
<a name="line-517"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">QDir</span><span class="p">().</span><span class="n">mkpath</span><span class="p">(</span><span class="n">dstDir</span><span class="p">.</span><span class="n">absolutePath</span><span class="p">()))</span>
<a name="line-518"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-519"></a>
<a name="line-520"></a> <span class="n">QStringList</span> <span class="n">files</span> <span class="o">=</span> <span class="n">srcDir</span><span class="p">.</span><span class="n">entryList</span><span class="p">(</span><span class="n">QDir</span><span class="o">::</span><span class="n">Files</span> <span class="o">|</span> <span class="n">QDir</span><span class="o">::</span><span class="n">Dirs</span> <span class="o">|</span> <span class="n">QDir</span><span class="o">::</span><span class="n">NoDotAndDotDot</span><span class="p">);</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">QString</span><span class="o">&amp;</span> <span class="n">file</span><span class="p">,</span> <span class="n">files</span><span class="p">)</span>
<a name="line-523"></a> <span class="p">{</span>
<a name="line-524"></a> <span class="k">const</span> <span class="n">QString</span> <span class="n">newSrcFilePath</span> <span class="o">=</span> <span class="n">srcDir</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">file</span><span class="p">;</span>
<a name="line-525"></a> <span class="k">const</span> <span class="n">QString</span> <span class="n">newDstFilePath</span> <span class="o">=</span> <span class="n">dstDir</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">file</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="o">!</span><span class="n">copyDir</span><span class="p">(</span><span class="n">newSrcFilePath</span><span class="p">,</span> <span class="n">newDstFilePath</span><span class="p">))</span>
<a name="line-528"></a> <span class="k">return</span> <span class="nb">false</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> <span class="k">else</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">srcFilePath</span> <span class="o">!=</span> <span class="n">dstFilePath</span> <span class="o">&amp;&amp;</span> <span class="n">QFile</span><span class="o">::</span><span class="n">exists</span><span class="p">(</span><span class="n">srcFilePath</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="n">QFile</span><span class="o">::</span><span class="n">exists</span><span class="p">(</span><span class="n">dstFilePath</span><span class="p">))</span>
<a name="line-534"></a> <span class="p">{</span>
<a name="line-535"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">QFile</span><span class="o">::</span><span class="n">remove</span><span class="p">(</span><span class="n">dstFilePath</span><span class="p">))</span>
<a name="line-536"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-537"></a> <span class="p">}</span>
<a name="line-538"></a>
<a name="line-539"></a> <span class="k">if</span> <span class="p">(</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">srcFilePath</span><span class="p">,</span> <span class="n">dstFilePath</span><span class="p">))</span>
<a name="line-540"></a> <span class="k">return</span> <span class="nb">false</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="k">return</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-544"></a><span class="p">}</span>
<a name="line-545"></a>
<a name="line-546"></a><span class="kt">void</span> <span class="n">KmlExport</span><span class="o">::</span><span class="n">getConfig</span><span class="p">()</span>
<a name="line-547"></a><span class="p">{</span>
<a name="line-548"></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-549"></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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;KMLExport Settings&quot;</span><span class="p">));</span>
<a name="line-550"></a>
<a name="line-551"></a> <span class="n">m_localTarget</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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;localTarget&quot;</span><span class="p">),</span> <span class="nb">true</span><span class="p">);</span>
<a name="line-552"></a> <span class="n">m_optimize_googlemap</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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;optimize_googlemap&quot;</span><span class="p">),</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-553"></a> <span class="n">m_iconSize</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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;iconSize&quot;</span><span class="p">),</span> <span class="mi">33</span><span class="p">);</span>
<a name="line-554"></a> <span class="c1">//googlemapSize = group.readNumEntry(QLatin1String(&quot;googlemapSize&quot;));</span>
<a name="line-555"></a> <span class="n">m_size</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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;size&quot;</span><span class="p">),</span> <span class="mi">320</span><span class="p">);</span>
<a name="line-556"></a>
<a name="line-557"></a> <span class="c1">// UrlDestDir have to have the trailing</span>
<a name="line-558"></a> <span class="n">m_baseDestDir</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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;baseDestDir&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="s">&quot;/tmp/&quot;</span><span class="p">));</span>
<a name="line-559"></a> <span class="n">m_UrlDestDir</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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;UrlDestDir&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="s">&quot;http://www.example.com/&quot;</span><span class="p">));</span>
<a name="line-560"></a> <span class="n">m_KMLFileName</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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;KMLFileName&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="s">&quot;kmldocument&quot;</span><span class="p">));</span>
<a name="line-561"></a> <span class="n">m_altitudeMode</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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Altitude Mode&quot;</span><span class="p">),</span> <span class="mi">0</span><span class="p">);</span>
<a name="line-562"></a>
<a name="line-563"></a> <span class="n">m_GPXtracks</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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;UseGPXTracks&quot;</span><span class="p">),</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-564"></a> <span class="n">m_GPXFile</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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;GPXFile&quot;</span><span class="p">),</span> <span class="n">QString</span><span class="p">());</span>
<a name="line-565"></a> <span class="n">m_TimeZone</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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Time Zone&quot;</span><span class="p">),</span> <span class="mi">12</span><span class="p">);</span>
<a name="line-566"></a> <span class="n">m_LineWidth</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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Line Width&quot;</span><span class="p">),</span> <span class="mi">4</span><span class="p">);</span>
<a name="line-567"></a> <span class="n">m_GPXColor</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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Track Color&quot;</span><span class="p">),</span> <span class="n">QColor</span><span class="p">(</span><span class="s">&quot;#17eeee&quot;</span><span class="p">));</span>
<a name="line-568"></a> <span class="n">m_GPXOpacity</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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Track Opacity&quot;</span><span class="p">),</span> <span class="mi">64</span><span class="p">);</span>
<a name="line-569"></a> <span class="n">m_GPXAltitudeMode</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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;GPX Altitude Mode&quot;</span><span class="p">),</span> <span class="mi">0</span><span class="p">);</span>
<a name="line-570"></a>
<a name="line-571"></a> <span class="n">m_tempDestDir</span> <span class="o">=</span> <span class="n">QDir</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">filePath</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;digiKam-kmlexport-%1&quot;</span><span class="p">).</span><span class="n">arg</span><span class="p">(</span><span class="n">qApp</span><span class="o">-&gt;</span><span class="n">applicationPid</span><span class="p">())));</span>
<a name="line-572"></a>
<a name="line-573"></a> <span class="n">m_imageDirBasename</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;images&quot;</span><span class="p">);</span>
<a name="line-574"></a> <span class="n">m_imageDir</span> <span class="o">=</span> <span class="n">QDir</span><span class="p">(</span><span class="n">m_tempDestDir</span><span class="p">.</span><span class="n">filePath</span><span class="p">(</span><span class="n">m_imageDirBasename</span><span class="p">));</span>
<a name="line-575"></a>
<a name="line-576"></a> <span class="n">m_googlemapSize</span> <span class="o">=</span> <span class="mi">32</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="kt">void</span> <span class="n">KmlExport</span><span class="o">::</span><span class="n">logInfo</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-580"></a><span class="p">{</span>
<a name="line-581"></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">msg</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">KmlExport</span><span class="o">::</span><span class="n">logError</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-585"></a><span class="p">{</span>
<a name="line-586"></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">msg</span><span class="p">;</span>
<a name="line-587"></a> <span class="n">m_logData</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">msg</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">KmlExport</span><span class="o">::</span><span class="n">logWarning</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-591"></a><span class="p">{</span>
<a name="line-592"></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">msg</span><span class="p">;</span>
<a name="line-593"></a> <span class="n">m_logData</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">msg</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">QDomElement</span> <span class="n">KmlExport</span><span class="o">::</span><span class="n">addKmlElement</span><span class="p">(</span><span class="n">QDomElement</span><span class="o">&amp;</span> <span class="n">target</span><span class="p">,</span>
<a name="line-597"></a> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">tag</span><span class="p">)</span> <span class="k">const</span>
<a name="line-598"></a><span class="p">{</span>
<a name="line-599"></a> <span class="n">QDomElement</span> <span class="n">kmlElement</span> <span class="o">=</span> <span class="n">m_kmlDocument</span><span class="o">-&gt;</span><span class="n">createElement</span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>
<a name="line-600"></a> <span class="n">target</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">kmlElement</span><span class="p">);</span>
<a name="line-601"></a>
<a name="line-602"></a> <span class="k">return</span> <span class="n">kmlElement</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">QDomElement</span> <span class="n">KmlExport</span><span class="o">::</span><span class="n">addKmlTextElement</span><span class="p">(</span><span class="n">QDomElement</span><span class="o">&amp;</span> <span class="n">target</span><span class="p">,</span>
<a name="line-606"></a> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">tag</span><span class="p">,</span>
<a name="line-607"></a> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">text</span><span class="p">)</span> <span class="k">const</span>
<a name="line-608"></a><span class="p">{</span>
<a name="line-609"></a> <span class="n">QDomElement</span> <span class="n">kmlElement</span> <span class="o">=</span> <span class="n">m_kmlDocument</span><span class="o">-&gt;</span><span class="n">createElement</span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>
<a name="line-610"></a> <span class="n">target</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span> <span class="n">kmlElement</span> <span class="p">);</span>
<a name="line-611"></a> <span class="n">QDomText</span> <span class="n">kmlTextElement</span> <span class="o">=</span> <span class="n">m_kmlDocument</span><span class="o">-&gt;</span><span class="n">createTextNode</span><span class="p">(</span><span class="n">text</span><span class="p">);</span>
<a name="line-612"></a> <span class="n">kmlElement</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">kmlTextElement</span><span class="p">);</span>
<a name="line-613"></a>
<a name="line-614"></a> <span class="k">return</span> <span class="n">kmlElement</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="n">QDomElement</span> <span class="n">KmlExport</span><span class="o">::</span><span class="n">addKmlHtmlElement</span><span class="p">(</span><span class="n">QDomElement</span><span class="o">&amp;</span> <span class="n">target</span><span class="p">,</span>
<a name="line-618"></a> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">tag</span><span class="p">,</span>
<a name="line-619"></a> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">text</span><span class="p">)</span> <span class="k">const</span>
<a name="line-620"></a><span class="p">{</span>
<a name="line-621"></a> <span class="n">QDomElement</span> <span class="n">kmlElement</span> <span class="o">=</span> <span class="n">m_kmlDocument</span><span class="o">-&gt;</span><span class="n">createElement</span><span class="p">(</span><span class="n">tag</span><span class="p">);</span>
<a name="line-622"></a> <span class="n">target</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">kmlElement</span><span class="p">);</span>
<a name="line-623"></a> <span class="n">QDomText</span> <span class="n">kmlTextElement</span> <span class="o">=</span> <span class="n">m_kmlDocument</span><span class="o">-&gt;</span><span class="n">createCDATASection</span><span class="p">(</span><span class="n">text</span><span class="p">);</span>
<a name="line-624"></a> <span class="n">kmlElement</span><span class="p">.</span><span class="n">appendChild</span><span class="p">(</span><span class="n">kmlTextElement</span><span class="p">);</span>
<a name="line-625"></a>
<a name="line-626"></a> <span class="k">return</span> <span class="n">kmlElement</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="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/40.html b/static/reports/cppcheck/master/40.html
index 61bcbf722..b0b350aa3 100644
--- a/static/reports/cppcheck/master/40.html
+++ b/static/reports/cppcheck/master/40.html
@@ -1,1389 +1,1389 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/libs/threadimageio/preview/previewtask.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/libs/threadimageio/preview/previewtask.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> previewtask.cpp</p>
<a href='40.html#line-48'> knownConditionTrueFalse 48</a><a href='40.html#line-122'> knownConditionTrueFalse 122</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</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-12-26</span>
<a name="line-7"></a><span class="cm"> * Description : Multithreaded loader for previews</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2006-2011 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)</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;previewtask.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;QImage&gt;</span><span class="cp"></span>
<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QVariant&gt;</span><span class="cp"></span>
<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QMatrix&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;dimgloader.h&quot;</span><span class="cp"></span>
<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&quot;drawdecoder.h&quot;</span><span class="cp"></span>
<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&quot;dmetadata.h&quot;</span><span class="cp"></span>
<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&quot;jpegutils.h&quot;</span><span class="cp"></span>
<a name="line-40"></a><span class="cp">#include</span> <span class="cpf">&quot;metaenginesettings.h&quot;</span><span class="cp"></span>
<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&quot;previewloadthread.h&quot;</span><span class="cp"></span>
<a name="line-42"></a>
<a name="line-43"></a><span class="k">namespace</span> <span class="n">Digikam</span>
<a name="line-44"></a><span class="p">{</span>
<a name="line-45"></a>
<a name="line-46"></a><span class="kt">void</span> <span class="n">PreviewLoadingTask</span><span class="o">::</span><span class="n">execute</span><span class="p">()</span>
<a name="line-47"></a><span class="p">{</span>
<a name="line-48"></a><span class="hll"> <span class="k">if</span> <span class="p">(</span><span class="n">m_loadingTaskStatus</span> <span class="o">==</span> <span class="n">LoadingTaskStatusStopping</span><span class="p">)</span><span class='error2'>&lt;--- Assuming condition 'm_loadingTaskStatus==LoadingTaskStatusStopping' is false</span>
</span><a name="line-49"></a> <span class="p">{</span>
<a name="line-50"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-51"></a> <span class="p">}</span>
<a name="line-52"></a>
<a name="line-53"></a> <span class="c1">// Check if preview is in cache first.</span>
<a name="line-54"></a>
<a name="line-55"></a> <span class="n">LoadingCache</span><span class="o">*</span> <span class="k">const</span> <span class="n">cache</span> <span class="o">=</span> <span class="n">LoadingCache</span><span class="o">::</span><span class="n">cache</span><span class="p">();</span>
<a name="line-56"></a> <span class="p">{</span>
<a name="line-57"></a> <span class="n">LoadingCache</span><span class="o">::</span><span class="n">CacheLock</span> <span class="n">lock</span><span class="p">(</span><span class="n">cache</span><span class="p">);</span>
<a name="line-58"></a>
<a name="line-59"></a> <span class="c1">// find possible cached images</span>
<a name="line-60"></a>
<a name="line-61"></a> <span class="n">DImg</span><span class="o">*</span> <span class="n">cachedImg</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-62"></a> <span class="n">QStringList</span> <span class="n">lookupKeys</span> <span class="o">=</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">lookupCacheKeys</span><span class="p">();</span>
<a name="line-63"></a>
<a name="line-64"></a> <span class="c1">// lookupCacheKeys returns &quot;best first&quot;. Prepend the cache key to make the list &quot;fastest first&quot;:</span>
<a name="line-65"></a> <span class="c1">// Scaling a full version takes longer!</span>
<a name="line-66"></a>
<a name="line-67"></a> <span class="n">lookupKeys</span><span class="p">.</span><span class="n">prepend</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">cacheKey</span><span class="p">());</span>
<a name="line-68"></a>
<a name="line-69"></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">lookupKeys</span><span class="p">)</span>
<a name="line-70"></a> <span class="p">{</span>
<a name="line-71"></a> <span class="k">if</span> <span class="p">((</span><span class="n">cachedImg</span> <span class="o">=</span> <span class="n">cache</span><span class="o">-&gt;</span><span class="n">retrieveImage</span><span class="p">(</span><span class="n">key</span><span class="p">)))</span>
<a name="line-72"></a> <span class="p">{</span>
<a name="line-73"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">needCheckRawDecoding</span><span class="p">())</span>
<a name="line-74"></a> <span class="p">{</span>
<a name="line-75"></a> <span class="k">if</span> <span class="p">(</span><span class="n">cachedImg</span><span class="o">-&gt;</span><span class="n">rawDecodingSettings</span><span class="p">()</span> <span class="o">==</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">rawDecodingSettings</span><span class="p">)</span>
<a name="line-76"></a> <span class="p">{</span>
<a name="line-77"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-78"></a> <span class="p">}</span>
<a name="line-79"></a> <span class="k">else</span>
<a name="line-80"></a> <span class="p">{</span>
<a name="line-81"></a> <span class="n">cachedImg</span> <span class="o">=</span> <span class="k">nullptr</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>
<a name="line-85"></a> <span class="p">{</span>
<a name="line-86"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-87"></a> <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="k">if</span> <span class="p">(</span><span class="n">cachedImg</span><span class="p">)</span>
<a name="line-92"></a> <span class="p">{</span>
<a name="line-93"></a> <span class="c1">// image is found in image cache, loading is successful</span>
<a name="line-94"></a>
<a name="line-95"></a> <span class="n">m_img</span> <span class="o">=</span> <span class="n">DImg</span><span class="p">(</span><span class="o">*</span><span class="n">cachedImg</span><span class="p">);</span>
<a name="line-96"></a> <span class="p">}</span>
<a name="line-97"></a> <span class="k">else</span>
<a name="line-98"></a> <span class="p">{</span>
<a name="line-99"></a> <span class="c1">// find possible running loading process</span>
<a name="line-100"></a>
<a name="line-101"></a> <span class="n">m_usedProcess</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-102"></a>
<a name="line-103"></a> <span class="k">for</span> <span class="p">(</span><span class="n">QStringList</span><span class="o">::</span><span class="n">const_iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">lookupKeys</span><span class="p">.</span><span class="n">constBegin</span><span class="p">()</span> <span class="p">;</span> <span class="n">it</span> <span class="o">!=</span> <span class="n">lookupKeys</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-104"></a> <span class="p">{</span>
<a name="line-105"></a> <span class="k">if</span> <span class="p">((</span><span class="n">m_usedProcess</span> <span class="o">=</span> <span class="n">cache</span><span class="o">-&gt;</span><span class="n">retrieveLoadingProcess</span><span class="p">(</span><span class="o">*</span><span class="n">it</span><span class="p">)))</span>
<a name="line-106"></a> <span class="p">{</span>
<a name="line-107"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-108"></a> <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">if</span> <span class="p">(</span><span class="n">m_usedProcess</span><span class="p">)</span>
<a name="line-112"></a> <span class="p">{</span>
<a name="line-113"></a> <span class="c1">// Other process is right now loading this image.</span>
<a name="line-114"></a> <span class="c1">// Add this task to the list of listeners and</span>
<a name="line-115"></a> <span class="c1">// attach this thread to the other thread, wait until loading</span>
<a name="line-116"></a> <span class="c1">// has finished.</span>
<a name="line-117"></a>
<a name="line-118"></a> <span class="n">m_usedProcess</span><span class="o">-&gt;</span><span class="n">addListener</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-119"></a>
<a name="line-120"></a> <span class="c1">// break loop when either the loading has completed, or this task is being stopped</span>
<a name="line-121"></a>
<a name="line-122"></a><span class="hll"> <span class="k">while</span> <span class="p">((</span><span class="n">m_loadingTaskStatus</span> <span class="o">!=</span> <span class="n">LoadingTaskStatusStopping</span><span class="p">)</span> <span class="o">&amp;&amp;</span><span class='error2'>&lt;--- Condition 'm_loadingTaskStatus!=LoadingTaskStatusStopping' is always true</span>
</span><a name="line-123"></a> <span class="n">m_usedProcess</span> <span class="o">&amp;&amp;</span>
<a name="line-124"></a> <span class="o">!</span><span class="n">m_usedProcess</span><span class="o">-&gt;</span><span class="n">completed</span><span class="p">())</span>
<a name="line-125"></a> <span class="p">{</span>
<a name="line-126"></a> <span class="n">lock</span><span class="p">.</span><span class="n">timedWait</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="c1">// remove listener from process</span>
<a name="line-130"></a>
<a name="line-131"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_usedProcess</span><span class="p">)</span>
<a name="line-132"></a> <span class="p">{</span>
<a name="line-133"></a> <span class="n">m_usedProcess</span><span class="o">-&gt;</span><span class="n">removeListener</span><span class="p">(</span><span class="k">this</span><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="c1">// set to 0, as checked in setStatus</span>
<a name="line-137"></a>
<a name="line-138"></a> <span class="n">m_usedProcess</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-139"></a>
<a name="line-140"></a> <span class="c1">// wake up the process which is waiting until all listeners have removed themselves</span>
<a name="line-141"></a>
<a name="line-142"></a> <span class="n">lock</span><span class="p">.</span><span class="n">wakeAll</span><span class="p">();</span>
<a name="line-143"></a>
<a name="line-144"></a> <span class="c1">// m_img is now set to the result</span>
<a name="line-145"></a> <span class="p">}</span>
<a name="line-146"></a> <span class="k">else</span>
<a name="line-147"></a> <span class="p">{</span>
<a name="line-148"></a> <span class="c1">// Neither in cache, nor currently loading in different thread.</span>
<a name="line-149"></a> <span class="c1">// Load it here and now, add this LoadingProcess to cache list.</span>
<a name="line-150"></a>
<a name="line-151"></a> <span class="n">cache</span><span class="o">-&gt;</span><span class="n">addLoadingProcess</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-152"></a>
<a name="line-153"></a> <span class="c1">// Add this to the list of listeners</span>
<a name="line-154"></a>
<a name="line-155"></a> <span class="n">addListener</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="c1">// for use in setStatus</span>
<a name="line-158"></a>
<a name="line-159"></a> <span class="n">m_usedProcess</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<a name="line-160"></a>
<a name="line-161"></a> <span class="c1">// Notify other processes that we are now loading this image.</span>
<a name="line-162"></a> <span class="c1">// They might be interested - see notifyNewLoadingProcess below</span>
<a name="line-163"></a>
<a name="line-164"></a> <span class="n">cache</span><span class="o">-&gt;</span><span class="n">notifyNewLoadingProcess</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">m_loadingDescription</span><span class="p">);</span>
<a name="line-165"></a> <span class="p">}</span>
<a name="line-166"></a> <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="k">if</span> <span class="p">(</span><span class="n">continueQuery</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">m_img</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-170"></a> <span class="p">{</span>
<a name="line-171"></a> <span class="c1">// Preview is not in cache, we will load image from file.</span>
<a name="line-172"></a>
<a name="line-173"></a> <span class="n">DImg</span><span class="o">::</span><span class="n">FORMAT</span> <span class="n">format</span> <span class="o">=</span> <span class="n">DImg</span><span class="o">::</span><span class="n">fileFormat</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">filePath</span><span class="p">);</span>
<a name="line-174"></a> <span class="n">m_fromRawEmbeddedPreview</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-175"></a>
<a name="line-176"></a> <span class="k">if</span> <span class="p">(</span><span class="n">format</span> <span class="o">==</span> <span class="n">DImg</span><span class="o">::</span><span class="n">RAW</span><span class="p">)</span>
<a name="line-177"></a> <span class="p">{</span>
<a name="line-178"></a> <span class="n">MetaEnginePreviews</span> <span class="n">previews</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">filePath</span><span class="p">);</span>
<a name="line-179"></a>
<a name="line-180"></a> <span class="c1">// Check original image size using Exiv2.</span>
<a name="line-181"></a>
<a name="line-182"></a> <span class="n">QSize</span> <span class="n">originalSize</span> <span class="o">=</span> <span class="n">previews</span><span class="p">.</span><span class="n">originalSize</span><span class="p">();</span>
<a name="line-183"></a>
<a name="line-184"></a> <span class="c1">// If not valid, get original size from LibRaw</span>
<a name="line-185"></a>
<a name="line-186"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">originalSize</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-187"></a> <span class="p">{</span>
<a name="line-188"></a> <span class="n">DRawInfo</span> <span class="n">container</span><span class="p">;</span>
<a name="line-189"></a>
<a name="line-190"></a> <span class="k">if</span> <span class="p">(</span><span class="n">DRawDecoder</span><span class="o">::</span><span class="n">rawFileIdentify</span><span class="p">(</span><span class="n">container</span><span class="p">,</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">filePath</span><span class="p">))</span>
<a name="line-191"></a> <span class="p">{</span>
<a name="line-192"></a> <span class="n">originalSize</span> <span class="o">=</span> <span class="n">container</span><span class="p">.</span><span class="n">imageSize</span><span class="p">;</span>
<a name="line-193"></a> <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="k">switch</span> <span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">previewParameters</span><span class="p">.</span><span class="n">previewSettings</span><span class="p">.</span><span class="n">quality</span><span class="p">)</span>
<a name="line-197"></a> <span class="p">{</span>
<a name="line-198"></a> <span class="k">case</span> <span class="n">PreviewSettings</span><span class="o">::</span><span class="nl">FastPreview</span><span class="p">:</span>
<a name="line-199"></a> <span class="k">case</span> <span class="n">PreviewSettings</span><span class="o">::</span><span class="nl">FastButLargePreview</span><span class="p">:</span>
<a name="line-200"></a> <span class="p">{</span>
<a name="line-201"></a> <span class="c1">// Size calculations</span>
<a name="line-202"></a>
<a name="line-203"></a> <span class="kt">int</span> <span class="n">sizeLimit</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<a name="line-204"></a> <span class="kt">int</span> <span class="n">bestSize</span> <span class="o">=</span> <span class="n">qMax</span><span class="p">(</span><span class="n">originalSize</span><span class="p">.</span><span class="n">width</span><span class="p">(),</span> <span class="n">originalSize</span><span class="p">.</span><span class="n">height</span><span class="p">());</span>
<a name="line-205"></a>
<a name="line-206"></a> <span class="c1">// for RAWs, the alternative is the half preview, so best size is already originalSize / 2</span>
<a name="line-207"></a>
<a name="line-208"></a> <span class="n">bestSize</span> <span class="o">/=</span> <span class="mi">2</span><span class="p">;</span>
<a name="line-209"></a>
<a name="line-210"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">previewParameters</span><span class="p">.</span><span class="n">previewSettings</span><span class="p">.</span><span class="n">quality</span> <span class="o">==</span> <span class="n">PreviewSettings</span><span class="o">::</span><span class="n">FastButLargePreview</span><span class="p">)</span>
<a name="line-211"></a> <span class="p">{</span>
<a name="line-212"></a> <span class="n">sizeLimit</span> <span class="o">=</span> <span class="n">qMin</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">previewParameters</span><span class="p">.</span><span class="n">size</span><span class="p">,</span> <span class="n">bestSize</span><span class="p">);</span>
<a name="line-213"></a> <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">loadExiv2Preview</span><span class="p">(</span><span class="n">previews</span><span class="p">,</span> <span class="n">sizeLimit</span><span class="p">))</span>
<a name="line-216"></a> <span class="p">{</span>
<a name="line-217"></a> <span class="k">break</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">loadLibRawPreview</span><span class="p">(</span><span class="n">sizeLimit</span><span class="p">))</span>
<a name="line-221"></a> <span class="p">{</span>
<a name="line-222"></a> <span class="k">break</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="n">loadHalfSizeRaw</span><span class="p">();</span>
<a name="line-226"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-227"></a> <span class="p">}</span>
<a name="line-228"></a>
<a name="line-229"></a> <span class="k">case</span> <span class="n">PreviewSettings</span><span class="o">::</span><span class="nl">HighQualityPreview</span><span class="p">:</span>
<a name="line-230"></a> <span class="p">{</span>
<a name="line-231"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">previewParameters</span><span class="p">.</span><span class="n">previewSettings</span><span class="p">.</span><span class="n">rawLoading</span><span class="p">)</span>
<a name="line-232"></a> <span class="p">{</span>
<a name="line-233"></a> <span class="k">case</span> <span class="n">PreviewSettings</span><span class="o">::</span><span class="nl">RawPreviewAutomatic</span><span class="p">:</span>
<a name="line-234"></a> <span class="p">{</span>
<a name="line-235"></a> <span class="c1">// If we find a preview that is larger than half size (which is what we get from half-size original data), we take it</span>
<a name="line-236"></a>
<a name="line-237"></a> <span class="kt">int</span> <span class="n">acceptableSize</span> <span class="o">=</span> <span class="n">qMax</span><span class="p">(</span><span class="n">lround</span><span class="p">(</span><span class="n">originalSize</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">*</span> <span class="mf">0.48</span><span class="p">),</span> <span class="n">lround</span><span class="p">(</span><span class="n">originalSize</span><span class="p">.</span><span class="n">height</span><span class="p">()</span> <span class="o">*</span> <span class="mf">0.48</span><span class="p">));</span>
<a name="line-238"></a>
<a name="line-239"></a> <span class="k">if</span> <span class="p">(</span><span class="n">loadExiv2Preview</span><span class="p">(</span><span class="n">previews</span><span class="p">,</span> <span class="n">acceptableSize</span><span class="p">))</span>
<a name="line-240"></a> <span class="p">{</span>
<a name="line-241"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-242"></a> <span class="p">}</span>
<a name="line-243"></a>
<a name="line-244"></a> <span class="k">if</span> <span class="p">(</span><span class="n">loadLibRawPreview</span><span class="p">(</span><span class="n">acceptableSize</span><span class="p">))</span>
<a name="line-245"></a> <span class="p">{</span>
<a name="line-246"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-247"></a> <span class="p">}</span>
<a name="line-248"></a>
<a name="line-249"></a> <span class="n">loadHalfSizeRaw</span><span class="p">();</span>
<a name="line-250"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-251"></a> <span class="p">}</span>
<a name="line-252"></a>
<a name="line-253"></a> <span class="k">case</span> <span class="n">PreviewSettings</span><span class="o">::</span><span class="nl">RawPreviewFromEmbeddedPreview</span><span class="p">:</span>
<a name="line-254"></a> <span class="p">{</span>
<a name="line-255"></a> <span class="k">if</span> <span class="p">(</span><span class="n">loadExiv2Preview</span><span class="p">(</span><span class="n">previews</span><span class="p">))</span>
<a name="line-256"></a> <span class="p">{</span>
<a name="line-257"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-258"></a> <span class="p">}</span>
<a name="line-259"></a>
<a name="line-260"></a> <span class="k">if</span> <span class="p">(</span><span class="n">loadLibRawPreview</span><span class="p">())</span>
<a name="line-261"></a> <span class="p">{</span>
<a name="line-262"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-263"></a> <span class="p">}</span>
<a name="line-264"></a>
<a name="line-265"></a> <span class="n">loadHalfSizeRaw</span><span class="p">();</span>
<a name="line-266"></a> <span class="k">break</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="k">case</span> <span class="n">PreviewSettings</span><span class="o">::</span><span class="nl">RawPreviewFromRawHalfSize</span><span class="p">:</span>
<a name="line-270"></a> <span class="p">{</span>
<a name="line-271"></a> <span class="n">loadHalfSizeRaw</span><span class="p">();</span>
<a name="line-272"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-273"></a> <span class="p">}</span>
<a name="line-274"></a> <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>
<a name="line-278"></a> <span class="c1">// So far, everything loaded QImage. Convert to DImg.</span>
<a name="line-279"></a>
<a name="line-280"></a> <span class="n">convertQImageToDImg</span><span class="p">();</span>
<a name="line-281"></a> <span class="p">}</span>
<a name="line-282"></a> <span class="k">else</span> <span class="c1">// Non-RAW images</span>
<a name="line-283"></a> <span class="p">{</span>
<a name="line-284"></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;Try to get preview from&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">filePath</span><span class="p">;</span>
<a name="line-285"></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;Preview quality: &quot;</span> <span class="o">&lt;&lt;</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">previewParameters</span><span class="p">.</span><span class="n">previewSettings</span><span class="p">.</span><span class="n">quality</span><span class="p">;</span>
<a name="line-286"></a>
<a name="line-287"></a> <span class="kt">bool</span> <span class="n">isFast</span> <span class="o">=</span> <span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">previewParameters</span><span class="p">.</span><span class="n">previewSettings</span><span class="p">.</span><span class="n">quality</span> <span class="o">==</span> <span class="n">PreviewSettings</span><span class="o">::</span><span class="n">FastPreview</span><span class="p">);</span>
<a name="line-288"></a>
<a name="line-289"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">previewParameters</span><span class="p">.</span><span class="n">previewSettings</span><span class="p">.</span><span class="n">quality</span><span class="p">)</span>
<a name="line-290"></a> <span class="p">{</span>
<a name="line-291"></a> <span class="k">case</span> <span class="n">PreviewSettings</span><span class="o">::</span><span class="nl">FastPreview</span><span class="p">:</span>
<a name="line-292"></a> <span class="k">case</span> <span class="n">PreviewSettings</span><span class="o">::</span><span class="nl">FastButLargePreview</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="n">isFast</span> <span class="o">&amp;&amp;</span> <span class="n">loadImagePreview</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">previewParameters</span><span class="p">.</span><span class="n">size</span><span class="p">))</span>
<a name="line-295"></a> <span class="p">{</span>
<a name="line-296"></a> <span class="n">convertQImageToDImg</span><span class="p">();</span>
<a name="line-297"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-298"></a> <span class="p">}</span>
<a name="line-299"></a>
<a name="line-300"></a> <span class="c1">// Set a hint to try to load a JPEG or PGF with the fast scale-before-decoding method</span>
<a name="line-301"></a>
<a name="line-302"></a> <span class="k">if</span> <span class="p">(</span><span class="n">isFast</span><span class="p">)</span>
<a name="line-303"></a> <span class="p">{</span>
<a name="line-304"></a> <span class="n">m_img</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;scaledLoadingSize&quot;</span><span class="p">),</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">previewParameters</span><span class="p">.</span><span class="n">size</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">m_img</span><span class="p">.</span><span class="n">load</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">filePath</span><span class="p">,</span> <span class="k">this</span><span class="p">,</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">rawDecodingSettings</span><span class="p">);</span>
<a name="line-308"></a> <span class="k">break</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="k">case</span> <span class="n">PreviewSettings</span><span class="o">::</span><span class="nl">HighQualityPreview</span><span class="p">:</span>
<a name="line-312"></a> <span class="p">{</span>
<a name="line-313"></a> <span class="n">m_img</span><span class="p">.</span><span class="n">load</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">filePath</span><span class="p">,</span> <span class="k">this</span><span class="p">,</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">rawDecodingSettings</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> <span class="p">}</span>
<a name="line-318"></a>
<a name="line-319"></a> <span class="k">if</span> <span class="p">(</span><span class="n">continueQuery</span><span class="p">())</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">m_img</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">&amp;&amp;</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">exifRotate</span><span class="p">)</span>
<a name="line-322"></a> <span class="p">{</span>
<a name="line-323"></a> <span class="n">m_img</span><span class="p">.</span><span class="n">exifRotate</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">filePath</span><span class="p">);</span>
<a name="line-324"></a> <span class="p">}</span>
<a name="line-325"></a>
<a name="line-326"></a> <span class="n">LoadingCache</span><span class="o">::</span><span class="n">CacheLock</span> <span class="n">lock</span><span class="p">(</span><span class="n">cache</span><span class="p">);</span>
<a name="line-327"></a>
<a name="line-328"></a> <span class="c1">// put valid image into cache of loaded images</span>
<a name="line-329"></a>
<a name="line-330"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_img</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-331"></a> <span class="p">{</span>
<a name="line-332"></a> <span class="n">cache</span><span class="o">-&gt;</span><span class="n">putImage</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">cacheKey</span><span class="p">(),</span> <span class="n">m_img</span><span class="p">,</span>
<a name="line-333"></a> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">filePath</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">// remove this from the list of loading processes in cache</span>
<a name="line-337"></a>
<a name="line-338"></a> <span class="n">cache</span><span class="o">-&gt;</span><span class="n">removeLoadingProcess</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-339"></a>
<a name="line-340"></a> <span class="c1">// dispatch image to all listeners, including this</span>
<a name="line-341"></a>
<a name="line-342"></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_listeners</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-343"></a> <span class="p">{</span>
<a name="line-344"></a> <span class="n">LoadingProcessListener</span><span class="o">*</span> <span class="k">const</span> <span class="n">l</span> <span class="o">=</span> <span class="n">m_listeners</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-345"></a>
<a name="line-346"></a> <span class="k">if</span> <span class="p">(</span><span class="n">l</span><span class="o">-&gt;</span><span class="n">accessMode</span><span class="p">()</span> <span class="o">==</span> <span class="n">LoadSaveThread</span><span class="o">::</span><span class="n">AccessModeReadWrite</span><span class="p">)</span>
<a name="line-347"></a> <span class="p">{</span>
<a name="line-348"></a> <span class="c1">// If a listener requested ReadWrite access, it gets a deep copy.</span>
<a name="line-349"></a> <span class="c1">// DImg is explicitly shared.</span>
<a name="line-350"></a>
<a name="line-351"></a> <span class="n">l</span><span class="o">-&gt;</span><span class="n">setResult</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">,</span> <span class="n">m_img</span><span class="p">.</span><span class="n">copy</span><span class="p">());</span>
<a name="line-352"></a> <span class="p">}</span>
<a name="line-353"></a> <span class="k">else</span>
<a name="line-354"></a> <span class="p">{</span>
<a name="line-355"></a> <span class="n">l</span><span class="o">-&gt;</span><span class="n">setResult</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">,</span> <span class="n">m_img</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">// remove myself from list of listeners</span>
<a name="line-360"></a>
<a name="line-361"></a> <span class="n">removeListener</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-362"></a>
<a name="line-363"></a> <span class="c1">// indicate that loading has finished so that listeners can stop waiting</span>
<a name="line-364"></a>
<a name="line-365"></a> <span class="n">m_completed</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-366"></a>
<a name="line-367"></a> <span class="c1">// wake all listeners waiting on cache condVar, so that they remove themselves</span>
<a name="line-368"></a>
<a name="line-369"></a> <span class="n">lock</span><span class="p">.</span><span class="n">wakeAll</span><span class="p">();</span>
<a name="line-370"></a>
<a name="line-371"></a> <span class="c1">// wait until all listeners have removed themselves</span>
<a name="line-372"></a>
<a name="line-373"></a> <span class="k">while</span> <span class="p">(</span><span class="n">m_listeners</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-374"></a> <span class="p">{</span>
<a name="line-375"></a> <span class="n">lock</span><span class="p">.</span><span class="n">timedWait</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="c1">// set to 0, as checked in setStatus</span>
<a name="line-379"></a>
<a name="line-380"></a> <span class="n">m_usedProcess</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-381"></a> <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="c1">// following the golden rule to avoid deadlocks, do this when CacheLock is not held</span>
<a name="line-385"></a>
<a name="line-386"></a> <span class="k">if</span> <span class="p">(</span><span class="n">continueQuery</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">m_img</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-387"></a> <span class="p">{</span>
<a name="line-388"></a> <span class="c1">// The image from the cache may or may not be rotated and post processed.</span>
<a name="line-389"></a> <span class="c1">// exifRotate() and postProcess() will detect if work is needed.</span>
<a name="line-390"></a> <span class="c1">// We check before to find out if we need to provide a deep copy</span>
<a name="line-391"></a>
<a name="line-392"></a> <span class="k">const</span> <span class="kt">bool</span> <span class="n">needExifRotate</span> <span class="o">=</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">exifRotate</span> <span class="o">&amp;&amp;</span>
<a name="line-393"></a> <span class="o">!</span><span class="n">m_img</span><span class="p">.</span><span class="n">wasExifRotated</span><span class="p">();</span>
<a name="line-394"></a> <span class="k">const</span> <span class="kt">bool</span> <span class="n">needImageScale</span> <span class="o">=</span> <span class="n">needToScale</span><span class="p">();</span>
<a name="line-395"></a> <span class="k">const</span> <span class="kt">bool</span> <span class="n">needPostProcess</span> <span class="o">=</span> <span class="n">needsPostProcessing</span><span class="p">();</span>
<a name="line-396"></a> <span class="k">const</span> <span class="kt">bool</span> <span class="n">needConvertToEightBit</span> <span class="o">=</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">previewParameters</span><span class="p">.</span><span class="n">previewSettings</span><span class="p">.</span><span class="n">convertToEightBit</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">accessMode</span><span class="p">()</span> <span class="o">==</span> <span class="n">LoadSaveThread</span><span class="o">::</span><span class="n">AccessModeReadWrite</span><span class="p">)</span> <span class="o">||</span>
<a name="line-399"></a> <span class="n">needExifRotate</span> <span class="o">||</span>
<a name="line-400"></a> <span class="n">needImageScale</span> <span class="o">||</span>
<a name="line-401"></a> <span class="n">needPostProcess</span> <span class="o">||</span>
<a name="line-402"></a> <span class="n">needConvertToEightBit</span><span class="p">)</span>
<a name="line-403"></a> <span class="p">{</span>
<a name="line-404"></a> <span class="n">m_img</span><span class="p">.</span><span class="n">detach</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="k">if</span> <span class="p">(</span><span class="n">needImageScale</span><span class="p">)</span>
<a name="line-408"></a> <span class="p">{</span>
<a name="line-409"></a> <span class="n">QSize</span> <span class="n">scaledSize</span> <span class="o">=</span> <span class="n">m_img</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
<a name="line-410"></a> <span class="n">scaledSize</span><span class="p">.</span><span class="n">scale</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">previewParameters</span><span class="p">.</span><span class="n">size</span><span class="p">,</span>
<a name="line-411"></a> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">previewParameters</span><span class="p">.</span><span class="n">size</span><span class="p">,</span>
<a name="line-412"></a> <span class="n">Qt</span><span class="o">::</span><span class="n">KeepAspectRatio</span><span class="p">);</span>
<a name="line-413"></a> <span class="n">m_img</span> <span class="o">=</span> <span class="n">m_img</span><span class="p">.</span><span class="n">smoothScale</span><span class="p">(</span><span class="n">scaledSize</span><span class="p">.</span><span class="n">width</span><span class="p">(),</span> <span class="n">scaledSize</span><span class="p">.</span><span class="n">height</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">needConvertToEightBit</span><span class="p">)</span>
<a name="line-417"></a> <span class="p">{</span>
<a name="line-418"></a> <span class="n">m_img</span><span class="p">.</span><span class="n">convertToEightBit</span><span class="p">();</span>
<a name="line-419"></a> <span class="p">}</span>
<a name="line-420"></a>
<a name="line-421"></a> <span class="k">if</span> <span class="p">(</span><span class="n">needExifRotate</span><span class="p">)</span>
<a name="line-422"></a> <span class="p">{</span>
<a name="line-423"></a> <span class="n">m_img</span><span class="p">.</span><span class="n">exifRotate</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">filePath</span><span class="p">);</span>
<a name="line-424"></a> <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">needPostProcess</span><span class="p">)</span>
<a name="line-427"></a> <span class="p">{</span>
<a name="line-428"></a> <span class="n">postProcess</span><span class="p">();</span>
<a name="line-429"></a> <span class="p">}</span>
<a name="line-430"></a> <span class="p">}</span>
<a name="line-431"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">continueQuery</span><span class="p">())</span>
<a name="line-432"></a> <span class="p">{</span>
<a name="line-433"></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;Cannot extract preview for&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">filePath</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">m_img</span> <span class="o">=</span> <span class="n">DImg</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">if</span> <span class="p">(</span><span class="n">m_thread</span><span class="p">)</span>
<a name="line-441"></a> <span class="p">{</span>
<a name="line-442"></a> <span class="n">m_thread</span><span class="o">-&gt;</span><span class="n">taskHasFinished</span><span class="p">();</span>
<a name="line-443"></a> <span class="n">m_thread</span><span class="o">-&gt;</span><span class="n">imageLoaded</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">,</span> <span class="n">m_img</span><span class="p">);</span>
<a name="line-444"></a> <span class="p">}</span>
<a name="line-445"></a><span class="p">}</span>
<a name="line-446"></a>
<a name="line-447"></a><span class="kt">bool</span> <span class="n">PreviewLoadingTask</span><span class="o">::</span><span class="n">needToScale</span><span class="p">()</span>
<a name="line-448"></a><span class="p">{</span>
<a name="line-449"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">previewParameters</span><span class="p">.</span><span class="n">previewSettings</span><span class="p">.</span><span class="n">quality</span><span class="p">)</span>
<a name="line-450"></a> <span class="p">{</span>
<a name="line-451"></a> <span class="k">case</span> <span class="n">PreviewSettings</span><span class="o">::</span><span class="nl">FastPreview</span><span class="p">:</span>
<a name="line-452"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">previewParameters</span><span class="p">.</span><span class="n">size</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-453"></a> <span class="p">{</span>
<a name="line-454"></a> <span class="kt">int</span> <span class="n">maxSize</span> <span class="o">=</span> <span class="n">qMax</span><span class="p">(</span><span class="n">m_img</span><span class="p">.</span><span class="n">width</span><span class="p">(),</span> <span class="n">m_img</span><span class="p">.</span><span class="n">height</span><span class="p">());</span>
<a name="line-455"></a> <span class="kt">int</span> <span class="n">acceptableUpperSize</span> <span class="o">=</span> <span class="n">lround</span><span class="p">(</span><span class="mf">1.25</span> <span class="o">*</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">previewParameters</span><span class="p">.</span><span class="n">size</span><span class="p">);</span>
<a name="line-456"></a> <span class="k">return</span> <span class="p">(</span><span class="n">maxSize</span> <span class="o">&gt;=</span> <span class="n">acceptableUpperSize</span><span class="p">);</span>
<a name="line-457"></a> <span class="p">}</span>
<a name="line-458"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-459"></a>
<a name="line-460"></a> <span class="k">case</span> <span class="n">PreviewSettings</span><span class="o">::</span><span class="nl">FastButLargePreview</span><span class="p">:</span>
<a name="line-461"></a> <span class="k">case</span> <span class="n">PreviewSettings</span><span class="o">::</span><span class="nl">HighQualityPreview</span><span class="p">:</span>
<a name="line-462"></a> <span class="k">break</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">return</span> <span class="nb">false</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="c1">// -- Exif/IPTC preview extraction using Exiv2 --------------------------------------------------------</span>
<a name="line-469"></a>
<a name="line-470"></a><span class="kt">bool</span> <span class="n">PreviewLoadingTask</span><span class="o">::</span><span class="n">loadExiv2Preview</span><span class="p">(</span><span class="n">MetaEnginePreviews</span><span class="o">&amp;</span> <span class="n">previews</span><span class="p">,</span> <span class="kt">int</span> <span class="n">sizeLimit</span><span class="p">)</span>
<a name="line-471"></a><span class="p">{</span>
<a name="line-472"></a> <span class="k">if</span> <span class="p">(</span><span class="n">previews</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">()</span> <span class="o">||</span> <span class="o">!</span><span class="n">continueQuery</span><span class="p">())</span>
<a name="line-473"></a> <span class="p">{</span>
<a name="line-474"></a> <span class="k">return</span> <span class="nb">false</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="n">sizeLimit</span> <span class="o">==</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">qMax</span><span class="p">(</span><span class="n">previews</span><span class="p">.</span><span class="n">width</span><span class="p">(),</span> <span class="n">previews</span><span class="p">.</span><span class="n">height</span><span class="p">())</span> <span class="o">&gt;=</span> <span class="n">sizeLimit</span><span class="p">))</span>
<a name="line-478"></a> <span class="p">{</span>
<a name="line-479"></a> <span class="n">m_qimage</span> <span class="o">=</span> <span class="n">previews</span><span class="p">.</span><span class="n">image</span><span class="p">();</span>
<a name="line-480"></a>
<a name="line-481"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_qimage</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-482"></a> <span class="p">{</span>
<a name="line-483"></a> <span class="n">m_fromRawEmbeddedPreview</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-484"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-485"></a> <span class="p">}</span>
<a name="line-486"></a> <span class="p">}</span>
<a name="line-487"></a>
<a name="line-488"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-489"></a><span class="p">}</span>
<a name="line-490"></a>
<a name="line-491"></a><span class="kt">bool</span> <span class="n">PreviewLoadingTask</span><span class="o">::</span><span class="n">loadLibRawPreview</span><span class="p">(</span><span class="kt">int</span> <span class="n">sizeLimit</span><span class="p">)</span>
<a name="line-492"></a><span class="p">{</span>
<a name="line-493"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">continueQuery</span><span class="p">())</span>
<a name="line-494"></a> <span class="p">{</span>
<a name="line-495"></a> <span class="k">return</span> <span class="nb">false</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="n">QImage</span> <span class="n">rawPreview</span><span class="p">;</span>
<a name="line-499"></a> <span class="n">DRawDecoder</span><span class="o">::</span><span class="n">loadEmbeddedPreview</span><span class="p">(</span><span class="n">rawPreview</span><span class="p">,</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">filePath</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">rawPreview</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">&amp;&amp;</span>
<a name="line-502"></a> <span class="p">((</span><span class="n">sizeLimit</span> <span class="o">==</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">qMax</span><span class="p">(</span><span class="n">rawPreview</span><span class="p">.</span><span class="n">width</span><span class="p">(),</span> <span class="n">rawPreview</span><span class="p">.</span><span class="n">height</span><span class="p">())</span> <span class="o">&gt;=</span> <span class="n">sizeLimit</span><span class="p">)))</span>
<a name="line-503"></a> <span class="p">{</span>
<a name="line-504"></a> <span class="n">m_qimage</span> <span class="o">=</span> <span class="n">rawPreview</span><span class="p">;</span>
<a name="line-505"></a> <span class="n">m_fromRawEmbeddedPreview</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-506"></a> <span class="k">return</span> <span class="nb">true</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="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-510"></a><span class="p">}</span>
<a name="line-511"></a>
<a name="line-512"></a><span class="kt">bool</span> <span class="n">PreviewLoadingTask</span><span class="o">::</span><span class="n">loadHalfSizeRaw</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">continueQuery</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="nb">false</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">DRawDecoder</span><span class="o">::</span><span class="n">loadHalfPreview</span><span class="p">(</span><span class="n">m_qimage</span><span class="p">,</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">filePath</span><span class="p">);</span>
<a name="line-520"></a> <span class="k">return</span> <span class="p">(</span><span class="o">!</span><span class="n">m_qimage</span><span class="p">.</span><span class="n">isNull</span><span class="p">());</span>
<a name="line-521"></a><span class="p">}</span>
<a name="line-522"></a>
<a name="line-523"></a><span class="kt">void</span> <span class="n">PreviewLoadingTask</span><span class="o">::</span><span class="n">convertQImageToDImg</span><span class="p">()</span>
<a name="line-524"></a><span class="p">{</span>
<a name="line-525"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">continueQuery</span><span class="p">())</span>
<a name="line-526"></a> <span class="p">{</span>
<a name="line-527"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-528"></a> <span class="p">}</span>
<a name="line-529"></a>
<a name="line-530"></a> <span class="c1">// convert from QImage</span>
<a name="line-531"></a>
<a name="line-532"></a> <span class="n">m_img</span> <span class="o">=</span> <span class="n">DImg</span><span class="p">(</span><span class="n">m_qimage</span><span class="p">);</span>
<a name="line-533"></a> <span class="n">DImg</span><span class="o">::</span><span class="n">FORMAT</span> <span class="n">format</span> <span class="o">=</span> <span class="n">DImg</span><span class="o">::</span><span class="n">fileFormat</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">filePath</span><span class="p">);</span>
<a name="line-534"></a>
<a name="line-535"></a> <span class="n">m_img</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;detectedFileFormat&quot;</span><span class="p">),</span> <span class="n">format</span><span class="p">);</span>
<a name="line-536"></a> <span class="n">m_img</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;originalFilePath&quot;</span><span class="p">),</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">filePath</span><span class="p">);</span>
<a name="line-537"></a>
<a name="line-538"></a> <span class="n">DMetadata</span> <span class="nf">metadata</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">filePath</span><span class="p">);</span>
<a name="line-539"></a> <span class="n">QSize</span> <span class="n">orgSize</span> <span class="o">=</span> <span class="n">metadata</span><span class="p">.</span><span class="n">getPixelSize</span><span class="p">();</span>
<a name="line-540"></a>
<a name="line-541"></a> <span class="k">if</span> <span class="p">((</span><span class="n">format</span> <span class="o">==</span> <span class="n">DImg</span><span class="o">::</span><span class="n">RAW</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="n">LoadSaveThread</span><span class="o">::</span><span class="n">infoProvider</span><span class="p">())</span>
<a name="line-542"></a> <span class="p">{</span>
<a name="line-543"></a> <span class="n">orgSize</span> <span class="o">=</span> <span class="n">LoadSaveThread</span><span class="o">::</span><span class="n">infoProvider</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">dimensionsHint</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">filePath</span><span class="p">);</span>
<a name="line-544"></a> <span class="p">}</span>
<a name="line-545"></a>
<a name="line-546"></a> <span class="c1">// In case we don&#39;t get the original size from the metadata.</span>
<a name="line-547"></a>
<a name="line-548"></a> <span class="k">if</span> <span class="p">(</span><span class="n">orgSize</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-549"></a> <span class="p">{</span>
<a name="line-550"></a> <span class="n">orgSize</span> <span class="o">=</span> <span class="n">QSize</span><span class="p">(</span><span class="n">m_img</span><span class="p">.</span><span class="n">width</span><span class="p">(),</span> <span class="n">m_img</span><span class="p">.</span><span class="n">height</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="c1">// Set the ratio of width and height of the</span>
<a name="line-554"></a> <span class="c1">// original size to the same ratio of the loaded image.</span>
<a name="line-555"></a> <span class="c1">// Because a half RAW preview was probably already rotated.</span>
<a name="line-556"></a>
<a name="line-557"></a> <span class="k">if</span> <span class="p">((</span><span class="n">format</span> <span class="o">==</span> <span class="n">DImg</span><span class="o">::</span><span class="n">RAW</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">m_fromRawEmbeddedPreview</span><span class="p">)</span>
<a name="line-558"></a> <span class="p">{</span>
<a name="line-559"></a> <span class="k">if</span> <span class="p">(((</span><span class="n">m_img</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">m_img</span><span class="p">.</span><span class="n">height</span><span class="p">())</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">orgSize</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">orgSize</span><span class="p">.</span><span class="n">height</span><span class="p">()))</span> <span class="o">||</span>
<a name="line-560"></a> <span class="p">((</span><span class="n">m_img</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">m_img</span><span class="p">.</span><span class="n">height</span><span class="p">())</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">orgSize</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">orgSize</span><span class="p">.</span><span class="n">height</span><span class="p">())))</span>
<a name="line-561"></a> <span class="p">{</span>
<a name="line-562"></a> <span class="n">orgSize</span><span class="p">.</span><span class="n">transpose</span><span class="p">();</span>
<a name="line-563"></a> <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="n">m_img</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;originalSize&quot;</span><span class="p">),</span> <span class="n">orgSize</span><span class="p">);</span>
<a name="line-567"></a>
<a name="line-568"></a> <span class="n">m_img</span><span class="p">.</span><span class="n">setMetadata</span><span class="p">(</span><span class="n">metadata</span><span class="p">.</span><span class="n">data</span><span class="p">());</span>
<a name="line-569"></a>
<a name="line-570"></a> <span class="c1">// mark as embedded preview (for Exif rotation)</span>
<a name="line-571"></a>
<a name="line-572"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_fromRawEmbeddedPreview</span><span class="p">)</span>
<a name="line-573"></a> <span class="p">{</span>
<a name="line-574"></a> <span class="n">m_img</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;fromRawEmbeddedPreview&quot;</span><span class="p">),</span> <span class="nb">true</span><span class="p">);</span>
<a name="line-575"></a>
<a name="line-576"></a> <span class="c1">// If we loaded the embedded preview, the Exif of the RAW indicates</span>
<a name="line-577"></a> <span class="c1">// the color space of the preview (see bug 195950 for NEF files)</span>
<a name="line-578"></a>
<a name="line-579"></a> <span class="n">m_img</span><span class="p">.</span><span class="n">setIccProfile</span><span class="p">(</span><span class="n">metadata</span><span class="p">.</span><span class="n">getIccProfile</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="c1">// free memory</span>
<a name="line-583"></a>
<a name="line-584"></a> <span class="n">m_qimage</span> <span class="o">=</span> <span class="n">QImage</span><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="kt">bool</span> <span class="n">PreviewLoadingTask</span><span class="o">::</span><span class="n">loadImagePreview</span><span class="p">(</span><span class="kt">int</span> <span class="n">sizeLimit</span><span class="p">)</span>
<a name="line-588"></a><span class="p">{</span>
<a name="line-589"></a> <span class="n">DMetadata</span> <span class="n">metadata</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">filePath</span><span class="p">);</span>
<a name="line-590"></a>
<a name="line-591"></a> <span class="n">QImage</span> <span class="n">previewImage</span><span class="p">;</span>
<a name="line-592"></a>
<a name="line-593"></a> <span class="k">if</span> <span class="p">(</span><span class="n">metadata</span><span class="p">.</span><span class="n">getItemPreview</span><span class="p">(</span><span class="n">previewImage</span><span class="p">))</span>
<a name="line-594"></a> <span class="p">{</span>
<a name="line-595"></a> <span class="k">if</span> <span class="p">((</span><span class="n">sizeLimit</span> <span class="o">==</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">qMax</span><span class="p">(</span><span class="n">previewImage</span><span class="p">.</span><span class="n">width</span><span class="p">(),</span> <span class="n">previewImage</span><span class="p">.</span><span class="n">height</span><span class="p">())</span> <span class="o">&gt;</span> <span class="n">sizeLimit</span><span class="p">))</span>
<a name="line-596"></a> <span class="p">{</span>
<a name="line-597"></a> <span class="n">m_qimage</span> <span class="o">=</span> <span class="n">previewImage</span><span class="p">;</span>
<a name="line-598"></a> <span class="k">return</span> <span class="nb">true</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="n">qDebug</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;Try to load DImg preview from:&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">filePath</span><span class="p">;</span>
<a name="line-603"></a>
<a name="line-604"></a> <span class="n">DImg</span> <span class="n">img</span><span class="p">;</span>
<a name="line-605"></a> <span class="n">DImgLoader</span><span class="o">::</span><span class="n">LoadFlags</span> <span class="n">loadFlags</span> <span class="o">=</span> <span class="n">DImgLoader</span><span class="o">::</span><span class="n">LoadItemInfo</span> <span class="o">|</span>
<a name="line-606"></a> <span class="n">DImgLoader</span><span class="o">::</span><span class="n">LoadMetadata</span> <span class="o">|</span>
<a name="line-607"></a> <span class="n">DImgLoader</span><span class="o">::</span><span class="n">LoadICCData</span> <span class="o">|</span>
<a name="line-608"></a> <span class="n">DImgLoader</span><span class="o">::</span><span class="n">LoadPreview</span><span class="p">;</span>
<a name="line-609"></a>
<a name="line-610"></a> <span class="k">if</span> <span class="p">(</span><span class="n">img</span><span class="p">.</span><span class="n">load</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">filePath</span><span class="p">,</span> <span class="n">loadFlags</span><span class="p">,</span> <span class="k">this</span><span class="p">))</span>
<a name="line-611"></a> <span class="p">{</span>
<a name="line-612"></a> <span class="k">if</span> <span class="p">((</span><span class="n">sizeLimit</span> <span class="o">==</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">qMax</span><span class="p">(</span><span class="n">img</span><span class="p">.</span><span class="n">width</span><span class="p">(),</span> <span class="n">img</span><span class="p">.</span><span class="n">height</span><span class="p">())</span> <span class="o">&gt;</span> <span class="p">(</span><span class="n">uint</span><span class="p">)</span><span class="n">sizeLimit</span><span class="p">))</span>
<a name="line-613"></a> <span class="p">{</span>
<a name="line-614"></a> <span class="n">m_qimage</span> <span class="o">=</span> <span class="n">img</span><span class="p">.</span><span class="n">copyQImage</span><span class="p">();</span>
<a name="line-615"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-616"></a> <span class="p">}</span>
<a name="line-617"></a> <span class="p">}</span>
<a name="line-618"></a>
<a name="line-619"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-620"></a><span class="p">}</span>
<a name="line-621"></a>
<a name="line-622"></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/41.html b/static/reports/cppcheck/master/41.html
index 1c0797c77..645a3c4c4 100644
--- a/static/reports/cppcheck/master/41.html
+++ b/static/reports/cppcheck/master/41.html
@@ -1,777 +1,777 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/libs/threadimageio/thumb/thumbnailtask.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/libs/threadimageio/thumb/thumbnailtask.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> thumbnailtask.cpp</p>
<a href='41.html#line-67'> knownConditionTrueFalse 67</a><a href='41.html#line-129'> knownConditionTrueFalse 129</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</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-06-05</span>
<a name="line-7"></a><span class="cm"> * Description : Multithreaded loader for thumbnails</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2006-2008 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)</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;thumbnailtask.h&quot;</span><span class="cp"></span>
<a name="line-26"></a>
<a name="line-27"></a><span class="c1">// C++ includes</span>
<a name="line-28"></a>
<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;cmath&gt;</span><span class="cp"></span>
<a name="line-30"></a>
<a name="line-31"></a><span class="c1">// Qt includes</span>
<a name="line-32"></a>
<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QApplication&gt;</span><span class="cp"></span>
<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QImage&gt;</span><span class="cp"></span>
<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&lt;QVariant&gt;</span><span class="cp"></span>
<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&lt;QMatrix&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;drawdecoder.h&quot;</span><span class="cp"></span>
<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.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;iccmanager.h&quot;</span><span class="cp"></span>
<a name="line-44"></a><span class="cp">#include</span> <span class="cpf">&quot;jpegutils.h&quot;</span><span class="cp"></span>
<a name="line-45"></a><span class="cp">#include</span> <span class="cpf">&quot;metaenginesettings.h&quot;</span><span class="cp"></span>
<a name="line-46"></a><span class="cp">#include</span> <span class="cpf">&quot;thumbnailloadthread.h&quot;</span><span class="cp"></span>
<a name="line-47"></a><span class="cp">#include</span> <span class="cpf">&quot;thumbnailcreator.h&quot;</span><span class="cp"></span>
<a name="line-48"></a>
<a name="line-49"></a><span class="k">namespace</span> <span class="n">Digikam</span>
<a name="line-50"></a><span class="p">{</span>
<a name="line-51"></a>
<a name="line-52"></a><span class="n">ThumbnailLoadingTask</span><span class="o">::</span><span class="n">ThumbnailLoadingTask</span><span class="p">(</span><span class="n">LoadSaveThread</span><span class="o">*</span> <span class="k">const</span> <span class="kr">thread</span><span class="p">,</span> <span class="k">const</span> <span class="n">LoadingDescription</span><span class="o">&amp;</span> <span class="n">description</span><span class="p">)</span>
<a name="line-53"></a> <span class="o">:</span> <span class="n">SharedLoadingTask</span><span class="p">(</span><span class="kr">thread</span><span class="p">,</span>
<a name="line-54"></a> <span class="n">description</span><span class="p">,</span>
<a name="line-55"></a> <span class="n">LoadSaveThread</span><span class="o">::</span><span class="n">AccessModeRead</span><span class="p">,</span>
<a name="line-56"></a> <span class="n">LoadingTaskStatusLoading</span><span class="p">)</span>
<a name="line-57"></a><span class="p">{</span>
<a name="line-58"></a> <span class="c1">// Thread must be a ThumbnailLoadThread, crashes otherwise.</span>
<a name="line-59"></a> <span class="c1">// Not a clean but pragmatic solution.</span>
<a name="line-60"></a>
<a name="line-61"></a> <span class="n">ThumbnailLoadThread</span><span class="o">*</span> <span class="k">const</span> <span class="n">thumbThread</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o">&lt;</span><span class="n">ThumbnailLoadThread</span><span class="o">*&gt;</span><span class="p">(</span><span class="kr">thread</span><span class="p">);</span>
<a name="line-62"></a> <span class="n">m_creator</span> <span class="o">=</span> <span class="n">thumbThread</span><span class="o">-&gt;</span><span class="n">thumbnailCreator</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="kt">void</span> <span class="n">ThumbnailLoadingTask</span><span class="o">::</span><span class="n">execute</span><span class="p">()</span>
<a name="line-66"></a><span class="p">{</span>
<a name="line-67"></a><span class="hll"> <span class="k">if</span> <span class="p">(</span><span class="n">m_loadingTaskStatus</span> <span class="o">==</span> <span class="n">LoadingTaskStatusStopping</span><span class="p">)</span><span class='error2'>&lt;--- Assuming condition 'm_loadingTaskStatus==LoadingTaskStatusStopping' is false</span>
</span><a name="line-68"></a> <span class="p">{</span>
<a name="line-69"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-70"></a> <span class="p">}</span>
<a name="line-71"></a>
<a name="line-72"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">previewParameters</span><span class="p">.</span><span class="n">onlyPregenerate</span><span class="p">())</span>
<a name="line-73"></a> <span class="p">{</span>
<a name="line-74"></a> <span class="n">setupCreator</span><span class="p">();</span>
<a name="line-75"></a>
<a name="line-76"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">previewParameters</span><span class="p">.</span><span class="n">type</span><span class="p">)</span>
<a name="line-77"></a> <span class="p">{</span>
<a name="line-78"></a> <span class="k">case</span> <span class="n">LoadingDescription</span><span class="o">::</span><span class="n">PreviewParameters</span><span class="o">::</span><span class="nl">Thumbnail</span><span class="p">:</span>
<a name="line-79"></a> <span class="n">m_creator</span><span class="o">-&gt;</span><span class="n">pregenerate</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">thumbnailIdentifier</span><span class="p">());</span>
<a name="line-80"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-81"></a>
<a name="line-82"></a> <span class="k">case</span> <span class="n">LoadingDescription</span><span class="o">::</span><span class="n">PreviewParameters</span><span class="o">::</span><span class="nl">DetailThumbnail</span><span class="p">:</span>
<a name="line-83"></a> <span class="n">m_creator</span><span class="o">-&gt;</span><span class="n">pregenerateDetail</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">thumbnailIdentifier</span><span class="p">(),</span>
<a name="line-84"></a> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">previewParameters</span><span class="p">.</span><span class="n">extraParameter</span><span class="p">.</span><span class="n">toRect</span><span class="p">());</span>
<a name="line-85"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-86"></a>
<a name="line-87"></a> <span class="k">default</span><span class="o">:</span>
<a name="line-88"></a> <span class="k">break</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">m_thread</span><span class="o">-&gt;</span><span class="n">taskHasFinished</span><span class="p">();</span>
<a name="line-92"></a>
<a name="line-93"></a> <span class="c1">// do not emit any signal</span>
<a name="line-94"></a>
<a name="line-95"></a> <span class="k">return</span><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="n">LoadingCache</span><span class="o">*</span> <span class="k">const</span> <span class="n">cache</span> <span class="o">=</span> <span class="n">LoadingCache</span><span class="o">::</span><span class="n">cache</span><span class="p">();</span>
<a name="line-99"></a> <span class="p">{</span>
<a name="line-100"></a> <span class="n">LoadingCache</span><span class="o">::</span><span class="n">CacheLock</span> <span class="n">lock</span><span class="p">(</span><span class="n">cache</span><span class="p">);</span>
<a name="line-101"></a>
<a name="line-102"></a> <span class="c1">// find possible cached images</span>
<a name="line-103"></a>
<a name="line-104"></a> <span class="k">const</span> <span class="n">QImage</span><span class="o">*</span> <span class="k">const</span> <span class="n">cachedImage</span> <span class="o">=</span> <span class="n">cache</span><span class="o">-&gt;</span><span class="n">retrieveThumbnail</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">cacheKey</span><span class="p">());</span>
<a name="line-105"></a>
<a name="line-106"></a> <span class="k">if</span> <span class="p">(</span><span class="n">cachedImage</span><span class="p">)</span>
<a name="line-107"></a> <span class="p">{</span>
<a name="line-108"></a> <span class="n">m_qimage</span> <span class="o">=</span> <span class="n">QImage</span><span class="p">(</span><span class="o">*</span><span class="n">cachedImage</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">if</span> <span class="p">(</span><span class="n">m_qimage</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-112"></a> <span class="p">{</span>
<a name="line-113"></a> <span class="c1">// find possible running loading process</span>
<a name="line-114"></a> <span class="c1">// do not wait on other loading processes?</span>
<a name="line-115"></a>
<a name="line-116"></a> <span class="n">m_usedProcess</span> <span class="o">=</span> <span class="n">cache</span><span class="o">-&gt;</span><span class="n">retrieveLoadingProcess</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">cacheKey</span><span class="p">());</span>
<a name="line-117"></a>
<a name="line-118"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_usedProcess</span><span class="p">)</span>
<a name="line-119"></a> <span class="p">{</span>
<a name="line-120"></a> <span class="c1">// Other process is right now loading this image.</span>
<a name="line-121"></a> <span class="c1">// Add this task to the list of listeners and</span>
<a name="line-122"></a> <span class="c1">// attach this thread to the other thread, wait until loading</span>
<a name="line-123"></a> <span class="c1">// has finished.</span>
<a name="line-124"></a>
<a name="line-125"></a> <span class="n">m_usedProcess</span><span class="o">-&gt;</span><span class="n">addListener</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="c1">// break loop when either the loading has completed, or this task is being stopped</span>
<a name="line-128"></a>
<a name="line-129"></a><span class="hll"> <span class="k">while</span> <span class="p">((</span><span class="n">m_loadingTaskStatus</span> <span class="o">!=</span> <span class="n">LoadingTaskStatusStopping</span><span class="p">)</span> <span class="o">&amp;&amp;</span><span class='error2'>&lt;--- Condition 'm_loadingTaskStatus!=LoadingTaskStatusStopping' is always true</span>
</span><a name="line-130"></a> <span class="n">m_usedProcess</span> <span class="o">&amp;&amp;</span>
<a name="line-131"></a> <span class="o">!</span><span class="n">m_usedProcess</span><span class="o">-&gt;</span><span class="n">completed</span><span class="p">())</span>
<a name="line-132"></a> <span class="p">{</span>
<a name="line-133"></a> <span class="n">lock</span><span class="p">.</span><span class="n">timedWait</span><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="c1">// remove listener from process</span>
<a name="line-137"></a>
<a name="line-138"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_usedProcess</span><span class="p">)</span>
<a name="line-139"></a> <span class="p">{</span>
<a name="line-140"></a> <span class="n">m_usedProcess</span><span class="o">-&gt;</span><span class="n">removeListener</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-141"></a> <span class="p">}</span>
<a name="line-142"></a>
<a name="line-143"></a> <span class="c1">// set to 0, as checked in setStatus</span>
<a name="line-144"></a>
<a name="line-145"></a> <span class="n">m_usedProcess</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-146"></a>
<a name="line-147"></a> <span class="c1">// wake up the process which is waiting until all listeners have removed themselves</span>
<a name="line-148"></a>
<a name="line-149"></a> <span class="n">lock</span><span class="p">.</span><span class="n">wakeAll</span><span class="p">();</span>
<a name="line-150"></a> <span class="p">}</span>
<a name="line-151"></a> <span class="k">else</span>
<a name="line-152"></a> <span class="p">{</span>
<a name="line-153"></a> <span class="c1">// Neither in cache, nor currently loading in different thread.</span>
<a name="line-154"></a> <span class="c1">// Load it here and now, add this LoadingProcess to cache list.</span>
<a name="line-155"></a>
<a name="line-156"></a> <span class="n">cache</span><span class="o">-&gt;</span><span class="n">addLoadingProcess</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-157"></a>
<a name="line-158"></a> <span class="c1">// Add this to the list of listeners</span>
<a name="line-159"></a>
<a name="line-160"></a> <span class="n">addListener</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-161"></a>
<a name="line-162"></a> <span class="c1">// for use in setStatus</span>
<a name="line-163"></a>
<a name="line-164"></a> <span class="n">m_usedProcess</span> <span class="o">=</span> <span class="k">this</span><span class="p">;</span>
<a name="line-165"></a>
<a name="line-166"></a> <span class="c1">// Notify other processes that we are now loading this image.</span>
<a name="line-167"></a> <span class="c1">// They might be interested - see notifyNewLoadingProcess below</span>
<a name="line-168"></a>
<a name="line-169"></a> <span class="n">cache</span><span class="o">-&gt;</span><span class="n">notifyNewLoadingProcess</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">m_loadingDescription</span><span class="p">);</span>
<a name="line-170"></a> <span class="p">}</span>
<a name="line-171"></a> <span class="p">}</span>
<a name="line-172"></a> <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">continueQuery</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">m_qimage</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-175"></a> <span class="p">{</span>
<a name="line-176"></a> <span class="c1">// Load or create thumbnail</span>
<a name="line-177"></a>
<a name="line-178"></a> <span class="n">setupCreator</span><span class="p">();</span>
<a name="line-179"></a>
<a name="line-180"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">previewParameters</span><span class="p">.</span><span class="n">type</span><span class="p">)</span>
<a name="line-181"></a> <span class="p">{</span>
<a name="line-182"></a> <span class="k">case</span> <span class="n">LoadingDescription</span><span class="o">::</span><span class="n">PreviewParameters</span><span class="o">::</span><span class="nl">Thumbnail</span><span class="p">:</span>
<a name="line-183"></a> <span class="n">m_qimage</span> <span class="o">=</span> <span class="n">m_creator</span><span class="o">-&gt;</span><span class="n">load</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">thumbnailIdentifier</span><span class="p">());</span>
<a name="line-184"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-185"></a>
<a name="line-186"></a> <span class="k">case</span> <span class="n">LoadingDescription</span><span class="o">::</span><span class="n">PreviewParameters</span><span class="o">::</span><span class="nl">DetailThumbnail</span><span class="p">:</span>
<a name="line-187"></a> <span class="n">m_qimage</span> <span class="o">=</span> <span class="n">m_creator</span><span class="o">-&gt;</span><span class="n">loadDetail</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">thumbnailIdentifier</span><span class="p">(),</span>
<a name="line-188"></a> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">previewParameters</span><span class="p">.</span><span class="n">extraParameter</span><span class="p">.</span><span class="n">toRect</span><span class="p">());</span>
<a name="line-189"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-190"></a>
<a name="line-191"></a> <span class="k">default</span><span class="o">:</span>
<a name="line-192"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-193"></a> <span class="p">}</span>
<a name="line-194"></a>
<a name="line-195"></a> <span class="k">if</span> <span class="p">(</span><span class="n">continueQuery</span><span class="p">())</span>
<a name="line-196"></a> <span class="p">{</span>
<a name="line-197"></a> <span class="n">LoadingCache</span><span class="o">::</span><span class="n">CacheLock</span> <span class="n">lock</span><span class="p">(</span><span class="n">cache</span><span class="p">);</span>
<a name="line-198"></a>
<a name="line-199"></a> <span class="c1">// put valid image into cache of loaded images</span>
<a name="line-200"></a>
<a name="line-201"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">m_qimage</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-202"></a> <span class="p">{</span>
<a name="line-203"></a> <span class="n">cache</span><span class="o">-&gt;</span><span class="n">putThumbnail</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">cacheKey</span><span class="p">(),</span> <span class="n">m_qimage</span><span class="p">,</span>
<a name="line-204"></a> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">filePath</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="c1">// remove this from the list of loading processes in cache</span>
<a name="line-208"></a>
<a name="line-209"></a> <span class="n">cache</span><span class="o">-&gt;</span><span class="n">removeLoadingProcess</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-210"></a>
<a name="line-211"></a> <span class="c1">// dispatch image to all listeners</span>
<a name="line-212"></a>
<a name="line-213"></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_listeners</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-214"></a> <span class="p">{</span>
<a name="line-215"></a> <span class="n">ThumbnailLoadingTask</span><span class="o">*</span> <span class="k">const</span> <span class="n">task</span> <span class="o">=</span> <span class="k">dynamic_cast</span><span class="o">&lt;</span><span class="n">ThumbnailLoadingTask</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">m_listeners</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-216"></a>
<a name="line-217"></a> <span class="k">if</span> <span class="p">(</span><span class="n">task</span><span class="p">)</span>
<a name="line-218"></a> <span class="p">{</span>
<a name="line-219"></a> <span class="n">task</span><span class="o">-&gt;</span><span class="n">setThumbResult</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">,</span> <span class="n">m_qimage</span><span class="p">);</span>
<a name="line-220"></a> <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="c1">// remove myself from list of listeners</span>
<a name="line-224"></a>
<a name="line-225"></a> <span class="n">removeListener</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-226"></a>
<a name="line-227"></a> <span class="c1">// indicate that loading has finished so that listeners can stop waiting</span>
<a name="line-228"></a>
<a name="line-229"></a> <span class="n">m_completed</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-230"></a>
<a name="line-231"></a> <span class="c1">// wake all listeners waiting on cache condVar, so that they remove themselves</span>
<a name="line-232"></a>
<a name="line-233"></a> <span class="n">lock</span><span class="p">.</span><span class="n">wakeAll</span><span class="p">();</span>
<a name="line-234"></a>
<a name="line-235"></a> <span class="c1">// wait until all listeners have removed themselves</span>
<a name="line-236"></a>
<a name="line-237"></a> <span class="k">while</span> <span class="p">(</span><span class="n">m_listeners</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-238"></a> <span class="p">{</span>
<a name="line-239"></a> <span class="n">lock</span><span class="p">.</span><span class="n">timedWait</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="c1">// set to 0, as checked in setStatus</span>
<a name="line-243"></a>
<a name="line-244"></a> <span class="n">m_usedProcess</span> <span class="o">=</span> <span class="k">nullptr</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="c1">// following the golden rule to avoid deadlocks, do this when CacheLock is not held</span>
<a name="line-249"></a>
<a name="line-250"></a> <span class="k">if</span> <span class="p">(</span><span class="n">continueQuery</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">m_qimage</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-251"></a> <span class="p">{</span>
<a name="line-252"></a> <span class="n">postProcess</span><span class="p">();</span>
<a name="line-253"></a> <span class="p">}</span>
<a name="line-254"></a> <span class="k">else</span>
<a name="line-255"></a> <span class="p">{</span>
<a name="line-256"></a> <span class="n">m_qimage</span> <span class="o">=</span> <span class="n">QImage</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">m_thread</span><span class="o">-&gt;</span><span class="n">taskHasFinished</span><span class="p">();</span>
<a name="line-260"></a> <span class="n">m_thread</span><span class="o">-&gt;</span><span class="n">thumbnailLoaded</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">,</span> <span class="n">m_qimage</span><span class="p">);</span>
<a name="line-261"></a><span class="p">}</span>
<a name="line-262"></a>
<a name="line-263"></a><span class="kt">void</span> <span class="n">ThumbnailLoadingTask</span><span class="o">::</span><span class="n">setupCreator</span><span class="p">()</span>
<a name="line-264"></a><span class="p">{</span>
<a name="line-265"></a> <span class="n">m_creator</span><span class="o">-&gt;</span><span class="n">setThumbnailSize</span><span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">previewParameters</span><span class="p">.</span><span class="n">size</span><span class="p">);</span>
<a name="line-266"></a> <span class="n">m_creator</span><span class="o">-&gt;</span><span class="n">setExifRotate</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">exifRotate</span><span class="p">);</span>
<a name="line-267"></a> <span class="n">m_creator</span><span class="o">-&gt;</span><span class="n">setLoadingProperties</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">rawDecodingSettings</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">ThumbnailLoadingTask</span><span class="o">::</span><span class="n">setThumbResult</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">QImage</span><span class="o">&amp;</span> <span class="n">qimage</span><span class="p">)</span>
<a name="line-271"></a><span class="p">{</span>
<a name="line-272"></a> <span class="c1">// this is called from another process&#39;s execute while this task is waiting on m_usedProcess.</span>
<a name="line-273"></a> <span class="c1">// Note that loadingDescription need not equal m_loadingDescription (may be superior)</span>
<a name="line-274"></a>
<a name="line-275"></a> <span class="n">LoadingDescription</span> <span class="n">tempDescription</span> <span class="o">=</span> <span class="n">loadingDescription</span><span class="p">;</span>
<a name="line-276"></a>
<a name="line-277"></a> <span class="c1">// these are taken from our own description</span>
<a name="line-278"></a>
<a name="line-279"></a> <span class="n">tempDescription</span><span class="p">.</span><span class="n">postProcessingParameters</span> <span class="o">=</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">postProcessingParameters</span><span class="p">;</span>
<a name="line-280"></a> <span class="n">m_loadingDescription</span> <span class="o">=</span> <span class="n">tempDescription</span><span class="p">;</span>
<a name="line-281"></a> <span class="n">m_qimage</span> <span class="o">=</span> <span class="n">qimage</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="kt">void</span> <span class="n">ThumbnailLoadingTask</span><span class="o">::</span><span class="n">postProcess</span><span class="p">()</span>
<a name="line-285"></a><span class="p">{</span>
<a name="line-286"></a> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">postProcessingParameters</span><span class="p">.</span><span class="n">profile</span><span class="p">().</span><span class="n">description</span><span class="p">();</span>
<a name="line-287"></a>
<a name="line-288"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">postProcessingParameters</span><span class="p">.</span><span class="n">colorManagement</span><span class="p">)</span>
<a name="line-289"></a> <span class="p">{</span>
<a name="line-290"></a> <span class="k">case</span> <span class="n">LoadingDescription</span><span class="o">::</span><span class="nl">NoColorConversion</span><span class="p">:</span>
<a name="line-291"></a> <span class="p">{</span>
<a name="line-292"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-293"></a> <span class="p">}</span>
<a name="line-294"></a>
<a name="line-295"></a> <span class="k">case</span> <span class="n">LoadingDescription</span><span class="o">::</span><span class="nl">ConvertToSRGB</span><span class="p">:</span>
<a name="line-296"></a> <span class="p">{</span>
<a name="line-297"></a> <span class="c1">// Thumbnails are stored in sRGB</span>
<a name="line-298"></a> <span class="k">break</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="k">case</span> <span class="n">LoadingDescription</span><span class="o">::</span><span class="nl">ConvertForDisplay</span><span class="p">:</span>
<a name="line-302"></a> <span class="p">{</span>
<a name="line-303"></a> <span class="n">IccManager</span><span class="o">::</span><span class="n">transformForDisplay</span><span class="p">(</span><span class="n">m_qimage</span><span class="p">,</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">postProcessingParameters</span><span class="p">.</span><span class="n">profile</span><span class="p">());</span>
<a name="line-304"></a> <span class="k">break</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="k">default</span><span class="o">:</span>
<a name="line-308"></a> <span class="p">{</span>
<a name="line-309"></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;Unsupported postprocessing parameter for thumbnail loading:&quot;</span>
<a name="line-310"></a> <span class="o">&lt;&lt;</span> <span class="n">m_loadingDescription</span><span class="p">.</span><span class="n">postProcessingParameters</span><span class="p">.</span><span class="n">colorManagement</span><span class="p">;</span>
<a name="line-311"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-312"></a> <span class="p">}</span>
<a name="line-313"></a> <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="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/42.html b/static/reports/cppcheck/master/42.html
index ea7c15a38..f5a6134b7 100644
--- a/static/reports/cppcheck/master/42.html
+++ b/static/reports/cppcheck/master/42.html
@@ -1,1045 +1,1045 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/libs/video/manager/vidslidetask.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/libs/video/manager/vidslidetask.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> vidslidetask.cpp</p>
<a href='42.html#line-363'> shadowVar 363</a><a href='42.html#line-382'> shadowVar 382</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</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 : 2017-05-25</span>
<a name="line-7"></a><span class="cm"> * Description : a tool to generate video slideshow from 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;vidslidetask.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">// QtAv includes</span>
<a name="line-42"></a>
<a name="line-43"></a><span class="cp">#include</span> <span class="cpf">&lt;QtAV/VideoFrame.h&gt; // krazy:exclude=includes</span><span class="cp"></span>
<a name="line-44"></a><span class="cp">#include</span> <span class="cpf">&lt;QtAV/AudioFrame.h&gt; // krazy:exclude=includes</span><span class="cp"></span>
<a name="line-45"></a><span class="cp">#include</span> <span class="cpf">&lt;QtAV/VideoEncoder.h&gt; // krazy:exclude=includes</span><span class="cp"></span>
<a name="line-46"></a><span class="cp">#include</span> <span class="cpf">&lt;QtAV/AudioEncoder.h&gt; // krazy:exclude=includes</span><span class="cp"></span>
<a name="line-47"></a><span class="cp">#include</span> <span class="cpf">&lt;QtAV/AudioDecoder.h&gt; // krazy:exclude=includes</span><span class="cp"></span>
<a name="line-48"></a><span class="cp">#include</span> <span class="cpf">&lt;QtAV/AVMuxer.h&gt; // krazy:exclude=includes</span><span class="cp"></span>
<a name="line-49"></a><span class="cp">#include</span> <span class="cpf">&lt;QtAV/AVDemuxer.h&gt; // krazy:exclude=includes</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;frameutils.h&quot;</span><span class="cp"></span>
<a name="line-54"></a><span class="cp">#include</span> <span class="cpf">&quot;dfileoperations.h&quot;</span><span class="cp"></span>
<a name="line-55"></a><span class="cp">#include</span> <span class="cpf">&quot;transitionmngr.h&quot;</span><span class="cp"></span>
<a name="line-56"></a><span class="cp">#include</span> <span class="cpf">&quot;effectmngr.h&quot;</span><span class="cp"></span>
<a name="line-57"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.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>
<a name="line-60"></a><span class="k">using</span> <span class="k">namespace</span> <span class="n">QtAV</span><span class="p">;</span>
<a name="line-61"></a>
<a name="line-62"></a><span class="k">namespace</span> <span class="n">Digikam</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="n">VidSlideTask</span><span class="o">::</span><span class="n">Private</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">Private</span><span class="p">()</span>
<a name="line-70"></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-71"></a> <span class="n">astream</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
<a name="line-72"></a> <span class="n">adec</span><span class="p">(</span><span class="n">AudioDecoder</span><span class="o">::</span><span class="n">create</span><span class="p">(</span><span class="s">&quot;FFmpeg&quot;</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>
<a name="line-76"></a> <span class="o">~</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">adec</span><span class="o">-&gt;</span><span class="n">close</span><span class="p">();</span>
<a name="line-79"></a> <span class="p">}</span>
<a name="line-80"></a>
<a name="line-81"></a> <span class="kt">bool</span> <span class="n">encodeFrame</span><span class="p">(</span><span class="n">VideoFrame</span><span class="o">&amp;</span> <span class="n">vframe</span><span class="p">,</span>
<a name="line-82"></a> <span class="n">VideoEncoder</span><span class="o">*</span> <span class="k">const</span> <span class="n">venc</span><span class="p">,</span>
<a name="line-83"></a> <span class="n">AudioEncoder</span><span class="o">*</span> <span class="k">const</span> <span class="n">aenc</span><span class="p">,</span>
<a name="line-84"></a> <span class="n">AVMuxer</span><span class="o">&amp;</span> <span class="n">mux</span><span class="p">);</span>
<a name="line-85"></a>
<a name="line-86"></a> <span class="n">AudioFrame</span> <span class="nf">nextAudioFrame</span><span class="p">(</span><span class="k">const</span> <span class="n">AudioFormat</span><span class="o">&amp;</span> <span class="n">afmt</span><span class="p">);</span>
<a name="line-87"></a>
<a name="line-88"></a><span class="k">public</span><span class="o">:</span>
<a name="line-89"></a>
<a name="line-90"></a> <span class="n">VidSlideSettings</span><span class="o">*</span> <span class="n">settings</span><span class="p">;</span>
<a name="line-91"></a>
<a name="line-92"></a> <span class="n">AVDemuxer</span> <span class="n">demuxer</span><span class="p">;</span>
<a name="line-93"></a> <span class="n">Packet</span> <span class="n">apkt</span><span class="p">;</span>
<a name="line-94"></a> <span class="kt">int</span> <span class="n">astream</span><span class="p">;</span>
<a name="line-95"></a> <span class="n">AudioDecoder</span><span class="o">*</span> <span class="n">adec</span><span class="p">;</span>
<a name="line-96"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QUrl</span><span class="o">&gt;::</span><span class="n">const_iterator</span> <span class="n">curAudioFile</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">bool</span> <span class="n">VidSlideTask</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">encodeFrame</span><span class="p">(</span><span class="n">VideoFrame</span><span class="o">&amp;</span> <span class="n">vframe</span><span class="p">,</span>
<a name="line-100"></a> <span class="n">VideoEncoder</span><span class="o">*</span> <span class="k">const</span> <span class="n">venc</span><span class="p">,</span>
<a name="line-101"></a> <span class="n">AudioEncoder</span><span class="o">*</span> <span class="k">const</span> <span class="n">aenc</span><span class="p">,</span>
<a name="line-102"></a> <span class="n">AVMuxer</span><span class="o">&amp;</span> <span class="n">mux</span><span class="p">)</span>
<a name="line-103"></a><span class="p">{</span>
<a name="line-104"></a> <span class="n">Packet</span> <span class="n">apkt</span><span class="p">;</span>
<a name="line-105"></a> <span class="n">Packet</span> <span class="n">vpkt</span><span class="p">;</span>
<a name="line-106"></a>
<a name="line-107"></a> <span class="k">if</span> <span class="p">(</span><span class="n">curAudioFile</span> <span class="o">!=</span> <span class="n">settings</span><span class="o">-&gt;</span><span class="n">inputAudio</span><span class="p">.</span><span class="n">constEnd</span><span class="p">())</span>
<a name="line-108"></a> <span class="p">{</span>
<a name="line-109"></a> <span class="n">AudioFrame</span> <span class="n">aframe</span> <span class="o">=</span> <span class="n">nextAudioFrame</span><span class="p">(</span><span class="n">aenc</span><span class="o">-&gt;</span><span class="n">audioFormat</span><span class="p">());</span>
<a name="line-110"></a>
<a name="line-111"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">apkt</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-112"></a> <span class="p">{</span>
<a name="line-113"></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;Invalid audio frame&quot;</span><span class="p">;</span>
<a name="line-114"></a> <span class="p">}</span>
<a name="line-115"></a> <span class="k">else</span>
<a name="line-116"></a> <span class="p">{</span>
<a name="line-117"></a> <span class="k">if</span> <span class="p">(</span><span class="n">aenc</span><span class="o">-&gt;</span><span class="n">encode</span><span class="p">(</span><span class="n">aframe</span><span class="p">))</span>
<a name="line-118"></a> <span class="p">{</span>
<a name="line-119"></a> <span class="n">apkt</span> <span class="o">=</span> <span class="n">aenc</span><span class="o">-&gt;</span><span class="n">encoded</span><span class="p">();</span>
<a name="line-120"></a> <span class="p">}</span>
<a name="line-121"></a> <span class="k">else</span>
<a name="line-122"></a> <span class="p">{</span>
<a name="line-123"></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 encode audio frame&quot;</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> <span class="p">}</span>
<a name="line-127"></a>
<a name="line-128"></a> <span class="k">if</span> <span class="p">(</span><span class="n">vframe</span><span class="p">.</span><span class="n">pixelFormat</span><span class="p">()</span> <span class="o">!=</span> <span class="n">venc</span><span class="o">-&gt;</span><span class="n">pixelFormat</span><span class="p">())</span>
<a name="line-129"></a> <span class="p">{</span>
<a name="line-130"></a> <span class="n">vframe</span> <span class="o">=</span> <span class="n">vframe</span><span class="p">.</span><span class="n">to</span><span class="p">(</span><span class="n">venc</span><span class="o">-&gt;</span><span class="n">pixelFormat</span><span class="p">());</span>
<a name="line-131"></a> <span class="p">}</span>
<a name="line-132"></a>
<a name="line-133"></a> <span class="k">if</span> <span class="p">(</span><span class="n">venc</span><span class="o">-&gt;</span><span class="n">encode</span><span class="p">(</span><span class="n">vframe</span><span class="p">))</span>
<a name="line-134"></a> <span class="p">{</span>
<a name="line-135"></a> <span class="n">vpkt</span> <span class="o">=</span> <span class="n">venc</span><span class="o">-&gt;</span><span class="n">encoded</span><span class="p">();</span>
<a name="line-136"></a>
<a name="line-137"></a> <span class="k">if</span> <span class="p">(</span><span class="n">vpkt</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-138"></a> <span class="n">mux</span><span class="p">.</span><span class="n">writeVideo</span><span class="p">(</span><span class="n">vpkt</span><span class="p">);</span>
<a name="line-139"></a>
<a name="line-140"></a> <span class="k">if</span> <span class="p">(</span><span class="n">apkt</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-141"></a> <span class="n">mux</span><span class="p">.</span><span class="n">writeAudio</span><span class="p">(</span><span class="n">apkt</span><span class="p">);</span>
<a name="line-142"></a>
<a name="line-143"></a> <span class="k">return</span> <span class="nb">true</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="k">return</span> <span class="nb">false</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">AudioFrame</span> <span class="n">VidSlideTask</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">nextAudioFrame</span><span class="p">(</span><span class="k">const</span> <span class="n">AudioFormat</span><span class="o">&amp;</span> <span class="n">afmt</span><span class="p">)</span>
<a name="line-150"></a><span class="p">{</span>
<a name="line-151"></a> <span class="k">if</span> <span class="p">(</span><span class="n">curAudioFile</span> <span class="o">==</span> <span class="n">settings</span><span class="o">-&gt;</span><span class="n">inputAudio</span><span class="p">.</span><span class="n">constEnd</span><span class="p">())</span>
<a name="line-152"></a> <span class="k">return</span> <span class="n">AudioFrame</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="n">demuxer</span><span class="p">.</span><span class="n">atEnd</span><span class="p">()</span> <span class="o">||</span> <span class="n">demuxer</span><span class="p">.</span><span class="n">fileName</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-155"></a> <span class="p">{</span>
<a name="line-156"></a> <span class="k">if</span> <span class="p">(</span><span class="n">demuxer</span><span class="p">.</span><span class="n">fileName</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-157"></a> <span class="p">{</span>
<a name="line-158"></a> <span class="n">curAudioFile</span> <span class="o">=</span> <span class="n">settings</span><span class="o">-&gt;</span><span class="n">inputAudio</span><span class="p">.</span><span class="n">constBegin</span><span class="p">();</span>
<a name="line-159"></a> <span class="p">}</span>
<a name="line-160"></a> <span class="k">else</span>
<a name="line-161"></a> <span class="p">{</span>
<a name="line-162"></a> <span class="o">++</span><span class="n">curAudioFile</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="k">if</span> <span class="p">(</span><span class="n">curAudioFile</span> <span class="o">!=</span> <span class="n">settings</span><span class="o">-&gt;</span><span class="n">inputAudio</span><span class="p">.</span><span class="n">constEnd</span><span class="p">())</span>
<a name="line-166"></a> <span class="p">{</span>
<a name="line-167"></a> <span class="n">demuxer</span><span class="p">.</span><span class="n">setMedia</span><span class="p">((</span><span class="o">*</span><span class="n">curAudioFile</span><span class="p">).</span><span class="n">toLocalFile</span><span class="p">());</span>
<a name="line-168"></a>
<a name="line-169"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">demuxer</span><span class="p">.</span><span class="n">load</span><span class="p">())</span>
<a name="line-170"></a> <span class="p">{</span>
<a name="line-171"></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 open audio file&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">demuxer</span><span class="p">.</span><span class="n">fileName</span><span class="p">();</span>
<a name="line-172"></a> <span class="k">return</span> <span class="nf">AudioFrame</span><span class="p">();</span>
<a name="line-173"></a> <span class="p">}</span>
<a name="line-174"></a>
<a name="line-175"></a> <span class="n">adec</span><span class="o">-&gt;</span><span class="n">setCodecContext</span><span class="p">(</span><span class="n">demuxer</span><span class="p">.</span><span class="n">audioCodecContext</span><span class="p">());</span>
<a name="line-176"></a>
<a name="line-177"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">adec</span><span class="o">-&gt;</span><span class="n">open</span><span class="p">())</span>
<a name="line-178"></a> <span class="p">{</span>
<a name="line-179"></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 open audio stream in decode&quot;</span>
<a name="line-180"></a> <span class="o">&lt;&lt;</span> <span class="n">demuxer</span><span class="p">.</span><span class="n">fileName</span><span class="p">();</span>
<a name="line-181"></a> <span class="k">return</span> <span class="nf">AudioFrame</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> <span class="k">else</span>
<a name="line-185"></a> <span class="p">{</span>
<a name="line-186"></a> <span class="k">return</span> <span class="n">AudioFrame</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>
<a name="line-190"></a> <span class="k">while</span> <span class="p">(</span><span class="o">!</span><span class="n">demuxer</span><span class="p">.</span><span class="n">atEnd</span><span class="p">())</span>
<a name="line-191"></a> <span class="p">{</span>
<a name="line-192"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">apkt</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</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="o">!</span><span class="n">demuxer</span><span class="p">.</span><span class="n">readFrame</span><span class="p">()</span> <span class="o">||</span> <span class="p">(</span><span class="n">demuxer</span><span class="p">.</span><span class="n">stream</span><span class="p">()</span> <span class="o">!=</span> <span class="n">astream</span><span class="p">))</span>
<a name="line-195"></a> <span class="k">continue</span><span class="p">;</span>
<a name="line-196"></a>
<a name="line-197"></a> <span class="n">apkt</span> <span class="o">=</span> <span class="n">demuxer</span><span class="p">.</span><span class="n">packet</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="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">adec</span><span class="o">-&gt;</span><span class="n">decode</span><span class="p">(</span><span class="n">apkt</span><span class="p">))</span>
<a name="line-201"></a> <span class="p">{</span>
<a name="line-202"></a> <span class="n">apkt</span> <span class="o">=</span> <span class="n">Packet</span><span class="p">();</span>
<a name="line-203"></a> <span class="k">continue</span><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="n">apkt</span><span class="p">.</span><span class="n">data</span> <span class="o">=</span> <span class="n">QByteArray</span><span class="o">::</span><span class="n">fromRawData</span><span class="p">(</span><span class="n">apkt</span><span class="p">.</span><span class="n">data</span><span class="p">.</span><span class="n">constData</span><span class="p">()</span> <span class="o">+</span> <span class="n">apkt</span><span class="p">.</span><span class="n">data</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">-</span>
<a name="line-207"></a> <span class="n">adec</span><span class="o">-&gt;</span><span class="n">undecodedSize</span><span class="p">(),</span> <span class="n">adec</span><span class="o">-&gt;</span><span class="n">undecodedSize</span><span class="p">());</span>
<a name="line-208"></a>
<a name="line-209"></a> <span class="n">AudioFrame</span> <span class="n">aframe</span> <span class="o">=</span> <span class="n">adec</span><span class="o">-&gt;</span><span class="n">frame</span><span class="p">();</span>
<a name="line-210"></a>
<a name="line-211"></a> <span class="k">if</span> <span class="p">(</span><span class="n">aframe</span><span class="p">.</span><span class="n">format</span><span class="p">()</span> <span class="o">!=</span> <span class="n">afmt</span><span class="p">)</span>
<a name="line-212"></a> <span class="p">{</span>
<a name="line-213"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Audio transcoding:&quot;</span><span class="p">;</span>
<a name="line-214"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;current format =&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">aframe</span><span class="p">.</span><span class="n">format</span><span class="p">();</span>
<a name="line-215"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;target format =&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">afmt</span><span class="p">;</span>
<a name="line-216"></a><span class="cm">/*</span>
<a name="line-217"></a><span class="cm"> adec-&gt;resampler()-&gt;setOutAudioFormat(afmt);</span>
<a name="line-218"></a><span class="cm"> adec-&gt;resampler()-&gt;prepare();</span>
<a name="line-219"></a><span class="cm"> aframe.setAudioResampler(adec-&gt;resampler());</span>
<a name="line-220"></a><span class="cm">*/</span>
<a name="line-221"></a> <span class="n">aframe</span> <span class="o">=</span> <span class="n">aframe</span><span class="p">.</span><span class="n">to</span><span class="p">(</span><span class="n">afmt</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="k">return</span> <span class="n">aframe</span><span class="p">;</span>
<a name="line-225"></a> <span class="p">}</span>
<a name="line-226"></a>
<a name="line-227"></a> <span class="k">return</span> <span class="n">AudioFrame</span><span class="p">();</span>
<a name="line-228"></a><span class="p">}</span>
<a name="line-229"></a>
<a name="line-230"></a><span class="c1">// -------------------------------------------------------</span>
<a name="line-231"></a>
<a name="line-232"></a><span class="n">VidSlideTask</span><span class="o">::</span><span class="n">VidSlideTask</span><span class="p">(</span><span class="n">VidSlideSettings</span><span class="o">*</span> <span class="k">const</span> <span class="n">settings</span><span class="p">)</span>
<a name="line-233"></a> <span class="o">:</span> <span class="n">ActionJob</span><span class="p">(),</span>
<a name="line-234"></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-235"></a><span class="p">{</span>
<a name="line-236"></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-237"></a>
<a name="line-238"></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">inputAudio</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-239"></a> <span class="p">{</span>
<a name="line-240"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">curAudioFile</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">inputAudio</span><span class="p">.</span><span class="n">constEnd</span><span class="p">();</span>
<a name="line-241"></a> <span class="p">}</span>
<a name="line-242"></a><span class="p">}</span>
<a name="line-243"></a>
<a name="line-244"></a><span class="n">VidSlideTask</span><span class="o">::~</span><span class="n">VidSlideTask</span><span class="p">()</span>
<a name="line-245"></a><span class="p">{</span>
<a name="line-246"></a> <span class="n">cancel</span><span class="p">();</span>
<a name="line-247"></a> <span class="k">delete</span> <span class="n">d</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">VidSlideTask</span><span class="o">::</span><span class="n">run</span><span class="p">()</span>
<a name="line-251"></a><span class="p">{</span>
<a name="line-252"></a> <span class="c1">// ---------------------------------------------</span>
<a name="line-253"></a> <span class="c1">// Setup output video file</span>
<a name="line-254"></a>
<a name="line-255"></a> <span class="n">QUrl</span> <span class="n">dest</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">outputDir</span><span class="p">;</span>
<a name="line-256"></a> <span class="n">dest</span> <span class="o">=</span> <span class="n">dest</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">StripTrailingSlash</span><span class="p">);</span>
<a name="line-257"></a> <span class="n">dest</span><span class="p">.</span><span class="n">setPath</span><span class="p">(</span><span class="n">dest</span><span class="p">.</span><span class="n">path</span><span class="p">()</span> <span class="o">+</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;/videoslideshow.&quot;</span><span class="p">)</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">videoFormat</span><span class="p">());</span>
<a name="line-258"></a> <span class="n">QString</span> <span class="n">outFile</span> <span class="o">=</span> <span class="n">dest</span><span class="p">.</span><span class="n">toLocalFile</span><span class="p">();</span>
<a name="line-259"></a> <span class="n">QFileInfo</span> <span class="nf">fi</span><span class="p">(</span><span class="n">outFile</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">fi</span><span class="p">.</span><span class="n">exists</span><span class="p">()</span> <span class="o">&amp;&amp;</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">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-262"></a> <span class="p">{</span>
<a name="line-263"></a> <span class="n">outFile</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">dest</span><span class="p">).</span><span class="n">toLocalFile</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="c1">// ---------------------------------------------</span>
<a name="line-267"></a> <span class="c1">// Setup Video Encoder</span>
<a name="line-268"></a>
<a name="line-269"></a> <span class="n">VideoEncoder</span><span class="o">*</span> <span class="k">const</span> <span class="n">venc</span> <span class="o">=</span> <span class="n">VideoEncoder</span><span class="o">::</span><span class="n">create</span><span class="p">(</span><span class="s">&quot;FFmpeg&quot;</span><span class="p">);</span>
<a name="line-270"></a> <span class="n">venc</span><span class="o">-&gt;</span><span class="n">setCodecName</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">videoCodec</span><span class="p">());</span>
<a name="line-271"></a> <span class="n">venc</span><span class="o">-&gt;</span><span class="n">setBitRate</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">videoBitRate</span><span class="p">());</span>
<a name="line-272"></a> <span class="n">venc</span><span class="o">-&gt;</span><span class="n">setFrameRate</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">videoFrameRate</span><span class="p">());</span>
<a name="line-273"></a>
<a name="line-274"></a> <span class="n">QSize</span> <span class="n">osize</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">videoSize</span><span class="p">();</span>
<a name="line-275"></a> <span class="n">venc</span><span class="o">-&gt;</span><span class="n">setWidth</span><span class="p">(</span><span class="n">osize</span><span class="p">.</span><span class="n">width</span><span class="p">());</span>
<a name="line-276"></a> <span class="n">venc</span><span class="o">-&gt;</span><span class="n">setHeight</span><span class="p">(</span><span class="n">osize</span><span class="p">.</span><span class="n">height</span><span class="p">());</span>
<a name="line-277"></a>
<a name="line-278"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">venc</span><span class="o">-&gt;</span><span class="n">open</span><span class="p">())</span>
<a name="line-279"></a> <span class="p">{</span>
<a name="line-280"></a> <span class="n">emit</span> <span class="n">signalMessage</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to open video encoder&quot;</span><span class="p">),</span> <span class="nb">true</span><span class="p">);</span>
<a name="line-281"></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 open video encoder&quot;</span><span class="p">;</span>
<a name="line-282"></a> <span class="n">emit</span> <span class="nf">signalDone</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-283"></a> <span class="k">return</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="c1">// ---------------------------------------------</span>
<a name="line-287"></a> <span class="c1">// Setup Audio Encoder</span>
<a name="line-288"></a>
<a name="line-289"></a> <span class="n">AudioEncoder</span><span class="o">*</span> <span class="k">const</span> <span class="n">aenc</span> <span class="o">=</span> <span class="n">AudioEncoder</span><span class="o">::</span><span class="n">create</span><span class="p">(</span><span class="s">&quot;FFmpeg&quot;</span><span class="p">);</span>
<a name="line-290"></a> <span class="n">aenc</span><span class="o">-&gt;</span><span class="n">setCodecName</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;mp2&quot;</span><span class="p">));</span>
<a name="line-291"></a> <span class="n">aenc</span><span class="o">-&gt;</span><span class="n">setBitRate</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">abitRate</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="o">!</span><span class="n">aenc</span><span class="o">-&gt;</span><span class="n">open</span><span class="p">())</span>
<a name="line-294"></a> <span class="p">{</span>
<a name="line-295"></a> <span class="n">emit</span> <span class="n">signalMessage</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to open audio encoder&quot;</span><span class="p">),</span> <span class="nb">true</span><span class="p">);</span>
<a name="line-296"></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 open audio encoder&quot;</span><span class="p">;</span>
<a name="line-297"></a> <span class="n">emit</span> <span class="nf">signalDone</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-298"></a> <span class="k">return</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="c1">// ---------------------------------------------</span>
<a name="line-302"></a> <span class="c1">// Setup Muxer</span>
<a name="line-303"></a>
<a name="line-304"></a> <span class="n">AVMuxer</span> <span class="n">mux</span><span class="p">;</span>
<a name="line-305"></a> <span class="n">mux</span><span class="p">.</span><span class="n">setMedia</span><span class="p">(</span><span class="n">outFile</span><span class="p">);</span>
<a name="line-306"></a> <span class="n">mux</span><span class="p">.</span><span class="n">copyProperties</span><span class="p">(</span><span class="n">venc</span><span class="p">);</span> <span class="c1">// Setup video encoder</span>
<a name="line-307"></a> <span class="n">mux</span><span class="p">.</span><span class="n">copyProperties</span><span class="p">(</span><span class="n">aenc</span><span class="p">);</span> <span class="c1">// Setup audio encoder</span>
<a name="line-308"></a><span class="cm">/*</span>
<a name="line-309"></a><span class="cm"> // Segments muxer ffmpeg options. See : https://www.ffmpeg.org/ffmpeg-formats.html#Options-11</span>
<a name="line-310"></a><span class="cm"> QVariantHash avfopt;</span>
<a name="line-311"></a><span class="cm"> avfopt[QLatin1String(&quot;segment_time&quot;)] = 4;</span>
<a name="line-312"></a><span class="cm"> avfopt[QLatin1String(&quot;segment_list_size&quot;)] = 0;</span>
<a name="line-313"></a><span class="cm"> avfopt[QLatin1String(&quot;segment_format&quot;)] = QLatin1String(&quot;mpegts&quot;);</span>
<a name="line-314"></a><span class="cm"> avfopt[QLatin1String(&quot;segment_list&quot;)] = outFile.left(outFile.lastIndexOf(QLatin1Char(&#39;/&#39;))+1)</span>
<a name="line-315"></a><span class="cm"> .append(QLatin1String(&quot;index.m3u8&quot;));</span>
<a name="line-316"></a><span class="cm"> QVariantHash muxopt;</span>
<a name="line-317"></a><span class="cm"> muxopt[QLatin1String(&quot;avformat&quot;)] = avfopt;</span>
<a name="line-318"></a>
<a name="line-319"></a><span class="cm"> mux.setOptions(muxopt);</span>
<a name="line-320"></a><span class="cm">*/</span>
<a name="line-321"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">mux</span><span class="p">.</span><span class="n">open</span><span class="p">())</span>
<a name="line-322"></a> <span class="p">{</span>
<a name="line-323"></a> <span class="n">emit</span> <span class="n">signalMessage</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Failed to open muxer&quot;</span><span class="p">),</span> <span class="nb">true</span><span class="p">);</span>
<a name="line-324"></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 open muxer&quot;</span><span class="p">;</span>
<a name="line-325"></a> <span class="n">emit</span> <span class="nf">signalDone</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-326"></a> <span class="k">return</span><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">QImage</span> <span class="n">qiimg</span><span class="p">;</span>
<a name="line-330"></a>
<a name="line-331"></a> <span class="c1">// ---------------------------------------------</span>
<a name="line-332"></a> <span class="c1">// Loop to encode frames with images list</span>
<a name="line-333"></a>
<a name="line-334"></a> <span class="n">TransitionMngr</span> <span class="n">transmngr</span><span class="p">;</span>
<a name="line-335"></a> <span class="n">transmngr</span><span class="p">.</span><span class="n">setOutputSize</span><span class="p">(</span><span class="n">osize</span><span class="p">);</span>
<a name="line-336"></a>
<a name="line-337"></a> <span class="n">EffectMngr</span> <span class="n">effmngr</span><span class="p">;</span>
<a name="line-338"></a> <span class="n">effmngr</span><span class="p">.</span><span class="n">setOutputSize</span><span class="p">(</span><span class="n">osize</span><span class="p">);</span>
<a name="line-339"></a> <span class="n">effmngr</span><span class="p">.</span><span class="n">setFrames</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">imgFrames</span><span class="p">);</span>
<a name="line-340"></a>
<a name="line-341"></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">inputImages</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="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">i</span><span class="p">)</span>
<a name="line-342"></a> <span class="p">{</span>
<a name="line-343"></a> <span class="k">if</span> <span class="p">(</span><span class="n">i</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-344"></a> <span class="p">{</span>
<a name="line-345"></a> <span class="n">qiimg</span> <span class="o">=</span> <span class="n">FrameUtils</span><span class="o">::</span><span class="n">makeFramedImage</span><span class="p">(</span><span class="n">QString</span><span class="p">(),</span> <span class="n">osize</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">QString</span> <span class="n">ofile</span><span class="p">;</span>
<a name="line-349"></a>
<a name="line-350"></a> <span class="k">if</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">inputImages</span><span class="p">.</span><span class="n">count</span><span class="p">())</span>
<a name="line-351"></a> <span class="p">{</span>
<a name="line-352"></a> <span class="n">ofile</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">inputImages</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">toLocalFile</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">QImage</span> <span class="n">qoimg</span> <span class="o">=</span> <span class="n">FrameUtils</span><span class="o">::</span><span class="n">makeFramedImage</span><span class="p">(</span><span class="n">ofile</span><span class="p">,</span> <span class="n">osize</span><span class="p">);</span>
<a name="line-356"></a>
<a name="line-357"></a> <span class="c1">// -- Transition encoding ----------</span>
<a name="line-358"></a>
<a name="line-359"></a> <span class="n">transmngr</span><span class="p">.</span><span class="n">setInImage</span><span class="p">(</span><span class="n">qiimg</span><span class="p">);</span>
<a name="line-360"></a> <span class="n">transmngr</span><span class="p">.</span><span class="n">setOutImage</span><span class="p">(</span><span class="n">qoimg</span><span class="p">);</span>
<a name="line-361"></a> <span class="n">transmngr</span><span class="p">.</span><span class="n">setTransition</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">transition</span><span class="p">);</span>
<a name="line-362"></a>
<a name="line-363"></a><span class="hll"> <span class="kt">int</span> <span class="n">tmout</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span><span class='error2'>&lt;--- Shadowed declaration</span>
</span><a name="line-364"></a>
<a name="line-365"></a> <span class="k">do</span>
<a name="line-366"></a> <span class="p">{</span>
<a name="line-367"></a> <span class="n">VideoFrame</span> <span class="n">frame</span><span class="p">(</span><span class="n">transmngr</span><span class="p">.</span><span class="n">currentFrame</span><span class="p">(</span><span class="n">tmout</span><span class="p">));</span>
<a name="line-368"></a>
<a name="line-369"></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">encodeFrame</span><span class="p">(</span><span class="n">frame</span><span class="p">,</span> <span class="n">venc</span><span class="p">,</span> <span class="n">aenc</span><span class="p">,</span> <span class="n">mux</span><span class="p">))</span>
<a name="line-370"></a> <span class="p">{</span>
<a name="line-371"></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;Cannot encode transition frame&quot;</span><span class="p">;</span>
<a name="line-372"></a> <span class="p">}</span>
<a name="line-373"></a> <span class="p">}</span>
<a name="line-374"></a> <span class="k">while</span> <span class="p">(</span><span class="n">tmout</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">m_cancel</span><span class="p">);</span>
<a name="line-375"></a>
<a name="line-376"></a> <span class="c1">// -- Images encoding ----------</span>
<a name="line-377"></a>
<a name="line-378"></a> <span class="k">if</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">inputImages</span><span class="p">.</span><span class="n">count</span><span class="p">())</span>
<a name="line-379"></a> <span class="p">{</span>
<a name="line-380"></a> <span class="n">VideoFrame</span> <span class="n">frame</span><span class="p">;</span>
<a name="line-381"></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-382"></a><span class="hll"> <span class="kt">int</span> <span class="n">tmout</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span><span class='error2'>&lt;--- Shadow variable</span>
</span><a name="line-383"></a> <span class="n">effmngr</span><span class="p">.</span><span class="n">setImage</span><span class="p">(</span><span class="n">qoimg</span><span class="p">);</span>
<a name="line-384"></a> <span class="n">effmngr</span><span class="p">.</span><span class="n">setEffect</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">vEffect</span><span class="p">);</span>
<a name="line-385"></a>
<a name="line-386"></a> <span class="k">do</span>
<a name="line-387"></a> <span class="p">{</span>
<a name="line-388"></a> <span class="n">qiimg</span> <span class="o">=</span> <span class="n">effmngr</span><span class="p">.</span><span class="n">currentFrame</span><span class="p">(</span><span class="n">tmout</span><span class="p">);</span>
<a name="line-389"></a> <span class="n">frame</span> <span class="o">=</span> <span class="n">VideoFrame</span><span class="p">(</span><span class="n">qiimg</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">d</span><span class="o">-&gt;</span><span class="n">encodeFrame</span><span class="p">(</span><span class="n">frame</span><span class="p">,</span> <span class="n">venc</span><span class="p">,</span> <span class="n">aenc</span><span class="p">,</span> <span class="n">mux</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="o">++</span><span class="n">count</span><span class="p">;</span>
<a name="line-395"></a><span class="cm">/*</span>
<a name="line-396"></a><span class="cm"> qCDebug(DIGIKAM_GENERAL_LOG) &lt;&lt; ofile</span>
<a name="line-397"></a><span class="cm"> &lt;&lt; &quot; =&gt; encode count:&quot; &lt;&lt; count</span>
<a name="line-398"></a><span class="cm"> &lt;&lt; &quot;frame size:&quot; &lt;&lt; frame.width()</span>
<a name="line-399"></a><span class="cm"> &lt;&lt; &quot;x&quot; &lt;&lt; frame.height();</span>
<a name="line-400"></a><span class="cm">*/</span>
<a name="line-401"></a> <span class="p">}</span>
<a name="line-402"></a> <span class="p">}</span>
<a name="line-403"></a> <span class="k">while</span> <span class="p">(</span><span class="n">count</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">imgFrames</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">m_cancel</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="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;Encoded image&quot;</span> <span class="o">&lt;&lt;</span> <span class="n">i</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;done&quot;</span><span class="p">;</span>
<a name="line-407"></a>
<a name="line-408"></a> <span class="n">emit</span> <span class="nf">signalMessage</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Encoding %1 Done&quot;</span><span class="p">,</span> <span class="n">ofile</span><span class="p">),</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-409"></a> <span class="n">emit</span> <span class="nf">signalProgress</span><span class="p">(</span><span class="n">i</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="c1">// ---------------------------------------------</span>
<a name="line-413"></a> <span class="c1">// Get delayed frames</span>
<a name="line-414"></a>
<a name="line-415"></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;Encode delayed frames...&quot;</span><span class="p">;</span>
<a name="line-416"></a>
<a name="line-417"></a> <span class="k">while</span> <span class="p">(</span><span class="n">venc</span><span class="o">-&gt;</span><span class="n">encode</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>
<a name="line-418"></a> <span class="p">{</span>
<a name="line-419"></a> <span class="n">Packet</span> <span class="n">vpkt</span><span class="p">(</span><span class="n">venc</span><span class="o">-&gt;</span><span class="n">encoded</span><span class="p">());</span>
<a name="line-420"></a>
<a name="line-421"></a> <span class="k">if</span> <span class="p">(</span><span class="n">vpkt</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-422"></a> <span class="p">{</span>
<a name="line-423"></a> <span class="n">mux</span><span class="p">.</span><span class="n">writeVideo</span><span class="p">(</span><span class="n">vpkt</span><span class="p">);</span>
<a name="line-424"></a> <span class="p">}</span>
<a name="line-425"></a>
<a name="line-426"></a> <span class="n">Packet</span> <span class="n">apkt</span><span class="p">(</span><span class="n">aenc</span><span class="o">-&gt;</span><span class="n">encoded</span><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">apkt</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-429"></a> <span class="p">{</span>
<a name="line-430"></a> <span class="n">mux</span><span class="p">.</span><span class="n">writeAudio</span><span class="p">(</span><span class="n">apkt</span><span class="p">);</span>
<a name="line-431"></a> <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">// ---------------------------------------------</span>
<a name="line-435"></a> <span class="c1">// Cleanup</span>
<a name="line-436"></a>
<a name="line-437"></a> <span class="n">venc</span><span class="o">-&gt;</span><span class="n">close</span><span class="p">();</span>
<a name="line-438"></a> <span class="n">aenc</span><span class="o">-&gt;</span><span class="n">close</span><span class="p">();</span>
<a name="line-439"></a> <span class="n">mux</span><span class="p">.</span><span class="n">close</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">m_cancel</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">signalMessage</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Output video is %1&quot;</span><span class="p">,</span> <span class="n">outFile</span><span class="p">),</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-444"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">settings</span><span class="o">-&gt;</span><span class="n">outputVideo</span> <span class="o">=</span> <span class="n">outFile</span><span class="p">;</span>
<a name="line-445"></a> <span class="p">}</span>
<a name="line-446"></a>
<a name="line-447"></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="p">);</span>
<a name="line-448"></a><span class="p">}</span>
<a name="line-449"></a>
<a name="line-450"></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/43.html b/static/reports/cppcheck/master/43.html
index 96615eccb..9ea92cd94 100644
--- a/static/reports/cppcheck/master/43.html
+++ b/static/reports/cppcheck/master/43.html
@@ -1,4163 +1,4163 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/libs/widgets/itemview/dcategorizedview.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/libs/widgets/itemview/dcategorizedview.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> dcategorizedview.cpp</p>
<a href='43.html#line-1374'> shadowVar 1374</a><a href='43.html#line-1408'> shadowVar 1408</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
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009</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-01-16</span>
<a name="line-7"></a><span class="cm"> * Description : Item view for listing items in a categorized fashion optionally</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2007 by Rafael Fernández López &lt;ereslibre at kde dot org&gt;</span>
<a name="line-10"></a><span class="cm"> * Copyright (C) 2009-2012 by Marcel Wiesweg &lt;marcel dot wiesweg at gmx dot de&gt;</span>
<a name="line-11"></a><span class="cm"> * Copyright (C) 2011-2020 by Gilles Caulier &lt;caulier dot gilles at gmail dot com&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)</span>
<a name="line-17"></a><span class="cm"> * 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;dcategorizedview_p.h&quot;</span><span class="cp"></span>
<a name="line-27"></a>
<a name="line-28"></a><span class="c1">// C++ includes</span>
<a name="line-29"></a>
<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;cmath&gt;</span><span class="cp"></span>
<a name="line-31"></a>
<a name="line-32"></a><span class="c1">// Qt includes</span>
<a name="line-33"></a>
<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;QScrollBar&gt;</span><span class="cp"></span>
<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&lt;QPaintEvent&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;dcategorizedsortfilterproxymodel.h&quot;</span><span class="cp"></span>
<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&quot;dcategorydrawer.h&quot;</span><span class="cp"></span>
<a name="line-42"></a>
<a name="line-43"></a><span class="cm">/**</span>
<a name="line-44"></a><span class="cm"> * NOTE: By defining DOLPHIN_DRAGANDDROP the custom drag and drop implementation of</span>
<a name="line-45"></a><span class="cm"> * DCategorizedView is bypassed to have a consistent drag and drop look for all</span>
<a name="line-46"></a><span class="cm"> * views. Hopefully transparent pixmaps for drag objects will be supported in</span>
<a name="line-47"></a><span class="cm"> * Qt 4.4, so that this workaround can be skipped.</span>
<a name="line-48"></a><span class="cm"> */</span>
<a name="line-49"></a><span class="cp">#define DOLPHIN_DRAGANDDROP</span>
<a name="line-50"></a>
<a name="line-51"></a><span class="k">namespace</span> <span class="n">Digikam</span>
<a name="line-52"></a><span class="p">{</span>
<a name="line-53"></a>
<a name="line-54"></a><span class="n">DCategorizedView</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">Private</span><span class="p">(</span><span class="n">DCategorizedView</span><span class="o">*</span> <span class="k">const</span> <span class="n">lv</span><span class="p">)</span>
<a name="line-55"></a> <span class="o">:</span> <span class="n">listView</span><span class="p">(</span><span class="n">lv</span><span class="p">),</span>
<a name="line-56"></a> <span class="n">categoryDrawer</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-57"></a> <span class="n">biggestItemSize</span><span class="p">(</span><span class="n">QSize</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-58"></a> <span class="n">mouseButtonPressed</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
<a name="line-59"></a> <span class="n">rightMouseButtonPressed</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
<a name="line-60"></a> <span class="n">dragLeftViewport</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
<a name="line-61"></a> <span class="n">drawItemsWhileDragging</span><span class="p">(</span><span class="nb">true</span><span class="p">),</span>
<a name="line-62"></a> <span class="n">forcedSelectionPosition</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
<a name="line-63"></a> <span class="n">proxyModel</span><span class="p">(</span><span class="k">nullptr</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>
<a name="line-67"></a><span class="n">DCategorizedView</span><span class="o">::</span><span class="n">Private</span><span class="o">::~</span><span class="n">Private</span><span class="p">()</span>
<a name="line-68"></a><span class="p">{</span>
<a name="line-69"></a><span class="p">}</span>
<a name="line-70"></a>
<a name="line-71"></a><span class="k">const</span> <span class="n">QModelIndexList</span><span class="o">&amp;</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">intersectionSet</span><span class="p">(</span><span class="k">const</span> <span class="n">QRect</span><span class="o">&amp;</span> <span class="n">rect</span><span class="p">)</span>
<a name="line-72"></a><span class="p">{</span>
<a name="line-73"></a> <span class="n">QModelIndex</span> <span class="n">index</span><span class="p">;</span>
<a name="line-74"></a> <span class="n">QRect</span> <span class="n">indexVisualRect</span><span class="p">;</span>
<a name="line-75"></a> <span class="kt">int</span> <span class="n">itemHeight</span><span class="p">;</span>
<a name="line-76"></a>
<a name="line-77"></a> <span class="n">intersectedIndexes</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-78"></a>
<a name="line-79"></a> <span class="k">if</span> <span class="p">(</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">gridSize</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-80"></a> <span class="p">{</span>
<a name="line-81"></a> <span class="n">itemHeight</span> <span class="o">=</span> <span class="n">biggestItemSize</span><span class="p">.</span><span class="n">height</span><span class="p">();</span>
<a name="line-82"></a> <span class="p">}</span>
<a name="line-83"></a> <span class="k">else</span>
<a name="line-84"></a> <span class="p">{</span>
<a name="line-85"></a> <span class="n">itemHeight</span> <span class="o">=</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">gridSize</span><span class="p">().</span><span class="n">height</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="c1">// Lets find out where we should start</span>
<a name="line-89"></a>
<a name="line-90"></a> <span class="kt">int</span> <span class="n">top</span> <span class="o">=</span> <span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
<a name="line-91"></a> <span class="kt">int</span> <span class="n">bottom</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-92"></a> <span class="kt">int</span> <span class="n">middle</span> <span class="o">=</span> <span class="p">(</span><span class="n">top</span> <span class="o">+</span> <span class="n">bottom</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">;</span>
<a name="line-93"></a>
<a name="line-94"></a> <span class="k">while</span> <span class="p">(</span><span class="n">bottom</span> <span class="o">&lt;=</span> <span class="n">top</span><span class="p">)</span>
<a name="line-95"></a> <span class="p">{</span>
<a name="line-96"></a> <span class="n">middle</span> <span class="o">=</span> <span class="p">(</span><span class="n">top</span> <span class="o">+</span> <span class="n">bottom</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">;</span>
<a name="line-97"></a> <span class="n">index</span> <span class="o">=</span> <span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">middle</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<a name="line-98"></a> <span class="n">indexVisualRect</span> <span class="o">=</span> <span class="n">visualRect</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
<a name="line-99"></a>
<a name="line-100"></a> <span class="c1">// We need the whole height (not only the visualRect). This will help us to update</span>
<a name="line-101"></a> <span class="c1">// all needed indexes correctly (ereslibre)</span>
<a name="line-102"></a>
<a name="line-103"></a> <span class="n">indexVisualRect</span><span class="p">.</span><span class="n">setHeight</span><span class="p">(</span><span class="n">indexVisualRect</span><span class="p">.</span><span class="n">height</span><span class="p">()</span> <span class="o">+</span> <span class="p">(</span><span class="n">itemHeight</span> <span class="o">-</span> <span class="n">indexVisualRect</span><span class="p">.</span><span class="n">height</span><span class="p">()));</span>
<a name="line-104"></a>
<a name="line-105"></a> <span class="k">if</span> <span class="p">(</span><span class="n">qMax</span><span class="p">(</span><span class="n">indexVisualRect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">().</span><span class="n">y</span><span class="p">(),</span> <span class="n">indexVisualRect</span><span class="p">.</span><span class="n">bottomRight</span><span class="p">().</span><span class="n">y</span><span class="p">())</span> <span class="o">&lt;</span>
<a name="line-106"></a> <span class="n">qMin</span><span class="p">(</span><span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">().</span><span class="n">y</span><span class="p">(),</span> <span class="n">rect</span><span class="p">.</span><span class="n">bottomRight</span><span class="p">().</span><span class="n">y</span><span class="p">()))</span>
<a name="line-107"></a> <span class="p">{</span>
<a name="line-108"></a> <span class="n">bottom</span> <span class="o">=</span> <span class="n">middle</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
<a name="line-109"></a> <span class="p">}</span>
<a name="line-110"></a> <span class="k">else</span>
<a name="line-111"></a> <span class="p">{</span>
<a name="line-112"></a> <span class="n">top</span> <span class="o">=</span> <span class="n">middle</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
<a name="line-113"></a> <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">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="n">middle</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">proxyModel</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-117"></a> <span class="p">{</span>
<a name="line-118"></a> <span class="n">index</span> <span class="o">=</span> <span class="n">proxyModel</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-119"></a> <span class="n">indexVisualRect</span> <span class="o">=</span> <span class="n">visualRect</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
<a name="line-120"></a>
<a name="line-121"></a> <span class="k">if</span> <span class="p">(</span><span class="n">rect</span><span class="p">.</span><span class="n">intersects</span><span class="p">(</span><span class="n">indexVisualRect</span><span class="p">))</span>
<a name="line-122"></a> <span class="p">{</span>
<a name="line-123"></a> <span class="n">intersectedIndexes</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
<a name="line-124"></a> <span class="p">}</span>
<a name="line-125"></a>
<a name="line-126"></a> <span class="c1">// If we passed next item, stop searching for hits</span>
<a name="line-127"></a>
<a name="line-128"></a> <span class="k">if</span> <span class="p">(</span><span class="n">qMax</span><span class="p">(</span><span class="n">rect</span><span class="p">.</span><span class="n">bottomRight</span><span class="p">().</span><span class="n">y</span><span class="p">(),</span>
<a name="line-129"></a> <span class="n">rect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">().</span><span class="n">y</span><span class="p">())</span> <span class="o">&lt;</span> <span class="n">qMin</span><span class="p">(</span><span class="n">indexVisualRect</span><span class="p">.</span><span class="n">topLeft</span><span class="p">().</span><span class="n">y</span><span class="p">(),</span> <span class="n">indexVisualRect</span><span class="p">.</span><span class="n">bottomRight</span><span class="p">().</span><span class="n">y</span><span class="p">()))</span>
<a name="line-130"></a> <span class="p">{</span>
<a name="line-131"></a> <span class="k">break</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="k">return</span> <span class="n">intersectedIndexes</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="n">QRect</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">visualRectInViewport</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-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">index</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-141"></a> <span class="p">{</span>
<a name="line-142"></a> <span class="k">return</span> <span class="n">QRect</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">QRect</span> <span class="n">retRect</span><span class="p">;</span>
<a name="line-146"></a> <span class="n">QString</span> <span class="n">curCategory</span> <span class="o">=</span> <span class="n">elementsInfo</span><span class="p">[</span><span class="n">index</span><span class="p">.</span><span class="n">row</span><span class="p">()].</span><span class="n">category</span><span class="p">;</span>
<a name="line-147"></a> <span class="k">const</span> <span class="kt">bool</span> <span class="n">leftToRightFlow</span> <span class="o">=</span> <span class="p">(</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">flow</span><span class="p">()</span> <span class="o">==</span> <span class="n">QListView</span><span class="o">::</span><span class="n">LeftToRight</span><span class="p">);</span>
<a name="line-148"></a>
<a name="line-149"></a> <span class="k">if</span> <span class="p">(</span><span class="n">leftToRightFlow</span><span class="p">)</span>
<a name="line-150"></a> <span class="p">{</span>
<a name="line-151"></a> <span class="k">if</span> <span class="p">(</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">layoutDirection</span><span class="p">()</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">LeftToRight</span><span class="p">)</span>
<a name="line-152"></a> <span class="p">{</span>
<a name="line-153"></a> <span class="n">retRect</span> <span class="o">=</span> <span class="n">QRect</span><span class="p">(</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">spacing</span><span class="p">(),</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">spacing</span><span class="p">()</span> <span class="o">*</span> <span class="mi">2</span> <span class="o">+</span>
<a name="line-154"></a> <span class="n">categoryDrawer</span><span class="o">-&gt;</span><span class="n">categoryHeight</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">viewOptions</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-155"></a> <span class="p">}</span>
<a name="line-156"></a> <span class="k">else</span>
<a name="line-157"></a> <span class="p">{</span>
<a name="line-158"></a> <span class="n">retRect</span> <span class="o">=</span> <span class="n">QRect</span><span class="p">(</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">()</span> <span class="o">-</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">spacing</span><span class="p">(),</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">spacing</span><span class="p">()</span> <span class="o">*</span> <span class="mi">2</span> <span class="o">+</span>
<a name="line-159"></a> <span class="n">categoryDrawer</span><span class="o">-&gt;</span><span class="n">categoryHeight</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">viewOptions</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-160"></a> <span class="p">}</span>
<a name="line-161"></a> <span class="p">}</span>
<a name="line-162"></a> <span class="k">else</span>
<a name="line-163"></a> <span class="p">{</span>
<a name="line-164"></a> <span class="n">retRect</span> <span class="o">=</span> <span class="n">QRect</span><span class="p">(</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">spacing</span><span class="p">(),</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">spacing</span><span class="p">()</span> <span class="o">*</span> <span class="mi">2</span> <span class="o">+</span>
<a name="line-165"></a> <span class="n">categoryDrawer</span><span class="o">-&gt;</span><span class="n">categoryHeight</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">viewOptions</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-166"></a> <span class="p">}</span>
<a name="line-167"></a>
<a name="line-168"></a> <span class="kt">int</span> <span class="n">viewportWidth</span> <span class="o">=</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">()</span> <span class="o">-</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">spacing</span><span class="p">();</span>
<a name="line-169"></a> <span class="kt">int</span> <span class="n">itemHeight</span><span class="p">;</span>
<a name="line-170"></a> <span class="kt">int</span> <span class="n">itemWidth</span><span class="p">;</span>
<a name="line-171"></a>
<a name="line-172"></a> <span class="k">if</span> <span class="p">(</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">gridSize</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">leftToRightFlow</span><span class="p">)</span>
<a name="line-173"></a> <span class="p">{</span>
<a name="line-174"></a> <span class="n">itemHeight</span> <span class="o">=</span> <span class="n">biggestItemSize</span><span class="p">.</span><span class="n">height</span><span class="p">();</span>
<a name="line-175"></a> <span class="n">itemWidth</span> <span class="o">=</span> <span class="n">biggestItemSize</span><span class="p">.</span><span class="n">width</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">leftToRightFlow</span><span class="p">)</span>
<a name="line-178"></a> <span class="p">{</span>
<a name="line-179"></a> <span class="n">itemHeight</span> <span class="o">=</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">gridSize</span><span class="p">().</span><span class="n">height</span><span class="p">();</span>
<a name="line-180"></a> <span class="n">itemWidth</span> <span class="o">=</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">gridSize</span><span class="p">().</span><span class="n">width</span><span class="p">();</span>
<a name="line-181"></a> <span class="p">}</span>
<a name="line-182"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">gridSize</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">leftToRightFlow</span><span class="p">)</span>
<a name="line-183"></a> <span class="p">{</span>
<a name="line-184"></a> <span class="n">itemHeight</span> <span class="o">=</span> <span class="n">biggestItemSize</span><span class="p">.</span><span class="n">height</span><span class="p">();</span>
<a name="line-185"></a> <span class="n">itemWidth</span> <span class="o">=</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">()</span> <span class="o">-</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">spacing</span><span class="p">()</span> <span class="o">*</span> <span class="mi">2</span><span class="p">;</span>
<a name="line-186"></a> <span class="p">}</span>
<a name="line-187"></a> <span class="k">else</span>
<a name="line-188"></a> <span class="p">{</span>
<a name="line-189"></a> <span class="n">itemHeight</span> <span class="o">=</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">gridSize</span><span class="p">().</span><span class="n">height</span><span class="p">();</span>
<a name="line-190"></a> <span class="n">itemWidth</span> <span class="o">=</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">gridSize</span><span class="p">().</span><span class="n">width</span><span class="p">()</span> <span class="o">-</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">spacing</span><span class="p">()</span> <span class="o">*</span> <span class="mi">2</span><span class="p">;</span>
<a name="line-191"></a> <span class="p">}</span>
<a name="line-192"></a>
<a name="line-193"></a> <span class="kt">int</span> <span class="n">itemWidthPlusSeparation</span> <span class="o">=</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">spacing</span><span class="p">()</span> <span class="o">+</span> <span class="n">itemWidth</span><span class="p">;</span>
<a name="line-194"></a>
<a name="line-195"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">itemWidthPlusSeparation</span><span class="p">)</span>
<a name="line-196"></a> <span class="p">{</span>
<a name="line-197"></a> <span class="o">++</span><span class="n">itemWidthPlusSeparation</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">int</span> <span class="n">elementsPerRow</span> <span class="o">=</span> <span class="n">viewportWidth</span> <span class="o">/</span> <span class="n">itemWidthPlusSeparation</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="o">!</span><span class="n">elementsPerRow</span><span class="p">)</span>
<a name="line-203"></a> <span class="p">{</span>
<a name="line-204"></a> <span class="o">++</span><span class="n">elementsPerRow</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="kt">int</span> <span class="n">column</span><span class="p">;</span>
<a name="line-208"></a> <span class="kt">int</span> <span class="n">row</span><span class="p">;</span>
<a name="line-209"></a>
<a name="line-210"></a> <span class="k">if</span> <span class="p">(</span><span class="n">leftToRightFlow</span><span class="p">)</span>
<a name="line-211"></a> <span class="p">{</span>
<a name="line-212"></a> <span class="n">column</span> <span class="o">=</span> <span class="n">elementsInfo</span><span class="p">[</span><span class="n">index</span><span class="p">.</span><span class="n">row</span><span class="p">()].</span><span class="n">relativeOffsetToCategory</span> <span class="o">%</span> <span class="n">elementsPerRow</span><span class="p">;</span>
<a name="line-213"></a> <span class="n">row</span> <span class="o">=</span> <span class="n">elementsInfo</span><span class="p">[</span><span class="n">index</span><span class="p">.</span><span class="n">row</span><span class="p">()].</span><span class="n">relativeOffsetToCategory</span> <span class="o">/</span> <span class="n">elementsPerRow</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">listView</span><span class="o">-&gt;</span><span class="n">layoutDirection</span><span class="p">()</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">LeftToRight</span><span class="p">)</span>
<a name="line-216"></a> <span class="p">{</span>
<a name="line-217"></a> <span class="n">retRect</span><span class="p">.</span><span class="n">setLeft</span><span class="p">(</span><span class="n">retRect</span><span class="p">.</span><span class="n">left</span><span class="p">()</span> <span class="o">+</span> <span class="n">column</span> <span class="o">*</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">spacing</span><span class="p">()</span> <span class="o">+</span>
<a name="line-218"></a> <span class="n">column</span> <span class="o">*</span> <span class="n">itemWidth</span><span class="p">);</span>
<a name="line-219"></a> <span class="p">}</span>
<a name="line-220"></a> <span class="k">else</span>
<a name="line-221"></a> <span class="p">{</span>
<a name="line-222"></a> <span class="n">retRect</span><span class="p">.</span><span class="n">setLeft</span><span class="p">(</span><span class="n">retRect</span><span class="p">.</span><span class="n">right</span><span class="p">()</span> <span class="o">-</span> <span class="n">column</span> <span class="o">*</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">spacing</span><span class="p">()</span> <span class="o">-</span>
<a name="line-223"></a> <span class="n">column</span> <span class="o">*</span> <span class="n">itemWidth</span> <span class="o">-</span> <span class="n">itemWidth</span><span class="p">);</span>
<a name="line-224"></a>
<a name="line-225"></a> <span class="n">retRect</span><span class="p">.</span><span class="n">setRight</span><span class="p">(</span><span class="n">retRect</span><span class="p">.</span><span class="n">right</span><span class="p">()</span> <span class="o">-</span> <span class="n">column</span> <span class="o">*</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">spacing</span><span class="p">()</span> <span class="o">-</span>
<a name="line-226"></a> <span class="n">column</span> <span class="o">*</span> <span class="n">itemWidth</span><span class="p">);</span>
<a name="line-227"></a> <span class="p">}</span>
<a name="line-228"></a> <span class="p">}</span>
<a name="line-229"></a> <span class="k">else</span>
<a name="line-230"></a> <span class="p">{</span>
<a name="line-231"></a> <span class="n">elementsPerRow</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<a name="line-232"></a> <span class="n">column</span> <span class="o">=</span> <span class="n">elementsInfo</span><span class="p">[</span><span class="n">index</span><span class="p">.</span><span class="n">row</span><span class="p">()].</span><span class="n">relativeOffsetToCategory</span> <span class="o">%</span> <span class="n">elementsPerRow</span><span class="p">;</span>
<a name="line-233"></a> <span class="n">row</span> <span class="o">=</span> <span class="n">elementsInfo</span><span class="p">[</span><span class="n">index</span><span class="p">.</span><span class="n">row</span><span class="p">()].</span><span class="n">relativeOffsetToCategory</span> <span class="o">/</span> <span class="n">elementsPerRow</span><span class="p">;</span>
<a name="line-234"></a> <span class="p">(</span><span class="kt">void</span><span class="p">)</span><span class="n">column</span><span class="p">;</span> <span class="c1">// Remove clang warnings.</span>
<a name="line-235"></a> <span class="p">}</span>
<a name="line-236"></a>
<a name="line-237"></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">category</span><span class="p">,</span> <span class="n">categories</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="n">category</span> <span class="o">==</span> <span class="n">curCategory</span><span class="p">)</span>
<a name="line-240"></a> <span class="p">{</span>
<a name="line-241"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-242"></a> <span class="p">}</span>
<a name="line-243"></a>
<a name="line-244"></a> <span class="kt">float</span> <span class="n">rows</span> <span class="o">=</span> <span class="p">(</span><span class="kt">float</span><span class="p">)</span> <span class="p">((</span><span class="kt">float</span><span class="p">)</span> <span class="n">categoriesIndexes</span><span class="p">[</span><span class="n">category</span><span class="p">].</span><span class="n">count</span><span class="p">()</span> <span class="o">/</span>
<a name="line-245"></a> <span class="p">(</span><span class="kt">float</span><span class="p">)</span> <span class="n">elementsPerRow</span><span class="p">);</span>
<a name="line-246"></a>
<a name="line-247"></a> <span class="kt">int</span> <span class="n">rowsInt</span> <span class="o">=</span> <span class="n">categoriesIndexes</span><span class="p">[</span><span class="n">category</span><span class="p">].</span><span class="n">count</span><span class="p">()</span> <span class="o">/</span> <span class="n">elementsPerRow</span><span class="p">;</span>
<a name="line-248"></a>
<a name="line-249"></a> <span class="k">if</span> <span class="p">(</span><span class="n">rows</span> <span class="o">-</span> <span class="n">trunc</span><span class="p">(</span><span class="n">rows</span><span class="p">))</span>
<a name="line-250"></a> <span class="p">{</span>
<a name="line-251"></a> <span class="o">++</span><span class="n">rowsInt</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">retRect</span><span class="p">.</span><span class="n">setTop</span><span class="p">(</span><span class="n">retRect</span><span class="p">.</span><span class="n">top</span><span class="p">()</span> <span class="o">+</span>
<a name="line-255"></a> <span class="p">(</span><span class="n">rowsInt</span> <span class="o">*</span> <span class="n">itemHeight</span><span class="p">)</span> <span class="o">+</span>
<a name="line-256"></a> <span class="n">categoryDrawer</span><span class="o">-&gt;</span><span class="n">categoryHeight</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">viewOptions</span><span class="p">())</span> <span class="o">+</span>
<a name="line-257"></a> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">spacing</span><span class="p">()</span> <span class="o">*</span> <span class="mi">2</span><span class="p">);</span>
<a name="line-258"></a>
<a name="line-259"></a> <span class="k">if</span> <span class="p">(</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">gridSize</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">retRect</span><span class="p">.</span><span class="n">setTop</span><span class="p">(</span><span class="n">retRect</span><span class="p">.</span><span class="n">top</span><span class="p">()</span> <span class="o">+</span>
<a name="line-262"></a> <span class="p">(</span><span class="n">rowsInt</span> <span class="o">*</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">spacing</span><span class="p">()));</span>
<a name="line-263"></a> <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="k">if</span> <span class="p">(</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">gridSize</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-267"></a> <span class="p">{</span>
<a name="line-268"></a> <span class="n">retRect</span><span class="p">.</span><span class="n">setTop</span><span class="p">(</span><span class="n">retRect</span><span class="p">.</span><span class="n">top</span><span class="p">()</span> <span class="o">+</span> <span class="n">row</span> <span class="o">*</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">spacing</span><span class="p">()</span> <span class="o">+</span>
<a name="line-269"></a> <span class="p">(</span><span class="n">row</span> <span class="o">*</span> <span class="n">itemHeight</span><span class="p">));</span>
<a name="line-270"></a> <span class="p">}</span>
<a name="line-271"></a> <span class="k">else</span>
<a name="line-272"></a> <span class="p">{</span>
<a name="line-273"></a> <span class="n">retRect</span><span class="p">.</span><span class="n">setTop</span><span class="p">(</span><span class="n">retRect</span><span class="p">.</span><span class="n">top</span><span class="p">()</span> <span class="o">+</span> <span class="p">(</span><span class="n">row</span> <span class="o">*</span> <span class="n">itemHeight</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">retRect</span><span class="p">.</span><span class="n">setWidth</span><span class="p">(</span><span class="n">itemWidth</span><span class="p">);</span>
<a name="line-277"></a>
<a name="line-278"></a> <span class="n">QModelIndex</span> <span class="n">heightIndex</span> <span class="o">=</span> <span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</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-279"></a>
<a name="line-280"></a> <span class="k">if</span> <span class="p">(</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">gridSize</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-281"></a> <span class="p">{</span>
<a name="line-282"></a> <span class="n">retRect</span><span class="p">.</span><span class="n">setHeight</span><span class="p">(</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">sizeHintForIndex</span><span class="p">(</span><span class="n">heightIndex</span><span class="p">).</span><span class="n">height</span><span class="p">());</span>
<a name="line-283"></a> <span class="p">}</span>
<a name="line-284"></a> <span class="k">else</span>
<a name="line-285"></a> <span class="p">{</span>
<a name="line-286"></a> <span class="k">const</span> <span class="n">QSize</span> <span class="n">sizeHint</span> <span class="o">=</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">sizeHintForIndex</span><span class="p">(</span><span class="n">heightIndex</span><span class="p">);</span>
<a name="line-287"></a>
<a name="line-288"></a> <span class="k">if</span> <span class="p">(</span><span class="n">sizeHint</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">itemWidth</span> <span class="o">&amp;&amp;</span> <span class="n">leftToRightFlow</span><span class="p">)</span>
<a name="line-289"></a> <span class="p">{</span>
<a name="line-290"></a> <span class="n">retRect</span><span class="p">.</span><span class="n">setWidth</span><span class="p">(</span><span class="n">sizeHint</span><span class="p">.</span><span class="n">width</span><span class="p">());</span>
<a name="line-291"></a> <span class="n">retRect</span><span class="p">.</span><span class="n">moveLeft</span><span class="p">(</span><span class="n">retRect</span><span class="p">.</span><span class="n">left</span><span class="p">()</span> <span class="o">+</span> <span class="p">(</span><span class="n">itemWidth</span> <span class="o">-</span> <span class="n">sizeHint</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-292"></a> <span class="p">}</span>
<a name="line-293"></a>
<a name="line-294"></a> <span class="n">retRect</span><span class="p">.</span><span class="n">setHeight</span><span class="p">(</span><span class="n">qMin</span><span class="p">(</span><span class="n">sizeHint</span><span class="p">.</span><span class="n">height</span><span class="p">(),</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">gridSize</span><span class="p">().</span><span class="n">height</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="k">return</span> <span class="n">retRect</span><span class="p">;</span>
<a name="line-298"></a><span class="p">}</span>
<a name="line-299"></a>
<a name="line-300"></a><span class="n">QRect</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">visualCategoryRectInViewport</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">category</span><span class="p">)</span> <span class="k">const</span>
<a name="line-301"></a><span class="p">{</span>
<a name="line-302"></a> <span class="n">QRect</span> <span class="n">retRect</span><span class="p">(</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">spacing</span><span class="p">(),</span>
<a name="line-303"></a> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">spacing</span><span class="p">(),</span>
<a name="line-304"></a> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">()</span> <span class="o">-</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">spacing</span><span class="p">()</span> <span class="o">*</span> <span class="mi">2</span><span class="p">,</span>
<a name="line-305"></a> <span class="mi">0</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="o">!</span><span class="n">proxyModel</span> <span class="o">||</span>
<a name="line-308"></a> <span class="o">!</span><span class="n">categoryDrawer</span> <span class="o">||</span>
<a name="line-309"></a> <span class="o">!</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">isCategorizedModel</span><span class="p">()</span> <span class="o">||</span>
<a name="line-310"></a> <span class="o">!</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">()</span> <span class="o">||</span>
<a name="line-311"></a> <span class="o">!</span><span class="n">categories</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">category</span><span class="p">))</span>
<a name="line-312"></a> <span class="p">{</span>
<a name="line-313"></a> <span class="k">return</span> <span class="n">QRect</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">QModelIndex</span> <span class="n">index</span> <span class="o">=</span> <span class="n">proxyModel</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-317"></a> <span class="kt">int</span> <span class="n">viewportWidth</span> <span class="o">=</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">()</span> <span class="o">-</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">spacing</span><span class="p">();</span>
<a name="line-318"></a> <span class="kt">int</span> <span class="n">itemHeight</span><span class="p">;</span>
<a name="line-319"></a> <span class="kt">int</span> <span class="n">itemWidth</span><span class="p">;</span>
<a name="line-320"></a>
<a name="line-321"></a> <span class="k">if</span> <span class="p">(</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">gridSize</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-322"></a> <span class="p">{</span>
<a name="line-323"></a> <span class="n">itemHeight</span> <span class="o">=</span> <span class="n">biggestItemSize</span><span class="p">.</span><span class="n">height</span><span class="p">();</span>
<a name="line-324"></a> <span class="n">itemWidth</span> <span class="o">=</span> <span class="n">biggestItemSize</span><span class="p">.</span><span class="n">width</span><span class="p">();</span>
<a name="line-325"></a> <span class="p">}</span>
<a name="line-326"></a> <span class="k">else</span>
<a name="line-327"></a> <span class="p">{</span>
<a name="line-328"></a> <span class="n">itemHeight</span> <span class="o">=</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">gridSize</span><span class="p">().</span><span class="n">height</span><span class="p">();</span>
<a name="line-329"></a> <span class="n">itemWidth</span> <span class="o">=</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">gridSize</span><span class="p">().</span><span class="n">width</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="kt">int</span> <span class="n">itemWidthPlusSeparation</span> <span class="o">=</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">spacing</span><span class="p">()</span> <span class="o">+</span> <span class="n">itemWidth</span><span class="p">;</span>
<a name="line-333"></a> <span class="kt">int</span> <span class="n">elementsPerRow</span> <span class="o">=</span> <span class="n">viewportWidth</span> <span class="o">/</span> <span class="n">itemWidthPlusSeparation</span><span class="p">;</span>
<a name="line-334"></a>
<a name="line-335"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">elementsPerRow</span><span class="p">)</span>
<a name="line-336"></a> <span class="p">{</span>
<a name="line-337"></a> <span class="o">++</span><span class="n">elementsPerRow</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="k">if</span> <span class="p">(</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">flow</span><span class="p">()</span> <span class="o">==</span> <span class="n">QListView</span><span class="o">::</span><span class="n">TopToBottom</span><span class="p">)</span>
<a name="line-341"></a> <span class="p">{</span>
<a name="line-342"></a> <span class="n">elementsPerRow</span> <span class="o">=</span> <span class="mi">1</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">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">itCategory</span><span class="p">,</span> <span class="n">categories</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">itCategory</span> <span class="o">==</span> <span class="n">category</span><span class="p">)</span>
<a name="line-348"></a> <span class="p">{</span>
<a name="line-349"></a> <span class="k">break</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">float</span> <span class="n">rows</span> <span class="o">=</span> <span class="p">(</span><span class="kt">float</span><span class="p">)</span> <span class="p">((</span><span class="kt">float</span><span class="p">)</span> <span class="n">categoriesIndexes</span><span class="p">[</span><span class="n">itCategory</span><span class="p">].</span><span class="n">count</span><span class="p">()</span> <span class="o">/</span>
<a name="line-353"></a> <span class="p">(</span><span class="kt">float</span><span class="p">)</span> <span class="n">elementsPerRow</span><span class="p">);</span>
<a name="line-354"></a> <span class="kt">int</span> <span class="n">rowsInt</span> <span class="o">=</span> <span class="n">categoriesIndexes</span><span class="p">[</span><span class="n">itCategory</span><span class="p">].</span><span class="n">count</span><span class="p">()</span> <span class="o">/</span> <span class="n">elementsPerRow</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">rows</span> <span class="o">-</span> <span class="n">trunc</span><span class="p">(</span><span class="n">rows</span><span class="p">))</span>
<a name="line-357"></a> <span class="p">{</span>
<a name="line-358"></a> <span class="o">++</span><span class="n">rowsInt</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">retRect</span><span class="p">.</span><span class="n">setTop</span><span class="p">(</span><span class="n">retRect</span><span class="p">.</span><span class="n">top</span><span class="p">()</span> <span class="o">+</span>
<a name="line-362"></a> <span class="p">(</span><span class="n">rowsInt</span> <span class="o">*</span> <span class="n">itemHeight</span><span class="p">)</span> <span class="o">+</span>
<a name="line-363"></a> <span class="n">categoryDrawer</span><span class="o">-&gt;</span><span class="n">categoryHeight</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">viewOptions</span><span class="p">())</span> <span class="o">+</span>
<a name="line-364"></a> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">spacing</span><span class="p">()</span> <span class="o">*</span> <span class="mi">2</span><span class="p">);</span>
<a name="line-365"></a>
<a name="line-366"></a> <span class="k">if</span> <span class="p">(</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">gridSize</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-367"></a> <span class="p">{</span>
<a name="line-368"></a> <span class="n">retRect</span><span class="p">.</span><span class="n">setTop</span><span class="p">(</span><span class="n">retRect</span><span class="p">.</span><span class="n">top</span><span class="p">()</span> <span class="o">+</span>
<a name="line-369"></a> <span class="p">(</span><span class="n">rowsInt</span> <span class="o">*</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">spacing</span><span class="p">()));</span>
<a name="line-370"></a> <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">retRect</span><span class="p">.</span><span class="n">setHeight</span><span class="p">(</span><span class="n">categoryDrawer</span><span class="o">-&gt;</span><span class="n">categoryHeight</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">viewOptions</span><span class="p">()));</span>
<a name="line-374"></a>
<a name="line-375"></a> <span class="k">return</span> <span class="n">retRect</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"> * We&#39;re sure elementsPosition doesn&#39;t contain index</span>
<a name="line-380"></a><span class="cm"> */</span>
<a name="line-381"></a><span class="k">const</span> <span class="n">QRect</span><span class="o">&amp;</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">cacheIndex</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-382"></a><span class="p">{</span>
<a name="line-383"></a> <span class="n">QRect</span> <span class="n">rect</span> <span class="o">=</span> <span class="n">visualRectInViewport</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
<a name="line-384"></a> <span class="n">QHash</span><span class="o">&lt;</span><span class="kt">int</span><span class="p">,</span> <span class="n">QRect</span><span class="o">&gt;::</span><span class="n">iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">elementsPosition</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">index</span><span class="p">.</span><span class="n">row</span><span class="p">(),</span> <span class="n">rect</span><span class="p">);</span>
<a name="line-385"></a>
<a name="line-386"></a> <span class="k">return</span> <span class="o">*</span><span class="n">it</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="cm">/**</span>
<a name="line-390"></a><span class="cm"> * We&#39;re sure categoriesPosition doesn&#39;t contain category</span>
<a name="line-391"></a><span class="cm"> */</span>
<a name="line-392"></a><span class="k">const</span> <span class="n">QRect</span><span class="o">&amp;</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">cacheCategory</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">category</span><span class="p">)</span>
<a name="line-393"></a><span class="p">{</span>
<a name="line-394"></a> <span class="n">QRect</span> <span class="n">rect</span> <span class="o">=</span> <span class="n">visualCategoryRectInViewport</span><span class="p">(</span><span class="n">category</span><span class="p">);</span>
<a name="line-395"></a> <span class="n">QHash</span><span class="o">&lt;</span><span class="n">QString</span><span class="p">,</span> <span class="n">QRect</span><span class="o">&gt;::</span><span class="n">iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">categoriesPosition</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">category</span><span class="p">,</span> <span class="n">rect</span><span class="p">);</span>
<a name="line-396"></a>
<a name="line-397"></a> <span class="k">return</span> <span class="o">*</span><span class="n">it</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="k">const</span> <span class="n">QRect</span><span class="o">&amp;</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">cachedRectIndex</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-401"></a><span class="p">{</span>
<a name="line-402"></a> <span class="n">QHash</span><span class="o">&lt;</span><span class="kt">int</span><span class="p">,</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">elementsPosition</span><span class="p">.</span><span class="n">constFind</span><span class="p">(</span><span class="n">index</span><span class="p">.</span><span class="n">row</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="n">it</span> <span class="o">!=</span> <span class="n">elementsPosition</span><span class="p">.</span><span class="n">constEnd</span><span class="p">())</span> <span class="c1">// If we have it cached</span>
<a name="line-405"></a> <span class="p">{</span>
<a name="line-406"></a> <span class="c1">// return it</span>
<a name="line-407"></a> <span class="k">return</span> <span class="o">*</span><span class="n">it</span><span class="p">;</span>
<a name="line-408"></a> <span class="p">}</span>
<a name="line-409"></a> <span class="k">else</span> <span class="c1">// Otherwise, cache it</span>
<a name="line-410"></a> <span class="p">{</span>
<a name="line-411"></a> <span class="c1">// and return it</span>
<a name="line-412"></a> <span class="k">return</span> <span class="n">cacheIndex</span><span class="p">(</span><span class="n">index</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="k">const</span> <span class="n">QRect</span><span class="o">&amp;</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">cachedRectCategory</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">category</span><span class="p">)</span>
<a name="line-417"></a><span class="p">{</span>
<a name="line-418"></a> <span class="n">QHash</span><span class="o">&lt;</span><span class="n">QString</span><span class="p">,</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">categoriesPosition</span><span class="p">.</span><span class="n">constFind</span><span class="p">(</span><span class="n">category</span><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">it</span> <span class="o">!=</span> <span class="n">categoriesPosition</span><span class="p">.</span><span class="n">constEnd</span><span class="p">())</span> <span class="c1">// If we have it cached</span>
<a name="line-421"></a> <span class="p">{</span>
<a name="line-422"></a> <span class="c1">// return it</span>
<a name="line-423"></a> <span class="k">return</span> <span class="o">*</span><span class="n">it</span><span class="p">;</span>
<a name="line-424"></a> <span class="p">}</span>
<a name="line-425"></a> <span class="k">else</span> <span class="c1">// Otherwise, cache it and</span>
<a name="line-426"></a> <span class="p">{</span>
<a name="line-427"></a> <span class="c1">// return it</span>
<a name="line-428"></a> <span class="k">return</span> <span class="n">cacheCategory</span><span class="p">(</span><span class="n">category</span><span class="p">);</span>
<a name="line-429"></a> <span class="p">}</span>
<a name="line-430"></a><span class="p">}</span>
<a name="line-431"></a>
<a name="line-432"></a><span class="n">QRect</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">visualRect</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-433"></a><span class="p">{</span>
<a name="line-434"></a> <span class="n">QRect</span> <span class="n">retRect</span> <span class="o">=</span> <span class="n">cachedRectIndex</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
<a name="line-435"></a> <span class="kt">int</span> <span class="n">dx</span> <span class="o">=</span> <span class="o">-</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">horizontalOffset</span><span class="p">();</span>
<a name="line-436"></a> <span class="kt">int</span> <span class="n">dy</span> <span class="o">=</span> <span class="o">-</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">verticalOffset</span><span class="p">();</span>
<a name="line-437"></a> <span class="n">retRect</span><span class="p">.</span><span class="n">adjust</span><span class="p">(</span><span class="n">dx</span><span class="p">,</span> <span class="n">dy</span><span class="p">,</span> <span class="n">dx</span><span class="p">,</span> <span class="n">dy</span><span class="p">);</span>
<a name="line-438"></a>
<a name="line-439"></a> <span class="k">return</span> <span class="n">retRect</span><span class="p">;</span>
<a name="line-440"></a><span class="p">}</span>
<a name="line-441"></a>
<a name="line-442"></a><span class="n">QRect</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">categoryVisualRect</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">category</span><span class="p">)</span>
<a name="line-443"></a><span class="p">{</span>
<a name="line-444"></a> <span class="n">QRect</span> <span class="n">retRect</span> <span class="o">=</span> <span class="n">cachedRectCategory</span><span class="p">(</span><span class="n">category</span><span class="p">);</span>
<a name="line-445"></a> <span class="kt">int</span> <span class="n">dx</span> <span class="o">=</span> <span class="o">-</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">horizontalOffset</span><span class="p">();</span>
<a name="line-446"></a> <span class="kt">int</span> <span class="n">dy</span> <span class="o">=</span> <span class="o">-</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">verticalOffset</span><span class="p">();</span>
<a name="line-447"></a> <span class="n">retRect</span><span class="p">.</span><span class="n">adjust</span><span class="p">(</span><span class="n">dx</span><span class="p">,</span> <span class="n">dy</span><span class="p">,</span> <span class="n">dx</span><span class="p">,</span> <span class="n">dy</span><span class="p">);</span>
<a name="line-448"></a>
<a name="line-449"></a> <span class="k">return</span> <span class="n">retRect</span><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">QSize</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">contentsSize</span><span class="p">()</span>
<a name="line-453"></a><span class="p">{</span>
<a name="line-454"></a> <span class="c1">// find the last index in the last category</span>
<a name="line-455"></a>
<a name="line-456"></a> <span class="n">QModelIndex</span> <span class="n">lastIndex</span> <span class="o">=</span> <span class="n">categoriesIndexes</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">()</span> <span class="o">?</span> <span class="n">QModelIndex</span><span class="p">()</span>
<a name="line-457"></a> <span class="o">:</span> <span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">categoriesIndexes</span><span class="p">[</span><span class="n">categories</span><span class="p">.</span><span class="n">last</span><span class="p">()].</span><span class="n">last</span><span class="p">(),</span> <span class="mi">0</span><span class="p">);</span>
<a name="line-458"></a>
<a name="line-459"></a> <span class="kt">int</span> <span class="n">lastItemBottom</span> <span class="o">=</span> <span class="n">cachedRectIndex</span><span class="p">(</span><span class="n">lastIndex</span><span class="p">).</span><span class="n">top</span><span class="p">()</span> <span class="o">+</span>
<a name="line-460"></a> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">spacing</span><span class="p">()</span> <span class="o">+</span>
<a name="line-461"></a> <span class="p">(</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">gridSize</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">()</span> <span class="o">?</span> <span class="n">biggestItemSize</span><span class="p">.</span><span class="n">height</span><span class="p">()</span>
<a name="line-462"></a> <span class="o">:</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">gridSize</span><span class="p">().</span><span class="n">height</span><span class="p">())</span> <span class="o">-</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">();</span>
<a name="line-463"></a>
<a name="line-464"></a> <span class="k">return</span> <span class="nf">QSize</span><span class="p">(</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">(),</span> <span class="n">lastItemBottom</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="kt">void</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">drawNewCategory</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">sortRole</span><span class="p">,</span> <span class="k">const</span> <span class="n">QStyleOption</span><span class="o">&amp;</span> <span class="n">option</span><span class="p">,</span> <span class="n">QPainter</span><span class="o">*</span> <span class="n">painter</span><span class="p">)</span>
<a name="line-468"></a><span class="p">{</span>
<a name="line-469"></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-470"></a> <span class="p">{</span>
<a name="line-471"></a> <span class="k">return</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="n">QStyleOption</span> <span class="n">optionCopy</span> <span class="o">=</span> <span class="n">option</span><span class="p">;</span>
<a name="line-475"></a> <span class="k">const</span> <span class="n">QString</span> <span class="n">category</span> <span class="o">=</span> <span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">DCategorizedSortFilterProxyModel</span><span class="o">::</span><span class="n">CategoryDisplayRole</span><span class="p">).</span><span class="n">toString</span><span class="p">();</span>
<a name="line-476"></a> <span class="n">optionCopy</span><span class="p">.</span><span class="n">state</span> <span class="o">&amp;=</span> <span class="o">~</span><span class="n">QStyle</span><span class="o">::</span><span class="n">State_Selected</span><span class="p">;</span>
<a name="line-477"></a>
<a name="line-478"></a> <span class="k">if</span> <span class="p">((</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">selectionMode</span><span class="p">()</span> <span class="o">!=</span> <span class="n">SingleSelection</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">selectionMode</span><span class="p">()</span> <span class="o">!=</span> <span class="n">NoSelection</span><span class="p">))</span>
<a name="line-479"></a> <span class="p">{</span>
<a name="line-480"></a> <span class="k">if</span> <span class="p">((</span><span class="n">category</span> <span class="o">==</span> <span class="n">hoveredCategory</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">mouseButtonPressed</span><span class="p">)</span>
<a name="line-481"></a> <span class="p">{</span>
<a name="line-482"></a> <span class="n">optionCopy</span><span class="p">.</span><span class="n">state</span> <span class="o">|=</span> <span class="n">QStyle</span><span class="o">::</span><span class="n">State_MouseOver</span><span class="p">;</span>
<a name="line-483"></a> <span class="p">}</span>
<a name="line-484"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">category</span> <span class="o">==</span> <span class="n">hoveredCategory</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="n">mouseButtonPressed</span><span class="p">)</span>
<a name="line-485"></a> <span class="p">{</span>
<a name="line-486"></a> <span class="n">QPoint</span> <span class="n">initialPressPosition</span> <span class="o">=</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">mapFromGlobal</span><span class="p">(</span><span class="n">QCursor</span><span class="o">::</span><span class="n">pos</span><span class="p">());</span>
<a name="line-487"></a> <span class="n">initialPressPosition</span><span class="p">.</span><span class="n">setY</span><span class="p">(</span><span class="n">initialPressPosition</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">+</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">verticalOffset</span><span class="p">());</span>
<a name="line-488"></a> <span class="n">initialPressPosition</span><span class="p">.</span><span class="n">setX</span><span class="p">(</span><span class="n">initialPressPosition</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">+</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">horizontalOffset</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">initialPressPosition</span> <span class="o">==</span> <span class="k">this</span><span class="o">-&gt;</span><span class="n">initialPressPosition</span><span class="p">)</span>
<a name="line-491"></a> <span class="p">{</span>
<a name="line-492"></a> <span class="n">optionCopy</span><span class="p">.</span><span class="n">state</span> <span class="o">|=</span> <span class="n">QStyle</span><span class="o">::</span><span class="n">State_Selected</span><span class="p">;</span>
<a name="line-493"></a> <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">categoryDrawer</span><span class="o">-&gt;</span><span class="n">drawCategory</span><span class="p">(</span><span class="n">index</span><span class="p">,</span> <span class="n">sortRole</span><span class="p">,</span> <span class="n">optionCopy</span><span class="p">,</span> <span class="n">painter</span><span class="p">);</span>
<a name="line-498"></a><span class="p">}</span>
<a name="line-499"></a>
<a name="line-500"></a>
<a name="line-501"></a><span class="kt">void</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">updateScrollbars</span><span class="p">()</span>
<a name="line-502"></a><span class="p">{</span>
<a name="line-503"></a> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">horizontalScrollBar</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">setRange</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-504"></a>
<a name="line-505"></a> <span class="k">if</span> <span class="p">(</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">verticalScrollMode</span><span class="p">()</span> <span class="o">==</span> <span class="n">QAbstractItemView</span><span class="o">::</span><span class="n">ScrollPerItem</span><span class="p">)</span>
<a name="line-506"></a> <span class="p">{</span>
<a name="line-507"></a> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">setVerticalScrollMode</span><span class="p">(</span><span class="n">QAbstractItemView</span><span class="o">::</span><span class="n">ScrollPerPixel</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">if</span> <span class="p">(</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">horizontalScrollMode</span><span class="p">()</span> <span class="o">==</span> <span class="n">QAbstractItemView</span><span class="o">::</span><span class="n">ScrollPerItem</span><span class="p">)</span>
<a name="line-511"></a> <span class="p">{</span>
<a name="line-512"></a> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">setHorizontalScrollMode</span><span class="p">(</span><span class="n">QAbstractItemView</span><span class="o">::</span><span class="n">ScrollPerPixel</span><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">listView</span><span class="o">-&gt;</span><span class="n">verticalScrollBar</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">setSingleStep</span><span class="p">(</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">()</span> <span class="o">/</span> <span class="mi">10</span><span class="p">);</span>
<a name="line-516"></a> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">verticalScrollBar</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">setPageStep</span><span class="p">(</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">());</span>
<a name="line-517"></a> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">verticalScrollBar</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">setRange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">contentsSize</span><span class="p">().</span><span class="n">height</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="kt">void</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">drawDraggedItems</span><span class="p">(</span><span class="n">QPainter</span><span class="o">*</span> <span class="n">painter</span><span class="p">)</span>
<a name="line-521"></a><span class="p">{</span>
<a name="line-522"></a> <span class="n">QStyleOptionViewItem</span> <span class="n">option</span> <span class="o">=</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">viewOptions</span><span class="p">();</span>
<a name="line-523"></a> <span class="n">option</span><span class="p">.</span><span class="n">state</span> <span class="o">&amp;=</span> <span class="o">~</span><span class="n">QStyle</span><span class="o">::</span><span class="n">State_MouseOver</span><span class="p">;</span>
<a name="line-524"></a>
<a name="line-525"></a> <span class="n">foreach</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="n">listView</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">selectedIndexes</span><span class="p">())</span>
<a name="line-526"></a> <span class="p">{</span>
<a name="line-527"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">dx</span> <span class="o">=</span> <span class="n">mousePosition</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">-</span> <span class="n">initialPressPosition</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">+</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">horizontalOffset</span><span class="p">();</span>
<a name="line-528"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">dy</span> <span class="o">=</span> <span class="n">mousePosition</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">-</span> <span class="n">initialPressPosition</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">+</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">verticalOffset</span><span class="p">();</span>
<a name="line-529"></a> <span class="n">option</span><span class="p">.</span><span class="n">rect</span> <span class="o">=</span> <span class="n">visualRect</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
<a name="line-530"></a> <span class="n">option</span><span class="p">.</span><span class="n">rect</span><span class="p">.</span><span class="n">adjust</span><span class="p">(</span><span class="n">dx</span><span class="p">,</span> <span class="n">dy</span><span class="p">,</span> <span class="n">dx</span><span class="p">,</span> <span class="n">dy</span><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">option</span><span class="p">.</span><span class="n">rect</span><span class="p">.</span><span class="n">intersects</span><span class="p">(</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">()))</span>
<a name="line-533"></a> <span class="p">{</span>
<a name="line-534"></a> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">itemDelegate</span><span class="p">(</span><span class="n">index</span><span class="p">)</span><span class="o">-&gt;</span><span class="n">paint</span><span class="p">(</span><span class="n">painter</span><span class="p">,</span> <span class="n">option</span><span class="p">,</span> <span class="n">index</span><span class="p">);</span>
<a name="line-535"></a> <span class="p">}</span>
<a name="line-536"></a> <span class="p">}</span>
<a name="line-537"></a><span class="p">}</span>
<a name="line-538"></a>
<a name="line-539"></a><span class="kt">void</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">drawDraggedItems</span><span class="p">()</span>
<a name="line-540"></a><span class="p">{</span>
<a name="line-541"></a> <span class="n">QRect</span> <span class="n">rectToUpdate</span><span class="p">;</span>
<a name="line-542"></a> <span class="n">QRect</span> <span class="n">currentRect</span><span class="p">;</span>
<a name="line-543"></a>
<a name="line-544"></a> <span class="n">foreach</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="n">listView</span><span class="o">-&gt;</span><span class="n">selectionModel</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">selectedIndexes</span><span class="p">())</span>
<a name="line-545"></a> <span class="p">{</span>
<a name="line-546"></a> <span class="kt">int</span> <span class="n">dx</span> <span class="o">=</span> <span class="n">mousePosition</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">-</span> <span class="n">initialPressPosition</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">+</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">horizontalOffset</span><span class="p">();</span>
<a name="line-547"></a> <span class="kt">int</span> <span class="n">dy</span> <span class="o">=</span> <span class="n">mousePosition</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">-</span> <span class="n">initialPressPosition</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">+</span> <span class="n">listView</span><span class="o">-&gt;</span><span class="n">verticalOffset</span><span class="p">();</span>
<a name="line-548"></a> <span class="n">currentRect</span> <span class="o">=</span> <span class="n">visualRect</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
<a name="line-549"></a> <span class="n">currentRect</span><span class="p">.</span><span class="n">adjust</span><span class="p">(</span><span class="n">dx</span><span class="p">,</span> <span class="n">dy</span><span class="p">,</span> <span class="n">dx</span><span class="p">,</span> <span class="n">dy</span><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="n">currentRect</span><span class="p">.</span><span class="n">intersects</span><span class="p">(</span><span class="n">listView</span><span class="o">-&gt;</span><span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">()))</span>
<a name="line-552"></a> <span class="p">{</span>
<a name="line-553"></a> <span class="n">rectToUpdate</span> <span class="o">=</span> <span class="n">rectToUpdate</span><span class="p">.</span><span class="n">united</span><span class="p">(</span><span class="n">currentRect</span><span class="p">);</span>
<a name="line-554"></a> <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="n">listView</span><span class="o">-&gt;</span><span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">update</span><span class="p">(</span><span class="n">lastDraggedItemsRect</span><span class="p">.</span><span class="n">united</span><span class="p">(</span><span class="n">rectToUpdate</span><span class="p">));</span>
<a name="line-558"></a>
<a name="line-559"></a> <span class="n">lastDraggedItemsRect</span> <span class="o">=</span> <span class="n">rectToUpdate</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="c1">// ------------------------------------------------------------------------------------------------</span>
<a name="line-563"></a>
<a name="line-564"></a><span class="n">DCategorizedView</span><span class="o">::</span><span class="n">DCategorizedView</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-565"></a> <span class="o">:</span> <span class="n">QListView</span><span class="p">(</span><span class="n">parent</span><span class="p">),</span>
<a name="line-566"></a> <span class="n">d</span><span class="p">(</span><span class="k">new</span> <span class="n">Private</span><span class="p">(</span><span class="k">this</span><span class="p">))</span>
<a name="line-567"></a><span class="p">{</span>
<a name="line-568"></a><span class="p">}</span>
<a name="line-569"></a>
<a name="line-570"></a><span class="n">DCategorizedView</span><span class="o">::~</span><span class="n">DCategorizedView</span><span class="p">()</span>
<a name="line-571"></a><span class="p">{</span>
<a name="line-572"></a> <span class="k">delete</span> <span class="n">d</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">void</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">setGridSize</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-576"></a><span class="p">{</span>
<a name="line-577"></a> <span class="n">QListView</span><span class="o">::</span><span class="n">setGridSize</span><span class="p">(</span><span class="n">size</span><span class="p">);</span>
<a name="line-578"></a>
<a name="line-579"></a> <span class="n">slotLayoutChanged</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="kt">void</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">setModel</span><span class="p">(</span><span class="n">QAbstractItemModel</span><span class="o">*</span> <span class="n">model</span><span class="p">)</span>
<a name="line-583"></a><span class="p">{</span>
<a name="line-584"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">lastSelection</span> <span class="o">=</span> <span class="n">QItemSelection</span><span class="p">();</span>
<a name="line-585"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">forcedSelectionPosition</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-586"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">hovered</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
<a name="line-587"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mouseButtonPressed</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-588"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rightMouseButtonPressed</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-589"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsInfo</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-590"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsPosition</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-591"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categoriesIndexes</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-592"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categoriesPosition</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-593"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categories</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-594"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">intersectedIndexes</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-595"></a>
<a name="line-596"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="p">)</span>
<a name="line-597"></a> <span class="p">{</span>
<a name="line-598"></a> <span class="n">QObject</span><span class="o">::</span><span class="n">disconnect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</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-599"></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-600"></a>
<a name="line-601"></a> <span class="n">QObject</span><span class="o">::</span><span class="n">disconnect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</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-602"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</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-603"></a> <span class="p">}</span>
<a name="line-604"></a>
<a name="line-605"></a> <span class="n">QListView</span><span class="o">::</span><span class="n">setModel</span><span class="p">(</span><span class="n">model</span><span class="p">);</span>
<a name="line-606"></a>
<a name="line-607"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span> <span class="o">=</span> <span class="k">dynamic_cast</span><span class="o">&lt;</span><span class="n">DCategorizedSortFilterProxyModel</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">model</span><span class="p">);</span>
<a name="line-608"></a>
<a name="line-609"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="p">)</span>
<a name="line-610"></a> <span class="p">{</span>
<a name="line-611"></a> <span class="n">QObject</span><span class="o">::</span><span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</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-612"></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-613"></a>
<a name="line-614"></a> <span class="n">QObject</span><span class="o">::</span><span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</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-615"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</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-616"></a>
<a name="line-617"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">())</span>
<a name="line-618"></a> <span class="p">{</span>
<a name="line-619"></a> <span class="n">slotLayoutChanged</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="p">}</span>
<a name="line-623"></a>
<a name="line-624"></a><span class="n">QRect</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">visualRect</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-625"></a><span class="p">{</span>
<a name="line-626"></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">proxyModel</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryDrawer</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">isCategorizedModel</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="n">QListView</span><span class="o">::</span><span class="n">visualRect</span><span class="p">(</span><span class="n">index</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">if</span> <span class="p">(</span><span class="o">!</span><span class="n">qobject_cast</span><span class="o">&lt;</span><span class="k">const</span> <span class="n">QSortFilterProxyModel</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">index</span><span class="p">.</span><span class="n">model</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="n">d</span><span class="o">-&gt;</span><span class="n">visualRect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">mapFromSource</span><span class="p">(</span><span class="n">index</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">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">visualRect</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
<a name="line-637"></a><span class="p">}</span>
<a name="line-638"></a>
<a name="line-639"></a><span class="n">QRect</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">categoryVisualRect</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-640"></a><span class="p">{</span>
<a name="line-641"></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">proxyModel</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryDrawer</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">isCategorizedModel</span><span class="p">())</span>
<a name="line-642"></a> <span class="p">{</span>
<a name="line-643"></a> <span class="k">return</span> <span class="n">QRect</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="o">!</span><span class="n">index</span><span class="p">.</span><span class="n">isValid</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="n">QRect</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="n">QString</span> <span class="n">category</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsInfo</span><span class="p">[</span><span class="n">index</span><span class="p">.</span><span class="n">row</span><span class="p">()].</span><span class="n">category</span><span class="p">;</span>
<a name="line-652"></a>
<a name="line-653"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryVisualRect</span><span class="p">(</span><span class="n">category</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">QModelIndex</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">categoryAt</span><span class="p">(</span><span class="k">const</span> <span class="n">QPoint</span><span class="o">&amp;</span> <span class="n">point</span><span class="p">)</span> <span class="k">const</span>
<a name="line-657"></a><span class="p">{</span>
<a name="line-658"></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">proxyModel</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryDrawer</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">isCategorizedModel</span><span class="p">())</span>
<a name="line-659"></a> <span class="p">{</span>
<a name="line-660"></a> <span class="k">return</span> <span class="n">QModelIndex</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="c1">// We traverse the categories and find the first where point.y() is below the visualRect</span>
<a name="line-664"></a>
<a name="line-665"></a> <span class="kt">int</span> <span class="n">y</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">lastY</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-666"></a> <span class="n">QString</span> <span class="n">lastCategory</span><span class="p">;</span>
<a name="line-667"></a>
<a name="line-668"></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">category</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categories</span><span class="p">)</span>
<a name="line-669"></a> <span class="p">{</span>
<a name="line-670"></a> <span class="n">y</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryVisualRect</span><span class="p">(</span><span class="n">category</span><span class="p">).</span><span class="n">top</span><span class="p">();</span>
<a name="line-671"></a>
<a name="line-672"></a> <span class="k">if</span> <span class="p">((</span><span class="n">point</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">&gt;=</span> <span class="n">lastY</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="n">point</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">y</span><span class="p">)</span>
<a name="line-673"></a> <span class="p">{</span>
<a name="line-674"></a> <span class="k">break</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="n">lastY</span> <span class="o">=</span> <span class="n">y</span><span class="p">;</span>
<a name="line-678"></a> <span class="n">y</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-679"></a> <span class="n">lastCategory</span> <span class="o">=</span> <span class="n">category</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="c1">// if lastCategory is the last one in the list y will be 0</span>
<a name="line-683"></a>
<a name="line-684"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">lastCategory</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">point</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">&gt;=</span> <span class="n">lastY</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">((</span><span class="n">point</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">y</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">y</span><span class="p">))</span>
<a name="line-685"></a> <span class="p">{</span>
<a name="line-686"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoriesIndexes</span><span class="p">[</span><span class="n">lastCategory</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">proxyModel</span><span class="o">-&gt;</span><span class="n">sortColumn</span><span class="p">());</span>
<a name="line-687"></a> <span class="p">}</span>
<a name="line-688"></a>
<a name="line-689"></a> <span class="k">return</span> <span class="n">QModelIndex</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="n">QItemSelectionRange</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">categoryRange</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-693"></a><span class="p">{</span>
<a name="line-694"></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">proxyModel</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryDrawer</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">isCategorizedModel</span><span class="p">())</span>
<a name="line-695"></a> <span class="p">{</span>
<a name="line-696"></a> <span class="k">return</span> <span class="n">QItemSelectionRange</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="o">!</span><span class="n">index</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-700"></a> <span class="p">{</span>
<a name="line-701"></a> <span class="k">return</span> <span class="n">QItemSelectionRange</span><span class="p">();</span>
<a name="line-702"></a> <span class="p">}</span>
<a name="line-703"></a>
<a name="line-704"></a> <span class="n">QString</span> <span class="n">category</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsInfo</span><span class="p">[</span><span class="n">index</span><span class="p">.</span><span class="n">row</span><span class="p">()].</span><span class="n">category</span><span class="p">;</span>
<a name="line-705"></a> <span class="n">QModelIndex</span> <span class="n">first</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoriesIndexes</span><span class="p">[</span><span class="n">category</span><span class="p">].</span><span class="n">first</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">sortColumn</span><span class="p">());</span>
<a name="line-706"></a> <span class="n">QModelIndex</span> <span class="n">last</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoriesIndexes</span><span class="p">[</span><span class="n">category</span><span class="p">].</span><span class="n">last</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">sortColumn</span><span class="p">());</span>
<a name="line-707"></a> <span class="k">return</span> <span class="nf">QItemSelectionRange</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-708"></a><span class="p">}</span>
<a name="line-709"></a>
<a name="line-710"></a><span class="n">DCategoryDrawer</span><span class="o">*</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">categoryDrawer</span><span class="p">()</span> <span class="k">const</span>
<a name="line-711"></a><span class="p">{</span>
<a name="line-712"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryDrawer</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="kt">void</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">setCategoryDrawer</span><span class="p">(</span><span class="n">DCategoryDrawer</span><span class="o">*</span> <span class="n">categoryDrawer</span><span class="p">)</span>
<a name="line-716"></a><span class="p">{</span>
<a name="line-717"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">lastSelection</span> <span class="o">=</span> <span class="n">QItemSelection</span><span class="p">();</span>
<a name="line-718"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">forcedSelectionPosition</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-719"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">hovered</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
<a name="line-720"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mouseButtonPressed</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-721"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rightMouseButtonPressed</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-722"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsInfo</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-723"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsPosition</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-724"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categoriesIndexes</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-725"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categoriesPosition</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-726"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categories</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-727"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">intersectedIndexes</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-728"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryDrawer</span> <span class="o">=</span> <span class="n">categoryDrawer</span><span class="p">;</span>
<a name="line-729"></a>
<a name="line-730"></a> <span class="k">if</span> <span class="p">(</span><span class="n">categoryDrawer</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="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="p">)</span>
<a name="line-733"></a> <span class="p">{</span>
<a name="line-734"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">())</span>
<a name="line-735"></a> <span class="p">{</span>
<a name="line-736"></a> <span class="n">slotLayoutChanged</span><span class="p">();</span>
<a name="line-737"></a> <span class="p">}</span>
<a name="line-738"></a> <span class="p">}</span>
<a name="line-739"></a> <span class="p">}</span>
<a name="line-740"></a> <span class="k">else</span>
<a name="line-741"></a> <span class="p">{</span>
<a name="line-742"></a> <span class="n">updateGeometries</span><span class="p">();</span>
<a name="line-743"></a> <span class="p">}</span>
<a name="line-744"></a><span class="p">}</span>
<a name="line-745"></a>
<a name="line-746"></a><span class="kt">void</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">setDrawDraggedItems</span><span class="p">(</span><span class="kt">bool</span> <span class="n">drawDraggedItems</span><span class="p">)</span>
<a name="line-747"></a><span class="p">{</span>
<a name="line-748"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">drawItemsWhileDragging</span> <span class="o">=</span> <span class="n">drawDraggedItems</span><span class="p">;</span>
<a name="line-749"></a><span class="p">}</span>
<a name="line-750"></a>
<a name="line-751"></a><span class="n">QModelIndex</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">indexAt</span><span class="p">(</span><span class="k">const</span> <span class="n">QPoint</span><span class="o">&amp;</span> <span class="n">point</span><span class="p">)</span> <span class="k">const</span>
<a name="line-752"></a><span class="p">{</span>
<a name="line-753"></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">proxyModel</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryDrawer</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">isCategorizedModel</span><span class="p">())</span>
<a name="line-754"></a> <span class="p">{</span>
<a name="line-755"></a> <span class="k">return</span> <span class="n">QListView</span><span class="o">::</span><span class="n">indexAt</span><span class="p">(</span><span class="n">point</span><span class="p">);</span>
<a name="line-756"></a> <span class="p">}</span>
<a name="line-757"></a>
<a name="line-758"></a> <span class="n">QModelIndex</span> <span class="n">index</span><span class="p">;</span>
<a name="line-759"></a>
<a name="line-760"></a> <span class="k">const</span> <span class="n">QModelIndexList</span> <span class="n">item</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">intersectionSet</span><span class="p">(</span><span class="n">QRect</span><span class="p">(</span><span class="n">point</span><span class="p">,</span> <span class="n">point</span><span class="p">));</span>
<a name="line-761"></a>
<a name="line-762"></a> <span class="k">if</span> <span class="p">(</span><span class="n">item</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-763"></a> <span class="p">{</span>
<a name="line-764"></a> <span class="n">index</span> <span class="o">=</span> <span class="n">item</span><span class="p">[</span><span class="mi">0</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">return</span> <span class="n">index</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="n">QModelIndexList</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">categorizedIndexesIn</span><span class="p">(</span><span class="k">const</span> <span class="n">QRect</span><span class="o">&amp;</span> <span class="n">rect</span><span class="p">)</span> <span class="k">const</span>
<a name="line-771"></a><span class="p">{</span>
<a name="line-772"></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">proxyModel</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryDrawer</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">isCategorizedModel</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="n">QModelIndexList</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="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">intersectionSet</span><span class="p">(</span><span class="n">rect</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="kt">void</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">reset</span><span class="p">()</span>
<a name="line-781"></a><span class="p">{</span>
<a name="line-782"></a> <span class="n">QListView</span><span class="o">::</span><span class="n">reset</span><span class="p">();</span>
<a name="line-783"></a>
<a name="line-784"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">lastSelection</span> <span class="o">=</span> <span class="n">QItemSelection</span><span class="p">();</span>
<a name="line-785"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">forcedSelectionPosition</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-786"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">hovered</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
<a name="line-787"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">biggestItemSize</span> <span class="o">=</span> <span class="n">QSize</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-788"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mouseButtonPressed</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-789"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rightMouseButtonPressed</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-790"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsInfo</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-791"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsPosition</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-792"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categoriesIndexes</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-793"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categoriesPosition</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-794"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categories</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-795"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">intersectedIndexes</span><span class="p">.</span><span class="n">clear</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="kt">void</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">paintEvent</span><span class="p">(</span><span class="n">QPaintEvent</span><span class="o">*</span> <span class="n">event</span><span class="p">)</span>
<a name="line-799"></a><span class="p">{</span>
<a name="line-800"></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">proxyModel</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryDrawer</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">isCategorizedModel</span><span class="p">())</span>
<a name="line-801"></a> <span class="p">{</span>
<a name="line-802"></a> <span class="n">QListView</span><span class="o">::</span><span class="n">paintEvent</span><span class="p">(</span><span class="n">event</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="kt">bool</span> <span class="n">alternatingRows</span> <span class="o">=</span> <span class="n">alternatingRowColors</span><span class="p">();</span>
<a name="line-807"></a> <span class="n">QStyleOptionViewItem</span> <span class="n">option</span> <span class="o">=</span> <span class="n">viewOptions</span><span class="p">();</span>
<a name="line-808"></a> <span class="n">option</span><span class="p">.</span><span class="n">widget</span> <span class="o">=</span> <span class="k">this</span><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="n">wordWrap</span><span class="p">())</span>
<a name="line-811"></a> <span class="p">{</span>
<a name="line-812"></a> <span class="n">option</span><span class="p">.</span><span class="n">features</span> <span class="o">|=</span> <span class="n">QStyleOptionViewItem</span><span class="o">::</span><span class="n">WrapText</span><span class="p">;</span>
<a name="line-813"></a> <span class="p">}</span>
<a name="line-814"></a>
<a name="line-815"></a> <span class="n">QPainter</span> <span class="n">painter</span><span class="p">(</span><span class="n">viewport</span><span class="p">());</span>
<a name="line-816"></a> <span class="n">QRect</span> <span class="n">area</span> <span class="o">=</span> <span class="n">event</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">();</span>
<a name="line-817"></a> <span class="k">const</span> <span class="kt">bool</span> <span class="n">focus</span> <span class="o">=</span> <span class="p">(</span><span class="n">hasFocus</span><span class="p">()</span> <span class="o">||</span> <span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">hasFocus</span><span class="p">())</span> <span class="o">&amp;&amp;</span> <span class="n">currentIndex</span><span class="p">().</span><span class="n">isValid</span><span class="p">();</span>
<a name="line-818"></a> <span class="k">const</span> <span class="n">QStyle</span><span class="o">::</span><span class="n">State</span> <span class="n">state</span> <span class="o">=</span> <span class="n">option</span><span class="p">.</span><span class="n">state</span><span class="p">;</span>
<a name="line-819"></a> <span class="k">const</span> <span class="kt">bool</span> <span class="n">enabled</span> <span class="o">=</span> <span class="p">(</span><span class="n">state</span> <span class="o">&amp;</span> <span class="n">QStyle</span><span class="o">::</span><span class="n">State_Enabled</span><span class="p">)</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-820"></a>
<a name="line-821"></a> <span class="n">painter</span><span class="p">.</span><span class="n">save</span><span class="p">();</span>
<a name="line-822"></a>
<a name="line-823"></a> <span class="n">QModelIndexList</span> <span class="n">dirtyIndexes</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">intersectionSet</span><span class="p">(</span><span class="n">area</span><span class="p">);</span>
<a name="line-824"></a> <span class="kt">bool</span> <span class="n">alternate</span> <span class="o">=</span> <span class="nb">false</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">dirtyIndexes</span><span class="p">.</span><span class="n">count</span><span class="p">())</span>
<a name="line-827"></a> <span class="p">{</span>
<a name="line-828"></a> <span class="n">alternate</span> <span class="o">=</span> <span class="n">dirtyIndexes</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">row</span><span class="p">()</span> <span class="o">%</span> <span class="mi">2</span><span class="p">;</span>
<a name="line-829"></a> <span class="p">}</span>
<a name="line-830"></a>
<a name="line-831"></a> <span class="n">foreach</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="n">dirtyIndexes</span><span class="p">)</span>
<a name="line-832"></a> <span class="p">{</span>
<a name="line-833"></a> <span class="k">if</span> <span class="p">(</span><span class="n">alternatingRows</span> <span class="o">&amp;&amp;</span> <span class="n">alternate</span><span class="p">)</span>
<a name="line-834"></a> <span class="p">{</span>
<a name="line-835"></a> <span class="n">option</span><span class="p">.</span><span class="n">features</span> <span class="o">|=</span> <span class="n">QStyleOptionViewItem</span><span class="o">::</span><span class="n">Alternate</span><span class="p">;</span>
<a name="line-836"></a> <span class="n">alternate</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-837"></a> <span class="p">}</span>
<a name="line-838"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">alternatingRows</span><span class="p">)</span>
<a name="line-839"></a> <span class="p">{</span>
<a name="line-840"></a> <span class="n">option</span><span class="p">.</span><span class="n">features</span> <span class="o">&amp;=</span> <span class="o">~</span><span class="n">QStyleOptionViewItem</span><span class="o">::</span><span class="n">Alternate</span><span class="p">;</span>
<a name="line-841"></a> <span class="n">alternate</span> <span class="o">=</span> <span class="nb">true</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="n">option</span><span class="p">.</span><span class="n">state</span> <span class="o">=</span> <span class="n">state</span><span class="p">;</span>
<a name="line-845"></a> <span class="n">option</span><span class="p">.</span><span class="n">rect</span> <span class="o">=</span> <span class="n">visualRect</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
<a name="line-846"></a>
<a name="line-847"></a> <span class="k">if</span> <span class="p">(</span><span class="n">selectionModel</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">selectionModel</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">isSelected</span><span class="p">(</span><span class="n">index</span><span class="p">))</span>
<a name="line-848"></a> <span class="p">{</span>
<a name="line-849"></a> <span class="n">option</span><span class="p">.</span><span class="n">state</span> <span class="o">|=</span> <span class="n">QStyle</span><span class="o">::</span><span class="n">State_Selected</span><span class="p">;</span>
<a name="line-850"></a> <span class="p">}</span>
<a name="line-851"></a>
<a name="line-852"></a> <span class="k">if</span> <span class="p">(</span><span class="n">enabled</span><span class="p">)</span>
<a name="line-853"></a> <span class="p">{</span>
<a name="line-854"></a> <span class="n">QPalette</span><span class="o">::</span><span class="n">ColorGroup</span> <span class="n">cg</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">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">flags</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> <span class="o">&amp;</span> <span class="n">Qt</span><span class="o">::</span><span class="n">ItemIsEnabled</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-857"></a> <span class="p">{</span>
<a name="line-858"></a> <span class="n">option</span><span class="p">.</span><span class="n">state</span> <span class="o">&amp;=</span> <span class="o">~</span><span class="n">QStyle</span><span class="o">::</span><span class="n">State_Enabled</span><span class="p">;</span>
<a name="line-859"></a> <span class="n">cg</span> <span class="o">=</span> <span class="n">QPalette</span><span class="o">::</span><span class="n">Disabled</span><span class="p">;</span>
<a name="line-860"></a> <span class="p">}</span>
<a name="line-861"></a> <span class="k">else</span>
<a name="line-862"></a> <span class="p">{</span>
<a name="line-863"></a> <span class="n">cg</span> <span class="o">=</span> <span class="n">QPalette</span><span class="o">::</span><span class="n">Normal</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="n">option</span><span class="p">.</span><span class="n">palette</span><span class="p">.</span><span class="n">setCurrentColorGroup</span><span class="p">(</span><span class="n">cg</span><span class="p">);</span>
<a name="line-867"></a> <span class="p">}</span>
<a name="line-868"></a>
<a name="line-869"></a> <span class="k">if</span> <span class="p">(</span><span class="n">focus</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">currentIndex</span><span class="p">()</span> <span class="o">==</span> <span class="n">index</span><span class="p">))</span>
<a name="line-870"></a> <span class="p">{</span>
<a name="line-871"></a> <span class="n">option</span><span class="p">.</span><span class="n">state</span> <span class="o">|=</span> <span class="n">QStyle</span><span class="o">::</span><span class="n">State_HasFocus</span><span class="p">;</span>
<a name="line-872"></a>
<a name="line-873"></a> <span class="k">if</span> <span class="p">(</span><span class="k">this</span><span class="o">-&gt;</span><span class="n">state</span><span class="p">()</span> <span class="o">==</span> <span class="n">EditingState</span><span class="p">)</span>
<a name="line-874"></a> <span class="p">{</span>
<a name="line-875"></a> <span class="n">option</span><span class="p">.</span><span class="n">state</span> <span class="o">|=</span> <span class="n">QStyle</span><span class="o">::</span><span class="n">State_Editing</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-878"></a>
<a name="line-879"></a> <span class="k">if</span> <span class="p">(</span><span class="n">index</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">hovered</span><span class="p">)</span>
<a name="line-880"></a> <span class="p">{</span>
<a name="line-881"></a> <span class="n">option</span><span class="p">.</span><span class="n">state</span> <span class="o">|=</span> <span class="n">QStyle</span><span class="o">::</span><span class="n">State_MouseOver</span><span class="p">;</span>
<a name="line-882"></a> <span class="p">}</span>
<a name="line-883"></a> <span class="k">else</span>
<a name="line-884"></a> <span class="p">{</span>
<a name="line-885"></a> <span class="n">option</span><span class="p">.</span><span class="n">state</span> <span class="o">&amp;=</span> <span class="o">~</span><span class="n">QStyle</span><span class="o">::</span><span class="n">State_MouseOver</span><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="n">itemDelegate</span><span class="p">(</span><span class="n">index</span><span class="p">)</span><span class="o">-&gt;</span><span class="n">paint</span><span class="p">(</span><span class="o">&amp;</span><span class="n">painter</span><span class="p">,</span> <span class="n">option</span><span class="p">,</span> <span class="n">index</span><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="c1">// Redraw categories</span>
<a name="line-892"></a>
<a name="line-893"></a> <span class="n">QStyleOptionViewItem</span> <span class="n">otherOption</span><span class="p">;</span>
<a name="line-894"></a> <span class="kt">bool</span> <span class="n">intersectedInThePast</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-895"></a>
<a name="line-896"></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">category</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categories</span><span class="p">)</span>
<a name="line-897"></a> <span class="p">{</span>
<a name="line-898"></a> <span class="n">otherOption</span> <span class="o">=</span> <span class="n">option</span><span class="p">;</span>
<a name="line-899"></a> <span class="n">otherOption</span><span class="p">.</span><span class="n">rect</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryVisualRect</span><span class="p">(</span><span class="n">category</span><span class="p">);</span>
<a name="line-900"></a> <span class="n">otherOption</span><span class="p">.</span><span class="n">state</span> <span class="o">&amp;=</span> <span class="o">~</span><span class="n">QStyle</span><span class="o">::</span><span class="n">State_MouseOver</span><span class="p">;</span>
<a name="line-901"></a>
<a name="line-902"></a> <span class="k">if</span> <span class="p">(</span><span class="n">otherOption</span><span class="p">.</span><span class="n">rect</span><span class="p">.</span><span class="n">intersects</span><span class="p">(</span><span class="n">area</span><span class="p">))</span>
<a name="line-903"></a> <span class="p">{</span>
<a name="line-904"></a> <span class="n">intersectedInThePast</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-905"></a> <span class="n">QModelIndex</span> <span class="n">indexToDraw</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoriesIndexes</span><span class="p">[</span><span class="n">category</span><span class="p">][</span><span class="mi">0</span><span class="p">],</span>
<a name="line-906"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">sortColumn</span><span class="p">());</span>
<a name="line-907"></a>
<a name="line-908"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">drawNewCategory</span><span class="p">(</span><span class="n">indexToDraw</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">sortRole</span><span class="p">(),</span> <span class="n">otherOption</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">painter</span><span class="p">);</span>
<a name="line-909"></a> <span class="p">}</span>
<a name="line-910"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">intersectedInThePast</span><span class="p">)</span>
<a name="line-911"></a> <span class="p">{</span>
<a name="line-912"></a> <span class="c1">// the visible area has been finished, we don&#39;t need to keep asking, the rest won&#39;t intersect</span>
<a name="line-913"></a> <span class="c1">// this is doable because we know that categories are correctly ordered on the list.</span>
<a name="line-914"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-915"></a> <span class="p">}</span>
<a name="line-916"></a> <span class="p">}</span>
<a name="line-917"></a>
<a name="line-918"></a> <span class="k">if</span> <span class="p">((</span><span class="n">selectionMode</span><span class="p">()</span> <span class="o">!=</span> <span class="n">SingleSelection</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">selectionMode</span><span class="p">()</span> <span class="o">!=</span> <span class="n">NoSelection</span><span class="p">))</span>
<a name="line-919"></a> <span class="p">{</span>
<a name="line-920"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mouseButtonPressed</span> <span class="o">&amp;&amp;</span> <span class="n">QListView</span><span class="o">::</span><span class="n">state</span><span class="p">()</span> <span class="o">!=</span> <span class="n">DraggingState</span><span class="p">)</span>
<a name="line-921"></a> <span class="p">{</span>
<a name="line-922"></a> <span class="n">QPoint</span> <span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">,</span> <span class="n">initialPressPosition</span><span class="p">;</span>
<a name="line-923"></a>
<a name="line-924"></a> <span class="n">initialPressPosition</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">initialPressPosition</span><span class="p">;</span>
<a name="line-925"></a>
<a name="line-926"></a> <span class="n">initialPressPosition</span><span class="p">.</span><span class="n">setY</span><span class="p">(</span><span class="n">initialPressPosition</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">-</span> <span class="n">verticalOffset</span><span class="p">());</span>
<a name="line-927"></a> <span class="n">initialPressPosition</span><span class="p">.</span><span class="n">setX</span><span class="p">(</span><span class="n">initialPressPosition</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">-</span> <span class="n">horizontalOffset</span><span class="p">());</span>
<a name="line-928"></a>
<a name="line-929"></a> <span class="k">if</span> <span class="p">((</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">initialPressPosition</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mousePosition</span><span class="p">.</span><span class="n">x</span><span class="p">())</span> <span class="o">||</span>
<a name="line-930"></a> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">initialPressPosition</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mousePosition</span><span class="p">.</span><span class="n">y</span><span class="p">()))</span>
<a name="line-931"></a> <span class="p">{</span>
<a name="line-932"></a> <span class="n">start</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mousePosition</span><span class="p">;</span>
<a name="line-933"></a> <span class="n">end</span> <span class="o">=</span> <span class="n">initialPressPosition</span><span class="p">;</span>
<a name="line-934"></a> <span class="p">}</span>
<a name="line-935"></a> <span class="k">else</span>
<a name="line-936"></a> <span class="p">{</span>
<a name="line-937"></a> <span class="n">start</span> <span class="o">=</span> <span class="n">initialPressPosition</span><span class="p">;</span>
<a name="line-938"></a> <span class="n">end</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mousePosition</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="n">QStyleOptionRubberBand</span> <span class="n">yetAnotherOption</span><span class="p">;</span>
<a name="line-942"></a> <span class="n">yetAnotherOption</span><span class="p">.</span><span class="n">initFrom</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-943"></a> <span class="n">yetAnotherOption</span><span class="p">.</span><span class="n">shape</span> <span class="o">=</span> <span class="n">QRubberBand</span><span class="o">::</span><span class="n">Rectangle</span><span class="p">;</span>
<a name="line-944"></a> <span class="n">yetAnotherOption</span><span class="p">.</span><span class="n">opaque</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-945"></a> <span class="n">yetAnotherOption</span><span class="p">.</span><span class="n">rect</span> <span class="o">=</span> <span class="n">QRect</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">).</span><span class="n">intersected</span><span class="p">(</span><span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">().</span><span class="n">adjusted</span><span class="p">(</span><span class="o">-</span><span class="mi">16</span><span class="p">,</span> <span class="o">-</span><span class="mi">16</span><span class="p">,</span> <span class="mi">16</span><span class="p">,</span> <span class="mi">16</span><span class="p">));</span>
<a name="line-946"></a> <span class="n">painter</span><span class="p">.</span><span class="n">save</span><span class="p">();</span>
<a name="line-947"></a> <span class="n">style</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">drawControl</span><span class="p">(</span><span class="n">QStyle</span><span class="o">::</span><span class="n">CE_RubberBand</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">yetAnotherOption</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">painter</span><span class="p">);</span>
<a name="line-948"></a> <span class="n">painter</span><span class="p">.</span><span class="n">restore</span><span class="p">();</span>
<a name="line-949"></a> <span class="p">}</span>
<a name="line-950"></a> <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="n">d</span><span class="o">-&gt;</span><span class="n">drawItemsWhileDragging</span> <span class="o">&amp;&amp;</span> <span class="n">QListView</span><span class="o">::</span><span class="n">state</span><span class="p">()</span> <span class="o">==</span> <span class="n">DraggingState</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">dragLeftViewport</span><span class="p">)</span>
<a name="line-953"></a> <span class="p">{</span>
<a name="line-954"></a> <span class="n">painter</span><span class="p">.</span><span class="n">setOpacity</span><span class="p">(</span><span class="mf">0.5</span><span class="p">);</span>
<a name="line-955"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">drawDraggedItems</span><span class="p">(</span><span class="o">&amp;</span><span class="n">painter</span><span class="p">);</span>
<a name="line-956"></a> <span class="p">}</span>
<a name="line-957"></a>
<a name="line-958"></a> <span class="n">painter</span><span class="p">.</span><span class="n">restore</span><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="kt">void</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">resizeEvent</span><span class="p">(</span><span class="n">QResizeEvent</span><span class="o">*</span> <span class="n">event</span><span class="p">)</span>
<a name="line-962"></a><span class="p">{</span>
<a name="line-963"></a> <span class="n">QListView</span><span class="o">::</span><span class="n">resizeEvent</span><span class="p">(</span><span class="n">event</span><span class="p">);</span>
<a name="line-964"></a>
<a name="line-965"></a> <span class="c1">// Clear the items positions cache</span>
<a name="line-966"></a>
<a name="line-967"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsPosition</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-968"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categoriesPosition</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-969"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">forcedSelectionPosition</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-970"></a>
<a name="line-971"></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">proxyModel</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryDrawer</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">isCategorizedModel</span><span class="p">())</span>
<a name="line-972"></a> <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="n">d</span><span class="o">-&gt;</span><span class="n">updateScrollbars</span><span class="p">();</span>
<a name="line-977"></a><span class="p">}</span>
<a name="line-978"></a>
<a name="line-979"></a><span class="n">QItemSelection</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">selectionForRect</span><span class="p">(</span><span class="k">const</span> <span class="n">QRect</span><span class="o">&amp;</span> <span class="n">rect</span><span class="p">)</span>
<a name="line-980"></a><span class="p">{</span>
<a name="line-981"></a> <span class="n">QItemSelection</span> <span class="n">selection</span><span class="p">;</span>
<a name="line-982"></a> <span class="n">QModelIndex</span> <span class="n">tl</span><span class="p">,</span> <span class="n">br</span><span class="p">;</span>
<a name="line-983"></a> <span class="n">QModelIndexList</span> <span class="n">intersectedIndexes</span> <span class="o">=</span> <span class="n">intersectionSet</span><span class="p">(</span><span class="n">rect</span><span class="p">);</span>
<a name="line-984"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QModelIndex</span><span class="o">&gt;::</span><span class="n">const_iterator</span> <span class="n">it</span> <span class="o">=</span> <span class="n">intersectedIndexes</span><span class="p">.</span><span class="n">constBegin</span><span class="p">();</span>
<a name="line-985"></a>
<a name="line-986"></a> <span class="k">for</span> <span class="p">(</span> <span class="p">;</span> <span class="n">it</span> <span class="o">!=</span> <span class="n">intersectedIndexes</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-987"></a> <span class="p">{</span>
<a name="line-988"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">tl</span><span class="p">.</span><span class="n">isValid</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">br</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-989"></a> <span class="p">{</span>
<a name="line-990"></a> <span class="n">tl</span> <span class="o">=</span> <span class="n">br</span> <span class="o">=</span> <span class="o">*</span><span class="n">it</span><span class="p">;</span>
<a name="line-991"></a> <span class="p">}</span>
<a name="line-992"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="o">*</span><span class="n">it</span><span class="p">).</span><span class="n">row</span><span class="p">()</span> <span class="o">==</span> <span class="p">(</span><span class="n">tl</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-993"></a> <span class="p">{</span>
<a name="line-994"></a> <span class="n">tl</span> <span class="o">=</span> <span class="o">*</span><span class="n">it</span><span class="p">;</span> <span class="c1">// expand current range</span>
<a name="line-995"></a> <span class="p">}</span>
<a name="line-996"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="o">*</span><span class="n">it</span><span class="p">).</span><span class="n">row</span><span class="p">()</span> <span class="o">==</span> <span class="p">(</span><span class="n">br</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-997"></a> <span class="p">{</span>
<a name="line-998"></a> <span class="n">br</span> <span class="o">=</span> <span class="p">(</span><span class="o">*</span><span class="n">it</span><span class="p">);</span> <span class="c1">// expand current range</span>
<a name="line-999"></a> <span class="p">}</span>
<a name="line-1000"></a> <span class="k">else</span>
<a name="line-1001"></a> <span class="p">{</span>
<a name="line-1002"></a> <span class="n">selection</span><span class="p">.</span><span class="n">select</span><span class="p">(</span><span class="n">tl</span><span class="p">,</span> <span class="n">br</span><span class="p">);</span> <span class="c1">// select current range</span>
<a name="line-1003"></a> <span class="n">tl</span> <span class="o">=</span> <span class="n">br</span> <span class="o">=</span> <span class="o">*</span><span class="n">it</span><span class="p">;</span> <span class="c1">// start new range</span>
<a name="line-1004"></a> <span class="p">}</span>
<a name="line-1005"></a> <span class="p">}</span>
<a name="line-1006"></a>
<a name="line-1007"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tl</span><span class="p">.</span><span class="n">isValid</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">br</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-1008"></a> <span class="p">{</span>
<a name="line-1009"></a> <span class="n">selection</span><span class="p">.</span><span class="n">select</span><span class="p">(</span><span class="n">tl</span><span class="p">,</span> <span class="n">br</span><span class="p">);</span>
<a name="line-1010"></a> <span class="p">}</span>
<a name="line-1011"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">tl</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-1012"></a> <span class="p">{</span>
<a name="line-1013"></a> <span class="n">selection</span><span class="p">.</span><span class="n">select</span><span class="p">(</span><span class="n">tl</span><span class="p">,</span> <span class="n">tl</span><span class="p">);</span>
<a name="line-1014"></a> <span class="p">}</span>
<a name="line-1015"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">br</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-1016"></a> <span class="p">{</span>
<a name="line-1017"></a> <span class="n">selection</span><span class="p">.</span><span class="n">select</span><span class="p">(</span><span class="n">br</span><span class="p">,</span> <span class="n">br</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="k">return</span> <span class="n">selection</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">DCategorizedView</span><span class="o">::</span><span class="n">setSelection</span><span class="p">(</span><span class="k">const</span> <span class="n">QRect</span><span class="o">&amp;</span> <span class="n">rect</span><span class="p">,</span> <span class="n">QItemSelectionModel</span><span class="o">::</span><span class="n">SelectionFlags</span> <span class="n">command</span><span class="p">)</span>
<a name="line-1024"></a><span class="p">{</span>
<a name="line-1025"></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">proxyModel</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryDrawer</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">isCategorizedModel</span><span class="p">())</span>
<a name="line-1026"></a> <span class="p">{</span>
<a name="line-1027"></a> <span class="n">QListView</span><span class="o">::</span><span class="n">setSelection</span><span class="p">(</span><span class="n">rect</span><span class="p">,</span> <span class="n">command</span><span class="p">);</span>
<a name="line-1028"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-1029"></a> <span class="p">}</span>
<a name="line-1030"></a>
<a name="line-1031"></a> <span class="n">QItemSelection</span> <span class="n">selection</span><span class="p">;</span>
<a name="line-1032"></a><span class="cm">/*</span>
<a name="line-1033"></a><span class="cm"> QRect contentsRect = rect.translated(horizontalOffset(), verticalOffset());</span>
<a name="line-1034"></a><span class="cm">*/</span>
<a name="line-1035"></a> <span class="n">QModelIndexList</span> <span class="n">intersectedIndexes</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">intersectionSet</span><span class="p">(</span><span class="n">rect</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">rect</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="o">&amp;&amp;</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="mi">1</span><span class="p">))</span>
<a name="line-1038"></a> <span class="p">{</span>
<a name="line-1039"></a> <span class="n">QModelIndex</span> <span class="n">tl</span><span class="p">;</span>
<a name="line-1040"></a>
<a name="line-1041"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">intersectedIndexes</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-1042"></a> <span class="p">{</span>
<a name="line-1043"></a> <span class="n">tl</span> <span class="o">=</span> <span class="n">intersectedIndexes</span><span class="p">.</span><span class="n">last</span><span class="p">();</span> <span class="c1">// special case for mouse press; only select the top item</span>
<a name="line-1044"></a> <span class="p">}</span>
<a name="line-1045"></a>
<a name="line-1046"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tl</span><span class="p">.</span><span class="n">isValid</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">tl</span><span class="p">.</span><span class="n">flags</span><span class="p">()</span> <span class="o">&amp;</span> <span class="n">Qt</span><span class="o">::</span><span class="n">ItemIsEnabled</span><span class="p">))</span>
<a name="line-1047"></a> <span class="p">{</span>
<a name="line-1048"></a> <span class="n">selection</span><span class="p">.</span><span class="n">select</span><span class="p">(</span><span class="n">tl</span><span class="p">,</span> <span class="n">tl</span><span class="p">);</span>
<a name="line-1049"></a> <span class="p">}</span>
<a name="line-1050"></a> <span class="p">}</span>
<a name="line-1051"></a> <span class="k">else</span>
<a name="line-1052"></a> <span class="p">{</span>
<a name="line-1053"></a> <span class="k">if</span> <span class="p">(</span><span class="n">state</span><span class="p">()</span> <span class="o">==</span> <span class="n">DragSelectingState</span><span class="p">)</span>
<a name="line-1054"></a> <span class="p">{</span>
<a name="line-1055"></a> <span class="c1">// visual selection mode (rubberband selection)</span>
<a name="line-1056"></a>
<a name="line-1057"></a> <span class="n">selection</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionForRect</span><span class="p">(</span><span class="n">rect</span><span class="p">);</span>
<a name="line-1058"></a> <span class="p">}</span>
<a name="line-1059"></a> <span class="k">else</span>
<a name="line-1060"></a> <span class="p">{</span>
<a name="line-1061"></a> <span class="c1">// logical selection mode (key and mouse click selection)</span>
<a name="line-1062"></a>
<a name="line-1063"></a> <span class="n">QModelIndex</span> <span class="n">tl</span><span class="p">,</span> <span class="n">br</span><span class="p">;</span>
<a name="line-1064"></a>
<a name="line-1065"></a> <span class="c1">// get the first item</span>
<a name="line-1066"></a>
<a name="line-1067"></a> <span class="k">const</span> <span class="n">QRect</span> <span class="nf">topLeft</span><span class="p">(</span><span class="n">rect</span><span class="p">.</span><span class="n">left</span><span class="p">(),</span> <span class="n">rect</span><span class="p">.</span><span class="n">top</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-1068"></a> <span class="n">intersectedIndexes</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">intersectionSet</span><span class="p">(</span><span class="n">topLeft</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="o">!</span><span class="n">intersectedIndexes</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-1071"></a> <span class="p">{</span>
<a name="line-1072"></a> <span class="n">tl</span> <span class="o">=</span> <span class="n">intersectedIndexes</span><span class="p">.</span><span class="n">last</span><span class="p">();</span>
<a name="line-1073"></a> <span class="p">}</span>
<a name="line-1074"></a>
<a name="line-1075"></a> <span class="c1">// get the last item</span>
<a name="line-1076"></a>
<a name="line-1077"></a> <span class="k">const</span> <span class="n">QRect</span> <span class="n">bottomRight</span><span class="p">(</span><span class="n">rect</span><span class="p">.</span><span class="n">right</span><span class="p">(),</span> <span class="n">rect</span><span class="p">.</span><span class="n">bottom</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-1078"></a> <span class="n">intersectedIndexes</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">intersectionSet</span><span class="p">(</span><span class="n">bottomRight</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">intersectedIndexes</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-1081"></a> <span class="p">{</span>
<a name="line-1082"></a> <span class="n">br</span> <span class="o">=</span> <span class="n">intersectedIndexes</span><span class="p">.</span><span class="n">last</span><span class="p">();</span>
<a name="line-1083"></a> <span class="p">}</span>
<a name="line-1084"></a>
<a name="line-1085"></a> <span class="c1">// get the ranges</span>
<a name="line-1086"></a>
<a name="line-1087"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tl</span><span class="p">.</span><span class="n">isValid</span><span class="p">()</span> <span class="o">&amp;&amp;</span>
<a name="line-1088"></a> <span class="n">br</span><span class="p">.</span><span class="n">isValid</span><span class="p">()</span> <span class="o">&amp;&amp;</span>
<a name="line-1089"></a> <span class="p">(</span><span class="n">tl</span><span class="p">.</span><span class="n">flags</span><span class="p">()</span> <span class="o">&amp;</span> <span class="n">Qt</span><span class="o">::</span><span class="n">ItemIsEnabled</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
<a name="line-1090"></a> <span class="p">(</span><span class="n">br</span><span class="p">.</span><span class="n">flags</span><span class="p">()</span> <span class="o">&amp;</span> <span class="n">Qt</span><span class="o">::</span><span class="n">ItemIsEnabled</span><span class="p">))</span>
<a name="line-1091"></a> <span class="p">{</span>
<a name="line-1092"></a> <span class="c1">// first, middle, last in content coordinates</span>
<a name="line-1093"></a>
<a name="line-1094"></a> <span class="n">QRect</span> <span class="n">middle</span><span class="p">;</span>
<a name="line-1095"></a> <span class="n">QRect</span> <span class="n">first</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cachedRectIndex</span><span class="p">(</span><span class="n">tl</span><span class="p">);</span>
<a name="line-1096"></a> <span class="n">QRect</span> <span class="n">last</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cachedRectIndex</span><span class="p">(</span><span class="n">br</span><span class="p">);</span>
<a name="line-1097"></a> <span class="n">QSize</span> <span class="n">fullSize</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">contentsSize</span><span class="p">();</span>
<a name="line-1098"></a>
<a name="line-1099"></a> <span class="k">if</span> <span class="p">(</span><span class="n">flow</span><span class="p">()</span> <span class="o">==</span> <span class="n">LeftToRight</span><span class="p">)</span>
<a name="line-1100"></a> <span class="p">{</span>
<a name="line-1101"></a> <span class="n">QRect</span><span class="o">&amp;</span> <span class="n">top</span> <span class="o">=</span> <span class="n">first</span><span class="p">;</span>
<a name="line-1102"></a> <span class="n">QRect</span><span class="o">&amp;</span> <span class="n">bottom</span> <span class="o">=</span> <span class="n">last</span><span class="p">;</span>
<a name="line-1103"></a>
<a name="line-1104"></a> <span class="c1">// if bottom is above top, swap them</span>
<a name="line-1105"></a>
<a name="line-1106"></a> <span class="k">if</span> <span class="p">(</span><span class="n">top</span><span class="p">.</span><span class="n">center</span><span class="p">().</span><span class="n">y</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">bottom</span><span class="p">.</span><span class="n">center</span><span class="p">().</span><span class="n">y</span><span class="p">())</span>
<a name="line-1107"></a> <span class="p">{</span>
<a name="line-1108"></a> <span class="n">QRect</span> <span class="n">tmp</span> <span class="o">=</span> <span class="n">top</span><span class="p">;</span>
<a name="line-1109"></a> <span class="n">top</span> <span class="o">=</span> <span class="n">bottom</span><span class="p">;</span>
<a name="line-1110"></a> <span class="n">bottom</span> <span class="o">=</span> <span class="n">tmp</span><span class="p">;</span>
<a name="line-1111"></a> <span class="p">}</span>
<a name="line-1112"></a>
<a name="line-1113"></a> <span class="c1">// if the rect are on differnet lines, expand</span>
<a name="line-1114"></a>
<a name="line-1115"></a> <span class="k">if</span> <span class="p">(</span><span class="n">top</span><span class="p">.</span><span class="n">top</span><span class="p">()</span> <span class="o">!=</span> <span class="n">bottom</span><span class="p">.</span><span class="n">top</span><span class="p">())</span>
<a name="line-1116"></a> <span class="p">{</span>
<a name="line-1117"></a> <span class="c1">// top rectangle</span>
<a name="line-1118"></a>
<a name="line-1119"></a> <span class="k">if</span> <span class="p">(</span><span class="n">isRightToLeft</span><span class="p">())</span>
<a name="line-1120"></a> <span class="p">{</span>
<a name="line-1121"></a> <span class="n">top</span><span class="p">.</span><span class="n">setLeft</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
<a name="line-1122"></a> <span class="p">}</span>
<a name="line-1123"></a> <span class="k">else</span>
<a name="line-1124"></a> <span class="p">{</span>
<a name="line-1125"></a> <span class="n">top</span><span class="p">.</span><span class="n">setRight</span><span class="p">(</span><span class="n">fullSize</span><span class="p">.</span><span class="n">width</span><span class="p">());</span>
<a name="line-1126"></a> <span class="p">}</span>
<a name="line-1127"></a>
<a name="line-1128"></a> <span class="c1">// bottom rectangle</span>
<a name="line-1129"></a>
<a name="line-1130"></a> <span class="k">if</span> <span class="p">(</span><span class="n">isRightToLeft</span><span class="p">())</span>
<a name="line-1131"></a> <span class="p">{</span>
<a name="line-1132"></a> <span class="n">bottom</span><span class="p">.</span><span class="n">setRight</span><span class="p">(</span><span class="n">fullSize</span><span class="p">.</span><span class="n">width</span><span class="p">());</span>
<a name="line-1133"></a> <span class="p">}</span>
<a name="line-1134"></a> <span class="k">else</span>
<a name="line-1135"></a> <span class="p">{</span>
<a name="line-1136"></a> <span class="n">bottom</span><span class="p">.</span><span class="n">setLeft</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
<a name="line-1137"></a> <span class="p">}</span>
<a name="line-1138"></a> <span class="p">}</span>
<a name="line-1139"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">top</span><span class="p">.</span><span class="n">left</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">bottom</span><span class="p">.</span><span class="n">right</span><span class="p">())</span>
<a name="line-1140"></a> <span class="p">{</span>
<a name="line-1141"></a> <span class="k">if</span> <span class="p">(</span><span class="n">isRightToLeft</span><span class="p">())</span>
<a name="line-1142"></a> <span class="p">{</span>
<a name="line-1143"></a> <span class="n">bottom</span><span class="p">.</span><span class="n">setLeft</span><span class="p">(</span><span class="n">top</span><span class="p">.</span><span class="n">right</span><span class="p">());</span>
<a name="line-1144"></a> <span class="p">}</span>
<a name="line-1145"></a> <span class="k">else</span>
<a name="line-1146"></a> <span class="p">{</span>
<a name="line-1147"></a> <span class="n">bottom</span><span class="p">.</span><span class="n">setRight</span><span class="p">(</span><span class="n">top</span><span class="p">.</span><span class="n">left</span><span class="p">());</span>
<a name="line-1148"></a> <span class="p">}</span>
<a name="line-1149"></a> <span class="p">}</span>
<a name="line-1150"></a> <span class="k">else</span>
<a name="line-1151"></a> <span class="p">{</span>
<a name="line-1152"></a> <span class="k">if</span> <span class="p">(</span><span class="n">isRightToLeft</span><span class="p">())</span>
<a name="line-1153"></a> <span class="p">{</span>
<a name="line-1154"></a> <span class="n">top</span><span class="p">.</span><span class="n">setLeft</span><span class="p">(</span><span class="n">bottom</span><span class="p">.</span><span class="n">right</span><span class="p">());</span>
<a name="line-1155"></a> <span class="p">}</span>
<a name="line-1156"></a> <span class="k">else</span>
<a name="line-1157"></a> <span class="p">{</span>
<a name="line-1158"></a> <span class="n">top</span><span class="p">.</span><span class="n">setRight</span><span class="p">(</span><span class="n">bottom</span><span class="p">.</span><span class="n">left</span><span class="p">());</span>
<a name="line-1159"></a> <span class="p">}</span>
<a name="line-1160"></a> <span class="p">}</span>
<a name="line-1161"></a>
<a name="line-1162"></a> <span class="c1">// middle rectangle</span>
<a name="line-1163"></a>
<a name="line-1164"></a> <span class="k">if</span> <span class="p">(</span><span class="n">top</span><span class="p">.</span><span class="n">bottom</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">bottom</span><span class="p">.</span><span class="n">top</span><span class="p">())</span>
<a name="line-1165"></a> <span class="p">{</span>
<a name="line-1166"></a> <span class="n">middle</span><span class="p">.</span><span class="n">setTop</span><span class="p">(</span><span class="n">top</span><span class="p">.</span><span class="n">bottom</span><span class="p">()</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-1167"></a> <span class="n">middle</span><span class="p">.</span><span class="n">setLeft</span><span class="p">(</span><span class="n">qMin</span><span class="p">(</span><span class="n">top</span><span class="p">.</span><span class="n">left</span><span class="p">(),</span> <span class="n">bottom</span><span class="p">.</span><span class="n">left</span><span class="p">()));</span>
<a name="line-1168"></a> <span class="n">middle</span><span class="p">.</span><span class="n">setBottom</span><span class="p">(</span><span class="n">bottom</span><span class="p">.</span><span class="n">top</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-1169"></a> <span class="n">middle</span><span class="p">.</span><span class="n">setRight</span><span class="p">(</span><span class="n">qMax</span><span class="p">(</span><span class="n">top</span><span class="p">.</span><span class="n">right</span><span class="p">(),</span> <span class="n">bottom</span><span class="p">.</span><span class="n">right</span><span class="p">()));</span>
<a name="line-1170"></a> <span class="p">}</span>
<a name="line-1171"></a> <span class="p">}</span>
<a name="line-1172"></a> <span class="k">else</span>
<a name="line-1173"></a> <span class="p">{</span>
<a name="line-1174"></a> <span class="c1">// TopToBottom</span>
<a name="line-1175"></a>
<a name="line-1176"></a> <span class="n">QRect</span><span class="o">&amp;</span> <span class="n">left</span> <span class="o">=</span> <span class="n">first</span><span class="p">;</span>
<a name="line-1177"></a> <span class="n">QRect</span><span class="o">&amp;</span> <span class="n">right</span> <span class="o">=</span> <span class="n">last</span><span class="p">;</span>
<a name="line-1178"></a>
<a name="line-1179"></a> <span class="k">if</span> <span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">center</span><span class="p">().</span><span class="n">x</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">right</span><span class="p">.</span><span class="n">center</span><span class="p">().</span><span class="n">x</span><span class="p">())</span>
<a name="line-1180"></a> <span class="p">{</span>
<a name="line-1181"></a> <span class="n">std</span><span class="o">::</span><span class="n">swap</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">);</span>
<a name="line-1182"></a> <span class="p">}</span>
<a name="line-1183"></a>
<a name="line-1184"></a> <span class="kt">int</span> <span class="n">ch</span> <span class="o">=</span> <span class="n">fullSize</span><span class="p">.</span><span class="n">height</span><span class="p">();</span>
<a name="line-1185"></a>
<a name="line-1186"></a> <span class="k">if</span> <span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">left</span><span class="p">()</span> <span class="o">!=</span> <span class="n">right</span><span class="p">.</span><span class="n">left</span><span class="p">())</span>
<a name="line-1187"></a> <span class="p">{</span>
<a name="line-1188"></a> <span class="c1">// left rectangle</span>
<a name="line-1189"></a>
<a name="line-1190"></a> <span class="k">if</span> <span class="p">(</span><span class="n">isRightToLeft</span><span class="p">())</span>
<a name="line-1191"></a> <span class="p">{</span>
<a name="line-1192"></a> <span class="n">left</span><span class="p">.</span><span class="n">setTop</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
<a name="line-1193"></a> <span class="p">}</span>
<a name="line-1194"></a> <span class="k">else</span>
<a name="line-1195"></a> <span class="p">{</span>
<a name="line-1196"></a> <span class="n">left</span><span class="p">.</span><span class="n">setBottom</span><span class="p">(</span><span class="n">ch</span><span class="p">);</span>
<a name="line-1197"></a> <span class="p">}</span>
<a name="line-1198"></a>
<a name="line-1199"></a> <span class="c1">// top rectangle</span>
<a name="line-1200"></a>
<a name="line-1201"></a> <span class="k">if</span> <span class="p">(</span><span class="n">isRightToLeft</span><span class="p">())</span>
<a name="line-1202"></a> <span class="p">{</span>
<a name="line-1203"></a> <span class="n">right</span><span class="p">.</span><span class="n">setBottom</span><span class="p">(</span><span class="n">ch</span><span class="p">);</span>
<a name="line-1204"></a> <span class="p">}</span>
<a name="line-1205"></a> <span class="k">else</span>
<a name="line-1206"></a> <span class="p">{</span>
<a name="line-1207"></a> <span class="n">right</span><span class="p">.</span><span class="n">setTop</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
<a name="line-1208"></a> <span class="p">}</span>
<a name="line-1209"></a>
<a name="line-1210"></a> <span class="c1">// only set middle if the</span>
<a name="line-1211"></a>
<a name="line-1212"></a> <span class="n">middle</span><span class="p">.</span><span class="n">setTop</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
<a name="line-1213"></a> <span class="n">middle</span><span class="p">.</span><span class="n">setBottom</span><span class="p">(</span><span class="n">ch</span><span class="p">);</span>
<a name="line-1214"></a> <span class="n">middle</span><span class="p">.</span><span class="n">setLeft</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">right</span><span class="p">()</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-1215"></a> <span class="n">middle</span><span class="p">.</span><span class="n">setRight</span><span class="p">(</span><span class="n">right</span><span class="p">.</span><span class="n">left</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-1216"></a> <span class="p">}</span>
<a name="line-1217"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">bottom</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">right</span><span class="p">.</span><span class="n">top</span><span class="p">())</span>
<a name="line-1218"></a> <span class="p">{</span>
<a name="line-1219"></a> <span class="n">left</span><span class="p">.</span><span class="n">setBottom</span><span class="p">(</span><span class="n">right</span><span class="p">.</span><span class="n">top</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-1220"></a> <span class="p">}</span>
<a name="line-1221"></a> <span class="k">else</span>
<a name="line-1222"></a> <span class="p">{</span>
<a name="line-1223"></a> <span class="n">right</span><span class="p">.</span><span class="n">setBottom</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">top</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-1224"></a> <span class="p">}</span>
<a name="line-1225"></a> <span class="p">}</span>
<a name="line-1226"></a>
<a name="line-1227"></a> <span class="c1">// get viewport coordinates</span>
<a name="line-1228"></a>
<a name="line-1229"></a> <span class="n">first</span> <span class="o">=</span> <span class="n">first</span><span class="p">.</span><span class="n">translated</span><span class="p">(</span> <span class="o">-</span> <span class="n">horizontalOffset</span><span class="p">(),</span> <span class="o">-</span> <span class="n">verticalOffset</span><span class="p">());</span>
<a name="line-1230"></a> <span class="n">middle</span> <span class="o">=</span> <span class="n">middle</span><span class="p">.</span><span class="n">translated</span><span class="p">(</span> <span class="o">-</span> <span class="n">horizontalOffset</span><span class="p">(),</span> <span class="o">-</span> <span class="n">verticalOffset</span><span class="p">());</span>
<a name="line-1231"></a> <span class="n">last</span> <span class="o">=</span> <span class="n">last</span><span class="p">.</span><span class="n">translated</span><span class="p">(</span> <span class="o">-</span> <span class="n">horizontalOffset</span><span class="p">(),</span> <span class="o">-</span> <span class="n">verticalOffset</span><span class="p">());</span>
<a name="line-1232"></a>
<a name="line-1233"></a> <span class="c1">// do the selections</span>
<a name="line-1234"></a>
<a name="line-1235"></a> <span class="n">QItemSelection</span> <span class="n">topSelection</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionForRect</span><span class="p">(</span><span class="n">first</span><span class="p">);</span>
<a name="line-1236"></a> <span class="n">QItemSelection</span> <span class="n">middleSelection</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionForRect</span><span class="p">(</span><span class="n">middle</span><span class="p">);</span>
<a name="line-1237"></a> <span class="n">QItemSelection</span> <span class="n">bottomSelection</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">selectionForRect</span><span class="p">(</span><span class="n">last</span><span class="p">);</span>
<a name="line-1238"></a>
<a name="line-1239"></a> <span class="c1">// merge</span>
<a name="line-1240"></a>
<a name="line-1241"></a> <span class="n">selection</span><span class="p">.</span><span class="n">merge</span><span class="p">(</span><span class="n">topSelection</span><span class="p">,</span> <span class="n">QItemSelectionModel</span><span class="o">::</span><span class="n">Select</span><span class="p">);</span>
<a name="line-1242"></a> <span class="n">selection</span><span class="p">.</span><span class="n">merge</span><span class="p">(</span><span class="n">middleSelection</span><span class="p">,</span> <span class="n">QItemSelectionModel</span><span class="o">::</span><span class="n">Select</span><span class="p">);</span>
<a name="line-1243"></a> <span class="n">selection</span><span class="p">.</span><span class="n">merge</span><span class="p">(</span><span class="n">bottomSelection</span><span class="p">,</span> <span class="n">QItemSelectionModel</span><span class="o">::</span><span class="n">Select</span><span class="p">);</span>
<a name="line-1244"></a> <span class="p">}</span>
<a name="line-1245"></a> <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="n">selectionModel</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">select</span><span class="p">(</span><span class="n">selection</span><span class="p">,</span> <span class="n">command</span><span class="p">);</span>
<a name="line-1249"></a><span class="p">}</span>
<a name="line-1250"></a>
<a name="line-1251"></a><span class="kt">void</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">mouseMoveEvent</span><span class="p">(</span><span class="n">QMouseEvent</span><span class="o">*</span> <span class="n">event</span><span class="p">)</span>
<a name="line-1252"></a><span class="p">{</span>
<a name="line-1253"></a> <span class="n">QListView</span><span class="o">::</span><span class="n">mouseMoveEvent</span><span class="p">(</span><span class="n">event</span><span class="p">);</span>
<a name="line-1254"></a>
<a name="line-1255"></a> <span class="c1">// was a dragging started?</span>
<a name="line-1256"></a>
<a name="line-1257"></a> <span class="k">if</span> <span class="p">(</span><span class="n">state</span><span class="p">()</span> <span class="o">==</span> <span class="n">DraggingState</span><span class="p">)</span>
<a name="line-1258"></a> <span class="p">{</span>
<a name="line-1259"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mouseButtonPressed</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-1260"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rightMouseButtonPressed</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-1261"></a>
<a name="line-1262"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">drawItemsWhileDragging</span><span class="p">)</span>
<a name="line-1263"></a> <span class="p">{</span>
<a name="line-1264"></a> <span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">update</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">lastDraggedItemsRect</span><span class="p">);</span>
<a name="line-1265"></a> <span class="p">}</span>
<a name="line-1266"></a> <span class="p">}</span>
<a name="line-1267"></a>
<a name="line-1268"></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">proxyModel</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryDrawer</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">isCategorizedModel</span><span class="p">())</span>
<a name="line-1269"></a> <span class="p">{</span>
<a name="line-1270"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-1271"></a> <span class="p">}</span>
<a name="line-1272"></a>
<a name="line-1273"></a> <span class="k">const</span> <span class="n">QModelIndexList</span> <span class="n">item</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">intersectionSet</span><span class="p">(</span><span class="n">QRect</span><span class="p">(</span><span class="n">event</span><span class="o">-&gt;</span><span class="n">pos</span><span class="p">(),</span> <span class="n">event</span><span class="o">-&gt;</span><span class="n">pos</span><span class="p">()));</span>
<a name="line-1274"></a>
<a name="line-1275"></a> <span class="k">if</span> <span class="p">(</span><span class="n">item</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-1276"></a> <span class="p">{</span>
<a name="line-1277"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">hovered</span> <span class="o">=</span> <span class="n">item</span><span class="p">[</span><span class="mi">0</span><span class="p">];</span>
<a name="line-1278"></a> <span class="p">}</span>
<a name="line-1279"></a> <span class="k">else</span>
<a name="line-1280"></a> <span class="p">{</span>
<a name="line-1281"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">hovered</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
<a name="line-1282"></a> <span class="p">}</span>
<a name="line-1283"></a>
<a name="line-1284"></a> <span class="k">const</span> <span class="n">QString</span> <span class="n">previousHoveredCategory</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">hoveredCategory</span><span class="p">;</span>
<a name="line-1285"></a>
<a name="line-1286"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mousePosition</span> <span class="o">=</span> <span class="n">event</span><span class="o">-&gt;</span><span class="n">pos</span><span class="p">();</span>
<a name="line-1287"></a>
<a name="line-1288"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">hoveredCategory</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-1289"></a>
<a name="line-1290"></a> <span class="c1">// Redraw categories</span>
<a name="line-1291"></a>
<a name="line-1292"></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">category</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categories</span><span class="p">)</span>
<a name="line-1293"></a> <span class="p">{</span>
<a name="line-1294"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryVisualRect</span><span class="p">(</span><span class="n">category</span><span class="p">).</span><span class="n">intersects</span><span class="p">(</span><span class="n">QRect</span><span class="p">(</span><span class="n">event</span><span class="o">-&gt;</span><span class="n">pos</span><span class="p">(),</span> <span class="n">event</span><span class="o">-&gt;</span><span class="n">pos</span><span class="p">())))</span>
<a name="line-1295"></a> <span class="p">{</span>
<a name="line-1296"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">hoveredCategory</span> <span class="o">=</span> <span class="n">category</span><span class="p">;</span>
<a name="line-1297"></a> <span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">update</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryVisualRect</span><span class="p">(</span><span class="n">category</span><span class="p">));</span>
<a name="line-1298"></a> <span class="p">}</span>
<a name="line-1299"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">((</span><span class="n">category</span> <span class="o">==</span> <span class="n">previousHoveredCategory</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
<a name="line-1300"></a> <span class="p">(</span><span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryVisualRect</span><span class="p">(</span><span class="n">previousHoveredCategory</span><span class="p">).</span><span class="n">intersects</span><span class="p">(</span><span class="n">QRect</span><span class="p">(</span><span class="n">event</span><span class="o">-&gt;</span><span class="n">pos</span><span class="p">(),</span> <span class="n">event</span><span class="o">-&gt;</span><span class="n">pos</span><span class="p">()))))</span>
<a name="line-1301"></a> <span class="p">{</span>
<a name="line-1302"></a> <span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">update</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryVisualRect</span><span class="p">(</span><span class="n">category</span><span class="p">));</span>
<a name="line-1303"></a> <span class="p">}</span>
<a name="line-1304"></a> <span class="p">}</span>
<a name="line-1305"></a>
<a name="line-1306"></a> <span class="n">QRect</span> <span class="n">rect</span><span class="p">;</span>
<a name="line-1307"></a>
<a name="line-1308"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">mouseButtonPressed</span> <span class="o">&amp;&amp;</span> <span class="n">QListView</span><span class="o">::</span><span class="n">state</span><span class="p">()</span> <span class="o">!=</span> <span class="n">DraggingState</span><span class="p">)</span>
<a name="line-1309"></a> <span class="p">{</span>
<a name="line-1310"></a> <span class="n">QPoint</span> <span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">,</span> <span class="n">initialPressPosition</span><span class="p">;</span>
<a name="line-1311"></a>
<a name="line-1312"></a> <span class="n">initialPressPosition</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">initialPressPosition</span><span class="p">;</span>
<a name="line-1313"></a>
<a name="line-1314"></a> <span class="n">initialPressPosition</span><span class="p">.</span><span class="n">setY</span><span class="p">(</span><span class="n">initialPressPosition</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">-</span> <span class="n">verticalOffset</span><span class="p">());</span>
<a name="line-1315"></a> <span class="n">initialPressPosition</span><span class="p">.</span><span class="n">setX</span><span class="p">(</span><span class="n">initialPressPosition</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">-</span> <span class="n">horizontalOffset</span><span class="p">());</span>
<a name="line-1316"></a>
<a name="line-1317"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">initialPressPosition</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mousePosition</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">||</span>
<a name="line-1318"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">initialPressPosition</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mousePosition</span><span class="p">.</span><span class="n">y</span><span class="p">())</span>
<a name="line-1319"></a> <span class="p">{</span>
<a name="line-1320"></a> <span class="n">start</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mousePosition</span><span class="p">;</span>
<a name="line-1321"></a> <span class="n">end</span> <span class="o">=</span> <span class="n">initialPressPosition</span><span class="p">;</span>
<a name="line-1322"></a> <span class="p">}</span>
<a name="line-1323"></a> <span class="k">else</span>
<a name="line-1324"></a> <span class="p">{</span>
<a name="line-1325"></a> <span class="n">start</span> <span class="o">=</span> <span class="n">initialPressPosition</span><span class="p">;</span>
<a name="line-1326"></a> <span class="n">end</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mousePosition</span><span class="p">;</span>
<a name="line-1327"></a> <span class="p">}</span>
<a name="line-1328"></a>
<a name="line-1329"></a> <span class="n">rect</span> <span class="o">=</span> <span class="n">QRect</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">).</span><span class="n">adjusted</span><span class="p">(</span><span class="o">-</span><span class="mi">16</span><span class="p">,</span> <span class="o">-</span><span class="mi">16</span><span class="p">,</span> <span class="mi">16</span><span class="p">,</span> <span class="mi">16</span><span class="p">);</span>
<a name="line-1330"></a> <span class="n">rect</span> <span class="o">=</span> <span class="n">rect</span><span class="p">.</span><span class="n">united</span><span class="p">(</span><span class="n">QRect</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">).</span><span class="n">adjusted</span><span class="p">(</span><span class="mi">16</span><span class="p">,</span> <span class="mi">16</span><span class="p">,</span> <span class="o">-</span><span class="mi">16</span><span class="p">,</span> <span class="o">-</span><span class="mi">16</span><span class="p">)).</span><span class="n">intersected</span><span class="p">(</span><span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">());</span>
<a name="line-1331"></a>
<a name="line-1332"></a> <span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">update</span><span class="p">(</span><span class="n">rect</span><span class="p">);</span>
<a name="line-1333"></a> <span class="p">}</span>
<a name="line-1334"></a><span class="p">}</span>
<a name="line-1335"></a>
<a name="line-1336"></a><span class="kt">void</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">mousePressEvent</span><span class="p">(</span><span class="n">QMouseEvent</span><span class="o">*</span> <span class="n">event</span><span class="p">)</span>
<a name="line-1337"></a><span class="p">{</span>
<a name="line-1338"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dragLeftViewport</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-1339"></a>
<a name="line-1340"></a> <span class="n">QListView</span><span class="o">::</span><span class="n">mousePressEvent</span><span class="p">(</span><span class="n">event</span><span class="p">);</span>
<a name="line-1341"></a>
<a name="line-1342"></a> <span class="k">if</span> <span class="p">(</span><span class="n">event</span><span class="o">-&gt;</span><span class="n">button</span><span class="p">()</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">LeftButton</span><span class="p">)</span>
<a name="line-1343"></a> <span class="p">{</span>
<a name="line-1344"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mouseButtonPressed</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-1345"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">initialPressPosition</span> <span class="o">=</span> <span class="n">event</span><span class="o">-&gt;</span><span class="n">pos</span><span class="p">();</span>
<a name="line-1346"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">initialPressPosition</span><span class="p">.</span><span class="n">setY</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">initialPressPosition</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">+</span> <span class="n">verticalOffset</span><span class="p">());</span>
<a name="line-1347"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">initialPressPosition</span><span class="p">.</span><span class="n">setX</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">initialPressPosition</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">+</span> <span class="n">horizontalOffset</span><span class="p">());</span>
<a name="line-1348"></a> <span class="p">}</span>
<a name="line-1349"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">event</span><span class="o">-&gt;</span><span class="n">button</span><span class="p">()</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">RightButton</span><span class="p">)</span>
<a name="line-1350"></a> <span class="p">{</span>
<a name="line-1351"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rightMouseButtonPressed</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-1352"></a> <span class="p">}</span>
<a name="line-1353"></a>
<a name="line-1354"></a> <span class="k">if</span> <span class="p">(</span><span class="n">selectionModel</span><span class="p">())</span>
<a name="line-1355"></a> <span class="p">{</span>
<a name="line-1356"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">lastSelection</span> <span class="o">=</span> <span class="n">selectionModel</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">selection</span><span class="p">();</span>
<a name="line-1357"></a> <span class="p">}</span>
<a name="line-1358"></a>
<a name="line-1359"></a> <span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">update</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryVisualRect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">hoveredCategory</span><span class="p">));</span>
<a name="line-1360"></a><span class="p">}</span>
<a name="line-1361"></a>
<a name="line-1362"></a><span class="kt">void</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">mouseReleaseEvent</span><span class="p">(</span><span class="n">QMouseEvent</span><span class="o">*</span> <span class="n">event</span><span class="p">)</span>
<a name="line-1363"></a><span class="p">{</span>
<a name="line-1364"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mouseButtonPressed</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-1365"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rightMouseButtonPressed</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-1366"></a>
<a name="line-1367"></a> <span class="n">QListView</span><span class="o">::</span><span class="n">mouseReleaseEvent</span><span class="p">(</span><span class="n">event</span><span class="p">);</span>
<a name="line-1368"></a>
<a name="line-1369"></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">proxyModel</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryDrawer</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">isCategorizedModel</span><span class="p">())</span>
<a name="line-1370"></a> <span class="p">{</span>
<a name="line-1371"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-1372"></a> <span class="p">}</span>
<a name="line-1373"></a>
<a name="line-1374"></a><span class="hll"> <span class="n">QPoint</span> <span class="n">initialPressPosition</span> <span class="o">=</span> <span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">mapFromGlobal</span><span class="p">(</span><span class="n">QCursor</span><span class="o">::</span><span class="n">pos</span><span class="p">());</span><span class='error2'>&lt;--- Shadowed declaration</span>
</span><a name="line-1375"></a> <span class="n">initialPressPosition</span><span class="p">.</span><span class="n">setY</span><span class="p">(</span><span class="n">initialPressPosition</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">+</span> <span class="n">verticalOffset</span><span class="p">());</span>
<a name="line-1376"></a> <span class="n">initialPressPosition</span><span class="p">.</span><span class="n">setX</span><span class="p">(</span><span class="n">initialPressPosition</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">+</span> <span class="n">horizontalOffset</span><span class="p">());</span>
<a name="line-1377"></a>
<a name="line-1378"></a> <span class="k">if</span> <span class="p">((</span><span class="n">selectionMode</span><span class="p">()</span> <span class="o">!=</span> <span class="n">SingleSelection</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
<a name="line-1379"></a> <span class="p">(</span><span class="n">selectionMode</span><span class="p">()</span> <span class="o">!=</span> <span class="n">NoSelection</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
<a name="line-1380"></a> <span class="p">(</span><span class="n">initialPressPosition</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">initialPressPosition</span><span class="p">))</span>
<a name="line-1381"></a> <span class="p">{</span>
<a name="line-1382"></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">category</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categories</span><span class="p">)</span>
<a name="line-1383"></a> <span class="p">{</span>
<a name="line-1384"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryVisualRect</span><span class="p">(</span><span class="n">category</span><span class="p">).</span><span class="n">contains</span><span class="p">(</span><span class="n">event</span><span class="o">-&gt;</span><span class="n">pos</span><span class="p">())</span> <span class="o">&amp;&amp;</span>
<a name="line-1385"></a> <span class="n">selectionModel</span><span class="p">())</span>
<a name="line-1386"></a> <span class="p">{</span>
<a name="line-1387"></a> <span class="n">QItemSelection</span> <span class="n">selection</span> <span class="o">=</span> <span class="n">selectionModel</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">selection</span><span class="p">();</span>
<a name="line-1388"></a> <span class="k">const</span> <span class="n">QVector</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="o">&amp;</span><span class="n">indexList</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categoriesIndexes</span><span class="p">[</span><span class="n">category</span><span class="p">];</span>
<a name="line-1389"></a>
<a name="line-1390"></a> <span class="n">foreach</span> <span class="p">(</span><span class="kt">int</span> <span class="n">row</span><span class="p">,</span> <span class="n">indexList</span><span class="p">)</span>
<a name="line-1391"></a> <span class="p">{</span>
<a name="line-1392"></a> <span class="n">QModelIndex</span> <span class="n">selectIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</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-1393"></a>
<a name="line-1394"></a> <span class="n">selection</span> <span class="o">&lt;&lt;</span> <span class="n">QItemSelectionRange</span><span class="p">(</span><span class="n">selectIndex</span><span class="p">);</span>
<a name="line-1395"></a> <span class="p">}</span>
<a name="line-1396"></a>
<a name="line-1397"></a> <span class="n">selectionModel</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">select</span><span class="p">(</span><span class="n">selection</span><span class="p">,</span> <span class="n">QItemSelectionModel</span><span class="o">::</span><span class="n">SelectCurrent</span><span class="p">);</span>
<a name="line-1398"></a>
<a name="line-1399"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-1400"></a> <span class="p">}</span>
<a name="line-1401"></a> <span class="p">}</span>
<a name="line-1402"></a> <span class="p">}</span>
<a name="line-1403"></a>
<a name="line-1404"></a> <span class="n">QRect</span> <span class="n">rect</span><span class="p">;</span>
<a name="line-1405"></a>
<a name="line-1406"></a> <span class="k">if</span> <span class="p">(</span><span class="n">state</span><span class="p">()</span> <span class="o">!=</span> <span class="n">DraggingState</span><span class="p">)</span>
<a name="line-1407"></a> <span class="p">{</span>
<a name="line-1408"></a><span class="hll"> <span class="n">QPoint</span> <span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">,</span> <span class="n">initialPressPosition</span><span class="p">;</span><span class='error2'>&lt;--- Shadow variable</span>
</span><a name="line-1409"></a>
<a name="line-1410"></a> <span class="n">initialPressPosition</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">initialPressPosition</span><span class="p">;</span>
<a name="line-1411"></a>
<a name="line-1412"></a> <span class="n">initialPressPosition</span><span class="p">.</span><span class="n">setY</span><span class="p">(</span><span class="n">initialPressPosition</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">-</span> <span class="n">verticalOffset</span><span class="p">());</span>
<a name="line-1413"></a> <span class="n">initialPressPosition</span><span class="p">.</span><span class="n">setX</span><span class="p">(</span><span class="n">initialPressPosition</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">-</span> <span class="n">horizontalOffset</span><span class="p">());</span>
<a name="line-1414"></a>
<a name="line-1415"></a> <span class="k">if</span> <span class="p">((</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">initialPressPosition</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mousePosition</span><span class="p">.</span><span class="n">x</span><span class="p">())</span> <span class="o">||</span>
<a name="line-1416"></a> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">initialPressPosition</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mousePosition</span><span class="p">.</span><span class="n">y</span><span class="p">()))</span>
<a name="line-1417"></a> <span class="p">{</span>
<a name="line-1418"></a> <span class="n">start</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mousePosition</span><span class="p">;</span>
<a name="line-1419"></a> <span class="n">end</span> <span class="o">=</span> <span class="n">initialPressPosition</span><span class="p">;</span>
<a name="line-1420"></a> <span class="p">}</span>
<a name="line-1421"></a> <span class="k">else</span>
<a name="line-1422"></a> <span class="p">{</span>
<a name="line-1423"></a> <span class="n">start</span> <span class="o">=</span> <span class="n">initialPressPosition</span><span class="p">;</span>
<a name="line-1424"></a> <span class="n">end</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mousePosition</span><span class="p">;</span>
<a name="line-1425"></a> <span class="p">}</span>
<a name="line-1426"></a>
<a name="line-1427"></a> <span class="n">rect</span> <span class="o">=</span> <span class="n">QRect</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">).</span><span class="n">adjusted</span><span class="p">(</span><span class="o">-</span><span class="mi">16</span><span class="p">,</span> <span class="o">-</span><span class="mi">16</span><span class="p">,</span> <span class="mi">16</span><span class="p">,</span> <span class="mi">16</span><span class="p">);</span>
<a name="line-1428"></a> <span class="n">rect</span> <span class="o">=</span> <span class="n">rect</span><span class="p">.</span><span class="n">united</span><span class="p">(</span><span class="n">QRect</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">).</span><span class="n">adjusted</span><span class="p">(</span><span class="mi">16</span><span class="p">,</span> <span class="mi">16</span><span class="p">,</span> <span class="o">-</span><span class="mi">16</span><span class="p">,</span> <span class="o">-</span><span class="mi">16</span><span class="p">)).</span><span class="n">intersected</span><span class="p">(</span><span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">());</span>
<a name="line-1429"></a>
<a name="line-1430"></a> <span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">update</span><span class="p">(</span><span class="n">rect</span><span class="p">);</span>
<a name="line-1431"></a> <span class="p">}</span>
<a name="line-1432"></a>
<a name="line-1433"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">hovered</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-1434"></a> <span class="p">{</span>
<a name="line-1435"></a> <span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">update</span><span class="p">(</span><span class="n">visualRect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">hovered</span><span class="p">));</span>
<a name="line-1436"></a> <span class="p">}</span>
<a name="line-1437"></a> <span class="k">else</span> <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">hoveredCategory</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-1438"></a> <span class="p">{</span>
<a name="line-1439"></a> <span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">update</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryVisualRect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">hoveredCategory</span><span class="p">));</span>
<a name="line-1440"></a> <span class="p">}</span>
<a name="line-1441"></a><span class="p">}</span>
<a name="line-1442"></a>
<a name="line-1443"></a><span class="kt">void</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">leaveEvent</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-1444"></a><span class="p">{</span>
<a name="line-1445"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">hovered</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
<a name="line-1446"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">hoveredCategory</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-1447"></a>
<a name="line-1448"></a> <span class="n">QListView</span><span class="o">::</span><span class="n">leaveEvent</span><span class="p">(</span><span class="n">event</span><span class="p">);</span>
<a name="line-1449"></a><span class="p">}</span>
<a name="line-1450"></a>
<a name="line-1451"></a><span class="kt">void</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">startDrag</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">DropActions</span> <span class="n">supportedActions</span><span class="p">)</span>
<a name="line-1452"></a><span class="p">{</span>
<a name="line-1453"></a> <span class="c1">// FIXME: QAbstractItemView does far better here since it sets the</span>
<a name="line-1454"></a> <span class="c1">// pixmap of selected icons to the dragging cursor, but it sets a non</span>
<a name="line-1455"></a> <span class="c1">// ARGB window so it is no transparent. Use QAbstractItemView when</span>
<a name="line-1456"></a> <span class="c1">// this is fixed on Qt.</span>
<a name="line-1457"></a> <span class="c1">// QAbstractItemView::startDrag(supportedActions);</span>
<a name="line-1458"></a>
<a name="line-1459"></a><span class="cp">#if defined(DOLPHIN_DRAGANDDROP)</span>
<a name="line-1460"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">supportedActions</span><span class="p">);</span>
<a name="line-1461"></a><span class="cp">#else</span>
<a name="line-1462"></a> <span class="n">QListView</span><span class="o">::</span><span class="n">startDrag</span><span class="p">(</span><span class="n">supportedActions</span><span class="p">);</span>
<a name="line-1463"></a><span class="cp">#endif</span>
<a name="line-1464"></a><span class="p">}</span>
<a name="line-1465"></a>
<a name="line-1466"></a><span class="kt">void</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">dragMoveEvent</span><span class="p">(</span><span class="n">QDragMoveEvent</span><span class="o">*</span> <span class="n">event</span><span class="p">)</span>
<a name="line-1467"></a><span class="p">{</span>
<a name="line-1468"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mousePosition</span> <span class="o">=</span> <span class="n">event</span><span class="o">-&gt;</span><span class="n">pos</span><span class="p">();</span>
<a name="line-1469"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dragLeftViewport</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-1470"></a>
<a name="line-1471"></a><span class="cp">#if defined(DOLPHIN_DRAGANDDROP)</span>
<a name="line-1472"></a> <span class="n">QAbstractItemView</span><span class="o">::</span><span class="n">dragMoveEvent</span><span class="p">(</span><span class="n">event</span><span class="p">);</span>
<a name="line-1473"></a><span class="cp">#else</span>
<a name="line-1474"></a> <span class="n">QListView</span><span class="o">::</span><span class="n">dragMoveEvent</span><span class="p">(</span><span class="n">event</span><span class="p">);</span>
<a name="line-1475"></a><span class="cp">#endif</span>
<a name="line-1476"></a>
<a name="line-1477"></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">proxyModel</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryDrawer</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">isCategorizedModel</span><span class="p">())</span>
<a name="line-1478"></a> <span class="p">{</span>
<a name="line-1479"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-1480"></a> <span class="p">}</span>
<a name="line-1481"></a>
<a name="line-1482"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">hovered</span> <span class="o">=</span> <span class="n">indexAt</span><span class="p">(</span><span class="n">event</span><span class="o">-&gt;</span><span class="n">pos</span><span class="p">());</span>
<a name="line-1483"></a>
<a name="line-1484"></a><span class="cp">#if !defined(DOLPHIN_DRAGANDDROP)</span>
<a name="line-1485"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">drawDraggedItems</span><span class="p">();</span>
<a name="line-1486"></a><span class="cp">#endif</span>
<a name="line-1487"></a><span class="p">}</span>
<a name="line-1488"></a>
<a name="line-1489"></a><span class="kt">void</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">dragLeaveEvent</span><span class="p">(</span><span class="n">QDragLeaveEvent</span><span class="o">*</span> <span class="n">event</span><span class="p">)</span>
<a name="line-1490"></a><span class="p">{</span>
<a name="line-1491"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dragLeftViewport</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-1492"></a>
<a name="line-1493"></a><span class="cp">#if defined(DOLPHIN_DRAGANDDROP)</span>
<a name="line-1494"></a> <span class="n">QAbstractItemView</span><span class="o">::</span><span class="n">dragLeaveEvent</span><span class="p">(</span><span class="n">event</span><span class="p">);</span>
<a name="line-1495"></a><span class="cp">#else</span>
<a name="line-1496"></a> <span class="n">QListView</span><span class="o">::</span><span class="n">dragLeaveEvent</span><span class="p">(</span><span class="n">event</span><span class="p">);</span>
<a name="line-1497"></a><span class="cp">#endif</span>
<a name="line-1498"></a><span class="p">}</span>
<a name="line-1499"></a>
<a name="line-1500"></a><span class="kt">void</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">dropEvent</span><span class="p">(</span><span class="n">QDropEvent</span><span class="o">*</span> <span class="n">event</span><span class="p">)</span>
<a name="line-1501"></a><span class="p">{</span>
<a name="line-1502"></a><span class="cp">#if defined(DOLPHIN_DRAGANDDROP)</span>
<a name="line-1503"></a> <span class="n">QAbstractItemView</span><span class="o">::</span><span class="n">dropEvent</span><span class="p">(</span><span class="n">event</span><span class="p">);</span>
<a name="line-1504"></a><span class="cp">#else</span>
<a name="line-1505"></a> <span class="n">QListView</span><span class="o">::</span><span class="n">dropEvent</span><span class="p">(</span><span class="n">event</span><span class="p">);</span>
<a name="line-1506"></a><span class="cp">#endif</span>
<a name="line-1507"></a><span class="p">}</span>
<a name="line-1508"></a>
<a name="line-1509"></a><span class="n">QModelIndex</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">moveCursor</span><span class="p">(</span><span class="n">CursorAction</span> <span class="n">cursorAction</span><span class="p">,</span>
<a name="line-1510"></a> <span class="n">Qt</span><span class="o">::</span><span class="n">KeyboardModifiers</span> <span class="n">modifiers</span><span class="p">)</span>
<a name="line-1511"></a><span class="p">{</span>
<a name="line-1512"></a> <span class="k">if</span> <span class="p">((</span><span class="n">viewMode</span><span class="p">()</span> <span class="o">!=</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">IconMode</span><span class="p">)</span> <span class="o">||</span>
<a name="line-1513"></a> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span> <span class="o">||</span>
<a name="line-1514"></a> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryDrawer</span> <span class="o">||</span>
<a name="line-1515"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categories</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">()</span> <span class="o">||</span>
<a name="line-1516"></a> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">isCategorizedModel</span><span class="p">())</span>
<a name="line-1517"></a> <span class="p">{</span>
<a name="line-1518"></a> <span class="k">return</span> <span class="n">QListView</span><span class="o">::</span><span class="n">moveCursor</span><span class="p">(</span><span class="n">cursorAction</span><span class="p">,</span> <span class="n">modifiers</span><span class="p">);</span>
<a name="line-1519"></a> <span class="p">}</span>
<a name="line-1520"></a>
<a name="line-1521"></a> <span class="kt">int</span> <span class="n">viewportWidth</span> <span class="o">=</span> <span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">()</span> <span class="o">-</span> <span class="n">spacing</span><span class="p">();</span>
<a name="line-1522"></a> <span class="kt">int</span> <span class="n">itemWidth</span><span class="p">;</span>
<a name="line-1523"></a>
<a name="line-1524"></a> <span class="k">if</span> <span class="p">(</span><span class="n">gridSize</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-1525"></a> <span class="p">{</span>
<a name="line-1526"></a> <span class="n">itemWidth</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">biggestItemSize</span><span class="p">.</span><span class="n">width</span><span class="p">();</span>
<a name="line-1527"></a> <span class="p">}</span>
<a name="line-1528"></a> <span class="k">else</span>
<a name="line-1529"></a> <span class="p">{</span>
<a name="line-1530"></a> <span class="n">itemWidth</span> <span class="o">=</span> <span class="n">gridSize</span><span class="p">().</span><span class="n">width</span><span class="p">();</span>
<a name="line-1531"></a> <span class="p">}</span>
<a name="line-1532"></a>
<a name="line-1533"></a> <span class="kt">int</span> <span class="n">itemWidthPlusSeparation</span> <span class="o">=</span> <span class="n">spacing</span><span class="p">()</span> <span class="o">+</span> <span class="n">itemWidth</span><span class="p">;</span>
<a name="line-1534"></a>
<a name="line-1535"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">itemWidthPlusSeparation</span><span class="p">)</span>
<a name="line-1536"></a> <span class="p">{</span>
<a name="line-1537"></a> <span class="o">++</span><span class="n">itemWidthPlusSeparation</span><span class="p">;</span>
<a name="line-1538"></a> <span class="p">}</span>
<a name="line-1539"></a>
<a name="line-1540"></a> <span class="kt">int</span> <span class="n">elementsPerRow</span> <span class="o">=</span> <span class="n">viewportWidth</span> <span class="o">/</span> <span class="n">itemWidthPlusSeparation</span><span class="p">;</span>
<a name="line-1541"></a>
<a name="line-1542"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">elementsPerRow</span><span class="p">)</span>
<a name="line-1543"></a> <span class="p">{</span>
<a name="line-1544"></a> <span class="o">++</span><span class="n">elementsPerRow</span><span class="p">;</span>
<a name="line-1545"></a> <span class="p">}</span>
<a name="line-1546"></a>
<a name="line-1547"></a> <span class="n">QModelIndex</span> <span class="n">current</span> <span class="o">=</span> <span class="n">selectionModel</span><span class="p">()</span> <span class="o">?</span> <span class="n">selectionModel</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">currentIndex</span><span class="p">()</span>
<a name="line-1548"></a> <span class="o">:</span> <span class="n">QModelIndex</span><span class="p">();</span>
<a name="line-1549"></a>
<a name="line-1550"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">current</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-1551"></a> <span class="p">{</span>
<a name="line-1552"></a> <span class="k">if</span> <span class="p">(</span><span class="n">cursorAction</span> <span class="o">==</span> <span class="n">MoveEnd</span><span class="p">)</span>
<a name="line-1553"></a> <span class="p">{</span>
<a name="line-1554"></a> <span class="n">current</span> <span class="o">=</span> <span class="n">model</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">model</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">rowCount</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">QModelIndex</span><span class="p">());</span>
<a name="line-1555"></a><span class="cm">/*</span>
<a name="line-1556"></a><span class="cm"> d-&gt;forcedSelectionPosition = d-&gt;elementsInfo[current.row()].relativeOffsetToCategory % elementsPerRow;</span>
<a name="line-1557"></a><span class="cm">*/</span>
<a name="line-1558"></a> <span class="p">}</span>
<a name="line-1559"></a> <span class="k">else</span>
<a name="line-1560"></a> <span class="p">{</span>
<a name="line-1561"></a> <span class="n">current</span> <span class="o">=</span> <span class="n">model</span><span class="p">()</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-1562"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">forcedSelectionPosition</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-1563"></a> <span class="p">}</span>
<a name="line-1564"></a>
<a name="line-1565"></a> <span class="k">return</span> <span class="n">current</span><span class="p">;</span>
<a name="line-1566"></a> <span class="p">}</span>
<a name="line-1567"></a>
<a name="line-1568"></a> <span class="n">QString</span> <span class="n">lastCategory</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categories</span><span class="p">.</span><span class="n">first</span><span class="p">();</span>
<a name="line-1569"></a> <span class="n">QString</span> <span class="n">theCategory</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categories</span><span class="p">.</span><span class="n">first</span><span class="p">();</span>
<a name="line-1570"></a> <span class="n">QString</span> <span class="n">afterCategory</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categories</span><span class="p">.</span><span class="n">first</span><span class="p">();</span>
<a name="line-1571"></a> <span class="kt">bool</span> <span class="n">hasToBreak</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-1572"></a>
<a name="line-1573"></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">category</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categories</span><span class="p">)</span>
<a name="line-1574"></a> <span class="p">{</span>
<a name="line-1575"></a> <span class="k">if</span> <span class="p">(</span><span class="n">hasToBreak</span><span class="p">)</span>
<a name="line-1576"></a> <span class="p">{</span>
<a name="line-1577"></a> <span class="n">afterCategory</span> <span class="o">=</span> <span class="n">category</span><span class="p">;</span>
<a name="line-1578"></a>
<a name="line-1579"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-1580"></a> <span class="p">}</span>
<a name="line-1581"></a>
<a name="line-1582"></a> <span class="k">if</span> <span class="p">(</span><span class="n">category</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsInfo</span><span class="p">[</span><span class="n">current</span><span class="p">.</span><span class="n">row</span><span class="p">()].</span><span class="n">category</span><span class="p">)</span>
<a name="line-1583"></a> <span class="p">{</span>
<a name="line-1584"></a> <span class="n">theCategory</span> <span class="o">=</span> <span class="n">category</span><span class="p">;</span>
<a name="line-1585"></a> <span class="n">hasToBreak</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-1586"></a> <span class="p">}</span>
<a name="line-1587"></a>
<a name="line-1588"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">hasToBreak</span><span class="p">)</span>
<a name="line-1589"></a> <span class="p">{</span>
<a name="line-1590"></a> <span class="n">lastCategory</span> <span class="o">=</span> <span class="n">category</span><span class="p">;</span>
<a name="line-1591"></a> <span class="p">}</span>
<a name="line-1592"></a> <span class="p">}</span>
<a name="line-1593"></a>
<a name="line-1594"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">cursorAction</span><span class="p">)</span>
<a name="line-1595"></a> <span class="p">{</span>
<a name="line-1596"></a> <span class="k">case</span> <span class="n">QAbstractItemView</span><span class="o">::</span><span class="nl">MovePageUp</span><span class="p">:</span>
<a name="line-1597"></a> <span class="p">{</span>
<a name="line-1598"></a> <span class="c1">// We need to reimplement PageUp/Down as well because</span>
<a name="line-1599"></a> <span class="c1">// default QListView implementation will not work properly with our custom layout</span>
<a name="line-1600"></a>
<a name="line-1601"></a> <span class="n">QModelIndexList</span> <span class="n">visibleIndexes</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">intersectionSet</span><span class="p">(</span><span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">());</span>
<a name="line-1602"></a>
<a name="line-1603"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">visibleIndexes</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-1604"></a> <span class="p">{</span>
<a name="line-1605"></a> <span class="kt">int</span> <span class="n">indexToMove</span> <span class="o">=</span> <span class="n">qMax</span><span class="p">(</span><span class="n">current</span><span class="p">.</span><span class="n">row</span><span class="p">()</span> <span class="o">-</span> <span class="n">visibleIndexes</span><span class="p">.</span><span class="n">size</span><span class="p">(),</span> <span class="mi">0</span><span class="p">);</span>
<a name="line-1606"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">indexToMove</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<a name="line-1607"></a> <span class="p">}</span>
<a name="line-1608"></a>
<a name="line-1609"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-1610"></a> <span class="p">}</span>
<a name="line-1611"></a>
<a name="line-1612"></a> <span class="c1">// fall through</span>
<a name="line-1613"></a>
<a name="line-1614"></a> <span class="k">case</span> <span class="n">QAbstractItemView</span><span class="o">::</span><span class="nl">MoveUp</span><span class="p">:</span>
<a name="line-1615"></a> <span class="p">{</span>
<a name="line-1616"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsInfo</span><span class="p">[</span><span class="n">current</span><span class="p">.</span><span class="n">row</span><span class="p">()].</span><span class="n">relativeOffsetToCategory</span> <span class="o">&gt;=</span> <span class="n">elementsPerRow</span><span class="p">)</span>
<a name="line-1617"></a> <span class="p">{</span>
<a name="line-1618"></a> <span class="kt">int</span> <span class="n">indexToMove</span> <span class="o">=</span> <span class="n">current</span><span class="p">.</span><span class="n">row</span><span class="p">();</span>
<a name="line-1619"></a> <span class="n">indexToMove</span> <span class="o">-=</span> <span class="n">qMin</span><span class="p">(((</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsInfo</span><span class="p">[</span><span class="n">current</span><span class="p">.</span><span class="n">row</span><span class="p">()].</span><span class="n">relativeOffsetToCategory</span><span class="p">)</span> <span class="o">+</span>
<a name="line-1620"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">forcedSelectionPosition</span><span class="p">),</span> <span class="n">elementsPerRow</span> <span class="o">-</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">forcedSelectionPosition</span> <span class="o">+</span>
<a name="line-1621"></a> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsInfo</span><span class="p">[</span><span class="n">current</span><span class="p">.</span><span class="n">row</span><span class="p">()].</span><span class="n">relativeOffsetToCategory</span> <span class="o">%</span> <span class="n">elementsPerRow</span><span class="p">));</span>
<a name="line-1622"></a>
<a name="line-1623"></a> <span class="k">return</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">indexToMove</span><span class="p">,</span> <span class="mi">0</span><span class="p">));</span>
<a name="line-1624"></a> <span class="p">}</span>
<a name="line-1625"></a> <span class="k">else</span>
<a name="line-1626"></a> <span class="p">{</span>
<a name="line-1627"></a> <span class="kt">int</span> <span class="n">lastCategoryLastRow</span> <span class="o">=</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoriesIndexes</span><span class="p">[</span><span class="n">lastCategory</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">elementsPerRow</span><span class="p">;</span>
<a name="line-1628"></a> <span class="kt">int</span> <span class="n">indexToMove</span> <span class="o">=</span> <span class="n">current</span><span class="p">.</span><span class="n">row</span><span class="p">()</span> <span class="o">-</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsInfo</span><span class="p">[</span><span class="n">current</span><span class="p">.</span><span class="n">row</span><span class="p">()].</span><span class="n">relativeOffsetToCategory</span><span class="p">;</span>
<a name="line-1629"></a>
<a name="line-1630"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">forcedSelectionPosition</span> <span class="o">&gt;=</span> <span class="n">lastCategoryLastRow</span><span class="p">)</span>
<a name="line-1631"></a> <span class="p">{</span>
<a name="line-1632"></a> <span class="n">indexToMove</span> <span class="o">-=</span> <span class="mi">1</span><span class="p">;</span>
<a name="line-1633"></a> <span class="p">}</span>
<a name="line-1634"></a> <span class="k">else</span>
<a name="line-1635"></a> <span class="p">{</span>
<a name="line-1636"></a> <span class="n">indexToMove</span> <span class="o">-=</span> <span class="n">qMin</span><span class="p">((</span><span class="n">lastCategoryLastRow</span> <span class="o">-</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">forcedSelectionPosition</span> <span class="o">+</span> <span class="mi">1</span><span class="p">),</span>
<a name="line-1637"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">forcedSelectionPosition</span> <span class="o">+</span> <span class="n">elementsPerRow</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-1638"></a> <span class="p">}</span>
<a name="line-1639"></a>
<a name="line-1640"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">indexToMove</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<a name="line-1641"></a> <span class="p">}</span>
<a name="line-1642"></a> <span class="p">}</span>
<a name="line-1643"></a>
<a name="line-1644"></a> <span class="k">case</span> <span class="n">QAbstractItemView</span><span class="o">::</span><span class="nl">MovePageDown</span><span class="p">:</span>
<a name="line-1645"></a> <span class="p">{</span>
<a name="line-1646"></a> <span class="n">QModelIndexList</span> <span class="n">visibleIndexes</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">intersectionSet</span><span class="p">(</span><span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">());</span>
<a name="line-1647"></a>
<a name="line-1648"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">visibleIndexes</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-1649"></a> <span class="p">{</span>
<a name="line-1650"></a> <span class="kt">int</span> <span class="n">indexToMove</span> <span class="o">=</span> <span class="n">qMin</span><span class="p">(</span><span class="n">current</span><span class="p">.</span><span class="n">row</span><span class="p">()</span> <span class="o">+</span> <span class="n">visibleIndexes</span><span class="p">.</span><span class="n">size</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsInfo</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-1651"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">indexToMove</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<a name="line-1652"></a> <span class="p">}</span>
<a name="line-1653"></a> <span class="p">}</span>
<a name="line-1654"></a>
<a name="line-1655"></a> <span class="c1">// fall through</span>
<a name="line-1656"></a>
<a name="line-1657"></a> <span class="k">case</span> <span class="n">QAbstractItemView</span><span class="o">::</span><span class="nl">MoveDown</span><span class="p">:</span>
<a name="line-1658"></a> <span class="p">{</span>
<a name="line-1659"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsInfo</span><span class="p">[</span><span class="n">current</span><span class="p">.</span><span class="n">row</span><span class="p">()].</span><span class="n">relativeOffsetToCategory</span> <span class="o">&lt;</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoriesIndexes</span><span class="p">[</span><span class="n">theCategory</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="o">-</span> <span class="p">((</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoriesIndexes</span><span class="p">[</span><span class="n">theCategory</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">elementsPerRow</span><span class="p">)))</span>
<a name="line-1660"></a> <span class="p">{</span>
<a name="line-1661"></a> <span class="kt">int</span> <span class="n">indexToMove</span> <span class="o">=</span> <span class="n">current</span><span class="p">.</span><span class="n">row</span><span class="p">();</span>
<a name="line-1662"></a> <span class="n">indexToMove</span> <span class="o">+=</span> <span class="n">qMin</span><span class="p">(</span><span class="n">elementsPerRow</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categoriesIndexes</span><span class="p">[</span><span class="n">theCategory</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="o">-</span>
<a name="line-1663"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsInfo</span><span class="p">[</span><span class="n">current</span><span class="p">.</span><span class="n">row</span><span class="p">()].</span><span class="n">relativeOffsetToCategory</span><span class="p">);</span>
<a name="line-1664"></a>
<a name="line-1665"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">indexToMove</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<a name="line-1666"></a> <span class="p">}</span>
<a name="line-1667"></a> <span class="k">else</span>
<a name="line-1668"></a> <span class="p">{</span>
<a name="line-1669"></a> <span class="kt">int</span> <span class="n">afterCategoryLastRow</span> <span class="o">=</span> <span class="n">qMin</span><span class="p">(</span><span class="n">elementsPerRow</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categoriesIndexes</span><span class="p">[</span><span class="n">afterCategory</span><span class="p">].</span><span class="n">count</span><span class="p">());</span>
<a name="line-1670"></a> <span class="kt">int</span> <span class="n">indexToMove</span> <span class="o">=</span> <span class="n">current</span><span class="p">.</span><span class="n">row</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">categoriesIndexes</span><span class="p">[</span><span class="n">theCategory</span><span class="p">].</span><span class="n">count</span><span class="p">()</span> <span class="o">-</span>
<a name="line-1671"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsInfo</span><span class="p">[</span><span class="n">current</span><span class="p">.</span><span class="n">row</span><span class="p">()].</span><span class="n">relativeOffsetToCategory</span><span class="p">);</span>
<a name="line-1672"></a>
<a name="line-1673"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">forcedSelectionPosition</span> <span class="o">&gt;=</span> <span class="n">afterCategoryLastRow</span><span class="p">)</span>
<a name="line-1674"></a> <span class="p">{</span>
<a name="line-1675"></a> <span class="n">indexToMove</span> <span class="o">+=</span> <span class="n">afterCategoryLastRow</span> <span class="o">-</span> <span class="mi">1</span><span class="p">;</span>
<a name="line-1676"></a> <span class="p">}</span>
<a name="line-1677"></a> <span class="k">else</span>
<a name="line-1678"></a> <span class="p">{</span>
<a name="line-1679"></a> <span class="n">indexToMove</span> <span class="o">+=</span> <span class="n">qMin</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">forcedSelectionPosition</span><span class="p">,</span> <span class="n">elementsPerRow</span><span class="p">);</span>
<a name="line-1680"></a> <span class="p">}</span>
<a name="line-1681"></a>
<a name="line-1682"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">indexToMove</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<a name="line-1683"></a> <span class="p">}</span>
<a name="line-1684"></a> <span class="p">}</span>
<a name="line-1685"></a>
<a name="line-1686"></a> <span class="k">case</span> <span class="n">QAbstractItemView</span><span class="o">::</span><span class="nl">MoveLeft</span><span class="p">:</span>
<a name="line-1687"></a>
<a name="line-1688"></a> <span class="k">if</span> <span class="p">(</span><span class="n">layoutDirection</span><span class="p">()</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">RightToLeft</span><span class="p">)</span>
<a name="line-1689"></a> <span class="p">{</span>
<a name="line-1690"></a> <span class="k">if</span> <span class="p">(((</span><span class="n">current</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> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsInfo</span><span class="p">.</span><span class="n">size</span><span class="p">())</span> <span class="o">||</span>
<a name="line-1691"></a> <span class="o">!</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsInfo</span><span class="p">[</span><span class="n">current</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><span class="n">relativeOffsetToCategory</span> <span class="o">%</span> <span class="n">elementsPerRow</span><span class="p">))</span>
<a name="line-1692"></a> <span class="p">{</span>
<a name="line-1693"></a> <span class="k">return</span> <span class="n">current</span><span class="p">;</span>
<a name="line-1694"></a> <span class="p">}</span>
<a name="line-1695"></a>
<a name="line-1696"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">current</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> <span class="mi">0</span><span class="p">);</span>
<a name="line-1697"></a> <span class="p">}</span>
<a name="line-1698"></a>
<a name="line-1699"></a> <span class="k">if</span> <span class="p">((</span><span class="n">current</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> <span class="o">||</span>
<a name="line-1700"></a> <span class="o">!</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsInfo</span><span class="p">[</span><span class="n">current</span><span class="p">.</span><span class="n">row</span><span class="p">()].</span><span class="n">relativeOffsetToCategory</span> <span class="o">%</span> <span class="n">elementsPerRow</span><span class="p">))</span>
<a name="line-1701"></a> <span class="p">{</span>
<a name="line-1702"></a> <span class="k">return</span> <span class="n">current</span><span class="p">;</span>
<a name="line-1703"></a> <span class="p">}</span>
<a name="line-1704"></a>
<a name="line-1705"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">current</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> <span class="mi">0</span><span class="p">);</span>
<a name="line-1706"></a>
<a name="line-1707"></a> <span class="k">case</span> <span class="n">QAbstractItemView</span><span class="o">::</span><span class="nl">MoveRight</span><span class="p">:</span>
<a name="line-1708"></a>
<a name="line-1709"></a> <span class="k">if</span> <span class="p">(</span><span class="n">layoutDirection</span><span class="p">()</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">RightToLeft</span><span class="p">)</span>
<a name="line-1710"></a> <span class="p">{</span>
<a name="line-1711"></a> <span class="k">if</span> <span class="p">((</span><span class="n">current</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> <span class="o">||</span>
<a name="line-1712"></a> <span class="o">!</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsInfo</span><span class="p">[</span><span class="n">current</span><span class="p">.</span><span class="n">row</span><span class="p">()].</span><span class="n">relativeOffsetToCategory</span> <span class="o">%</span> <span class="n">elementsPerRow</span><span class="p">))</span>
<a name="line-1713"></a> <span class="p">{</span>
<a name="line-1714"></a> <span class="k">return</span> <span class="n">current</span><span class="p">;</span>
<a name="line-1715"></a> <span class="p">}</span>
<a name="line-1716"></a>
<a name="line-1717"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">current</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> <span class="mi">0</span><span class="p">);</span>
<a name="line-1718"></a> <span class="p">}</span>
<a name="line-1719"></a>
<a name="line-1720"></a> <span class="k">if</span> <span class="p">(((</span><span class="n">current</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> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsInfo</span><span class="p">.</span><span class="n">size</span><span class="p">())</span> <span class="o">||</span>
<a name="line-1721"></a> <span class="o">!</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsInfo</span><span class="p">[</span><span class="n">current</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><span class="n">relativeOffsetToCategory</span> <span class="o">%</span> <span class="n">elementsPerRow</span><span class="p">))</span>
<a name="line-1722"></a> <span class="p">{</span>
<a name="line-1723"></a> <span class="k">return</span> <span class="n">current</span><span class="p">;</span>
<a name="line-1724"></a> <span class="p">}</span>
<a name="line-1725"></a>
<a name="line-1726"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">current</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> <span class="mi">0</span><span class="p">);</span>
<a name="line-1727"></a>
<a name="line-1728"></a> <span class="k">default</span><span class="o">:</span>
<a name="line-1729"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-1730"></a> <span class="p">}</span>
<a name="line-1731"></a>
<a name="line-1732"></a> <span class="k">return</span> <span class="n">QListView</span><span class="o">::</span><span class="n">moveCursor</span><span class="p">(</span><span class="n">cursorAction</span><span class="p">,</span> <span class="n">modifiers</span><span class="p">);</span>
<a name="line-1733"></a><span class="p">}</span>
<a name="line-1734"></a>
<a name="line-1735"></a><span class="kt">void</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">rowsInserted</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-1736"></a><span class="p">{</span>
<a name="line-1737"></a> <span class="n">QListView</span><span class="o">::</span><span class="n">rowsInserted</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-1738"></a>
<a name="line-1739"></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">proxyModel</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryDrawer</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">isCategorizedModel</span><span class="p">())</span>
<a name="line-1740"></a> <span class="p">{</span>
<a name="line-1741"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">forcedSelectionPosition</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-1742"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">hovered</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
<a name="line-1743"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">biggestItemSize</span> <span class="o">=</span> <span class="n">QSize</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-1744"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mouseButtonPressed</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-1745"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rightMouseButtonPressed</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-1746"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsInfo</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-1747"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsPosition</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-1748"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categoriesIndexes</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-1749"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categoriesPosition</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-1750"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categories</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-1751"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">intersectedIndexes</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-1752"></a>
<a name="line-1753"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-1754"></a> <span class="p">}</span>
<a name="line-1755"></a>
<a name="line-1756"></a> <span class="n">rowsInsertedArtifficial</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-1757"></a><span class="p">}</span>
<a name="line-1758"></a>
<a name="line-1759"></a><span class="kt">int</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">categoryUpperBound</span><span class="p">(</span><span class="n">SparseModelIndexVector</span><span class="o">&amp;</span> <span class="n">modelIndexList</span><span class="p">,</span> <span class="kt">int</span> <span class="n">begin</span><span class="p">,</span> <span class="kt">int</span> <span class="n">averageSize</span><span class="p">)</span>
<a name="line-1760"></a><span class="p">{</span>
<a name="line-1761"></a> <span class="kt">int</span> <span class="n">end</span> <span class="o">=</span> <span class="n">modelIndexList</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
<a name="line-1762"></a> <span class="n">QString</span> <span class="n">category</span> <span class="o">=</span> <span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">(</span><span class="n">modelIndexList</span><span class="p">[</span><span class="n">begin</span><span class="p">],</span>
<a name="line-1763"></a> <span class="n">DCategorizedSortFilterProxyModel</span><span class="o">::</span><span class="n">CategoryDisplayRole</span><span class="p">).</span><span class="n">toString</span><span class="p">();</span>
<a name="line-1764"></a>
<a name="line-1765"></a> <span class="c1">// First case: Small category with &lt;10 entries</span>
<a name="line-1766"></a>
<a name="line-1767"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">smallEnd</span> <span class="o">=</span> <span class="n">qMin</span><span class="p">(</span><span class="n">end</span><span class="p">,</span> <span class="n">begin</span> <span class="o">+</span> <span class="mi">10</span><span class="p">);</span>
<a name="line-1768"></a>
<a name="line-1769"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">k</span> <span class="o">=</span> <span class="n">begin</span> <span class="p">;</span> <span class="n">k</span> <span class="o">&lt;</span> <span class="n">smallEnd</span> <span class="p">;</span> <span class="o">++</span><span class="n">k</span><span class="p">)</span>
<a name="line-1770"></a> <span class="p">{</span>
<a name="line-1771"></a> <span class="k">if</span> <span class="p">(</span><span class="n">category</span> <span class="o">!=</span> <span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">(</span><span class="n">modelIndexList</span><span class="p">[</span><span class="n">k</span><span class="p">],</span>
<a name="line-1772"></a> <span class="n">DCategorizedSortFilterProxyModel</span><span class="o">::</span><span class="n">CategoryDisplayRole</span><span class="p">).</span><span class="n">toString</span><span class="p">())</span>
<a name="line-1773"></a> <span class="p">{</span>
<a name="line-1774"></a> <span class="k">return</span> <span class="n">k</span><span class="p">;</span>
<a name="line-1775"></a> <span class="p">}</span>
<a name="line-1776"></a> <span class="p">}</span>
<a name="line-1777"></a>
<a name="line-1778"></a> <span class="n">begin</span> <span class="o">+=</span> <span class="mi">10</span><span class="p">;</span>
<a name="line-1779"></a>
<a name="line-1780"></a> <span class="c1">// Second case: only one category, test last value</span>
<a name="line-1781"></a>
<a name="line-1782"></a> <span class="n">QString</span> <span class="n">value</span> <span class="o">=</span> <span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">(</span><span class="n">modelIndexList</span><span class="p">[</span><span class="n">end</span> <span class="o">-</span> <span class="mi">1</span><span class="p">],</span>
<a name="line-1783"></a> <span class="n">DCategorizedSortFilterProxyModel</span><span class="o">::</span><span class="n">CategoryDisplayRole</span><span class="p">).</span><span class="n">toString</span><span class="p">();</span>
<a name="line-1784"></a>
<a name="line-1785"></a> <span class="k">if</span> <span class="p">(</span><span class="n">value</span> <span class="o">==</span> <span class="n">category</span><span class="p">)</span>
<a name="line-1786"></a> <span class="p">{</span>
<a name="line-1787"></a> <span class="k">return</span> <span class="n">end</span><span class="p">;</span>
<a name="line-1788"></a> <span class="p">}</span>
<a name="line-1789"></a>
<a name="line-1790"></a> <span class="c1">// Third case: use average of last category sizes</span>
<a name="line-1791"></a>
<a name="line-1792"></a> <span class="k">if</span> <span class="p">(</span><span class="n">averageSize</span> <span class="o">&amp;&amp;</span> <span class="p">((</span><span class="n">begin</span> <span class="o">+</span> <span class="n">averageSize</span><span class="p">)</span> <span class="o">&lt;</span> <span class="n">end</span><span class="p">))</span>
<a name="line-1793"></a> <span class="p">{</span>
<a name="line-1794"></a> <span class="k">if</span> <span class="p">(</span><span class="n">category</span> <span class="o">!=</span> <span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">(</span><span class="n">modelIndexList</span><span class="p">[</span><span class="n">begin</span> <span class="o">+</span> <span class="n">averageSize</span><span class="p">],</span>
<a name="line-1795"></a> <span class="n">DCategorizedSortFilterProxyModel</span><span class="o">::</span><span class="n">CategoryDisplayRole</span><span class="p">).</span><span class="n">toString</span><span class="p">())</span>
<a name="line-1796"></a> <span class="p">{</span>
<a name="line-1797"></a> <span class="n">end</span> <span class="o">=</span> <span class="n">begin</span> <span class="o">+</span> <span class="n">averageSize</span><span class="p">;</span>
<a name="line-1798"></a> <span class="p">}</span>
<a name="line-1799"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">begin</span> <span class="o">+</span> <span class="mi">2</span><span class="o">*</span><span class="n">averageSize</span> <span class="o">&lt;</span> <span class="n">end</span><span class="p">)</span>
<a name="line-1800"></a> <span class="p">{</span>
<a name="line-1801"></a> <span class="k">if</span> <span class="p">(</span><span class="n">category</span> <span class="o">!=</span> <span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">(</span><span class="n">modelIndexList</span><span class="p">[</span><span class="n">begin</span> <span class="o">+</span> <span class="mi">2</span><span class="o">*</span><span class="n">averageSize</span><span class="p">],</span>
<a name="line-1802"></a> <span class="n">DCategorizedSortFilterProxyModel</span><span class="o">::</span><span class="n">CategoryDisplayRole</span><span class="p">).</span><span class="n">toString</span><span class="p">())</span>
<a name="line-1803"></a> <span class="p">{</span>
<a name="line-1804"></a> <span class="n">end</span> <span class="o">=</span> <span class="n">begin</span> <span class="o">+</span> <span class="mi">2</span> <span class="o">*</span> <span class="n">averageSize</span><span class="p">;</span>
<a name="line-1805"></a> <span class="p">}</span>
<a name="line-1806"></a> <span class="p">}</span>
<a name="line-1807"></a> <span class="p">}</span>
<a name="line-1808"></a>
<a name="line-1809"></a> <span class="c1">// now apply a binary search - the model is sorted by category</span>
<a name="line-1810"></a> <span class="c1">// from qUpperBound, Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)</span>
<a name="line-1811"></a>
<a name="line-1812"></a> <span class="kt">int</span> <span class="n">middle</span><span class="p">;</span>
<a name="line-1813"></a> <span class="kt">int</span> <span class="n">n</span> <span class="o">=</span> <span class="n">end</span> <span class="o">-</span> <span class="n">begin</span><span class="p">;</span>
<a name="line-1814"></a> <span class="kt">int</span> <span class="n">half</span><span class="p">;</span>
<a name="line-1815"></a>
<a name="line-1816"></a> <span class="k">while</span> <span class="p">(</span><span class="n">n</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-1817"></a> <span class="p">{</span>
<a name="line-1818"></a> <span class="n">half</span> <span class="o">=</span> <span class="n">n</span> <span class="o">&gt;&gt;</span> <span class="mi">1</span><span class="p">;</span>
<a name="line-1819"></a> <span class="n">middle</span> <span class="o">=</span> <span class="n">begin</span> <span class="o">+</span> <span class="n">half</span><span class="p">;</span>
<a name="line-1820"></a>
<a name="line-1821"></a> <span class="k">if</span> <span class="p">(</span><span class="n">category</span> <span class="o">!=</span> <span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">(</span><span class="n">modelIndexList</span><span class="p">[</span><span class="n">middle</span><span class="p">],</span>
<a name="line-1822"></a> <span class="n">DCategorizedSortFilterProxyModel</span><span class="o">::</span><span class="n">CategoryDisplayRole</span><span class="p">).</span><span class="n">toString</span><span class="p">())</span>
<a name="line-1823"></a> <span class="p">{</span>
<a name="line-1824"></a> <span class="n">n</span> <span class="o">=</span> <span class="n">half</span><span class="p">;</span>
<a name="line-1825"></a> <span class="p">}</span>
<a name="line-1826"></a> <span class="k">else</span>
<a name="line-1827"></a> <span class="p">{</span>
<a name="line-1828"></a> <span class="n">begin</span> <span class="o">=</span> <span class="n">middle</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
<a name="line-1829"></a> <span class="n">n</span> <span class="o">-=</span> <span class="n">half</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
<a name="line-1830"></a> <span class="p">}</span>
<a name="line-1831"></a> <span class="p">}</span>
<a name="line-1832"></a>
<a name="line-1833"></a> <span class="k">return</span> <span class="n">begin</span><span class="p">;</span>
<a name="line-1834"></a><span class="p">}</span>
<a name="line-1835"></a>
<a name="line-1836"></a><span class="kt">void</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">rowsInsertedArtifficial</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-1837"></a><span class="p">{</span>
<a name="line-1838"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
<a name="line-1839"></a>
<a name="line-1840"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">forcedSelectionPosition</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-1841"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">hovered</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
<a name="line-1842"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">biggestItemSize</span> <span class="o">=</span> <span class="n">QSize</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-1843"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mouseButtonPressed</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-1844"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rightMouseButtonPressed</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-1845"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsInfo</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-1846"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsPosition</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-1847"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categoriesIndexes</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-1848"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categoriesPosition</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-1849"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categories</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-1850"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">intersectedIndexes</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-1851"></a>
<a name="line-1852"></a> <span class="k">if</span> <span class="p">((</span><span class="n">start</span> <span class="o">&gt;</span> <span class="n">end</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">end</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">start</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">())</span>
<a name="line-1853"></a> <span class="p">{</span>
<a name="line-1854"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-1855"></a> <span class="p">}</span>
<a name="line-1856"></a>
<a name="line-1857"></a> <span class="c1">// Add all elements mapped to the source model and explore categories</span>
<a name="line-1858"></a>
<a name="line-1859"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">rowCount</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">();</span>
<a name="line-1860"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">sortColumn</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">sortColumn</span><span class="p">();</span>
<a name="line-1861"></a> <span class="n">QString</span> <span class="n">lastCategory</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</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="n">sortColumn</span><span class="p">),</span>
<a name="line-1862"></a> <span class="n">DCategorizedSortFilterProxyModel</span><span class="o">::</span><span class="n">CategoryDisplayRole</span><span class="p">).</span><span class="n">toString</span><span class="p">();</span>
<a name="line-1863"></a> <span class="kt">int</span> <span class="n">offset</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<a name="line-1864"></a>
<a name="line-1865"></a> <span class="n">SparseModelIndexVector</span> <span class="nf">modelIndexList</span><span class="p">(</span><span class="n">rowCount</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="p">,</span> <span class="n">sortColumn</span><span class="p">);</span>
<a name="line-1866"></a>
<a name="line-1867"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsInfo</span> <span class="o">=</span> <span class="n">QVector</span><span class="o">&lt;</span><span class="k">struct</span> <span class="n">Private</span><span class="o">::</span><span class="n">ElementInfo</span><span class="o">&gt;</span><span class="p">(</span><span class="n">rowCount</span><span class="p">);</span>
<a name="line-1868"></a> <span class="kt">int</span> <span class="n">categorySizes</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-1869"></a> <span class="kt">int</span> <span class="n">categoryCounts</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-1870"></a>
<a name="line-1871"></a> <span class="k">if</span> <span class="p">(</span><span class="n">uniformItemSizes</span><span class="p">())</span>
<a name="line-1872"></a> <span class="p">{</span>
<a name="line-1873"></a> <span class="c1">// use last index as sample for size hint</span>
<a name="line-1874"></a>
<a name="line-1875"></a> <span class="n">QModelIndex</span> <span class="n">sample</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">rowCount</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">modelColumn</span><span class="p">(),</span> <span class="n">rootIndex</span><span class="p">());</span>
<a name="line-1876"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">biggestItemSize</span> <span class="o">=</span> <span class="n">sizeHintForIndex</span><span class="p">(</span><span class="n">sample</span><span class="p">);</span>
<a name="line-1877"></a> <span class="p">}</span>
<a name="line-1878"></a> <span class="k">else</span>
<a name="line-1879"></a> <span class="p">{</span>
<a name="line-1880"></a> <span class="n">QStyleOptionViewItem</span> <span class="n">option</span> <span class="o">=</span> <span class="n">viewOptions</span><span class="p">();</span>
<a name="line-1881"></a>
<a name="line-1882"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">k</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">k</span> <span class="o">&lt;</span> <span class="n">rowCount</span> <span class="p">;</span> <span class="o">++</span><span class="n">k</span><span class="p">)</span>
<a name="line-1883"></a> <span class="p">{</span>
<a name="line-1884"></a> <span class="n">QModelIndex</span> <span class="n">indexSize</span> <span class="o">=</span> <span class="p">(</span><span class="n">sortColumn</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="o">?</span> <span class="n">modelIndexList</span><span class="p">[</span><span class="n">k</span><span class="p">]</span> <span class="o">:</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">index</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<a name="line-1885"></a> <span class="n">QSize</span> <span class="n">hint</span> <span class="o">=</span> <span class="n">itemDelegate</span><span class="p">(</span><span class="n">indexSize</span><span class="p">)</span><span class="o">-&gt;</span><span class="n">sizeHint</span><span class="p">(</span><span class="n">option</span><span class="p">,</span> <span class="n">indexSize</span><span class="p">);</span>
<a name="line-1886"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">biggestItemSize</span> <span class="o">=</span> <span class="n">QSize</span><span class="p">(</span><span class="n">qMax</span><span class="p">(</span><span class="n">hint</span><span class="p">.</span><span class="n">width</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">biggestItemSize</span><span class="p">.</span><span class="n">width</span><span class="p">()),</span>
<a name="line-1887"></a> <span class="n">qMax</span><span class="p">(</span><span class="n">hint</span><span class="p">.</span><span class="n">height</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">biggestItemSize</span><span class="p">.</span><span class="n">height</span><span class="p">()));</span>
<a name="line-1888"></a> <span class="p">}</span>
<a name="line-1889"></a> <span class="p">}</span>
<a name="line-1890"></a>
<a name="line-1891"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">k</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">k</span> <span class="o">&lt;</span> <span class="n">rowCount</span> <span class="p">;</span> <span class="p">)</span>
<a name="line-1892"></a> <span class="p">{</span>
<a name="line-1893"></a> <span class="n">lastCategory</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">data</span><span class="p">(</span><span class="n">modelIndexList</span><span class="p">[</span><span class="n">k</span><span class="p">],</span> <span class="n">DCategorizedSortFilterProxyModel</span><span class="o">::</span><span class="n">CategoryDisplayRole</span><span class="p">).</span><span class="n">toString</span><span class="p">();</span>
<a name="line-1894"></a> <span class="kt">int</span> <span class="n">upperBound</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryUpperBound</span><span class="p">(</span><span class="n">modelIndexList</span><span class="p">,</span> <span class="n">k</span><span class="p">,</span> <span class="n">categorySizes</span> <span class="o">/</span> <span class="o">++</span><span class="n">categoryCounts</span><span class="p">);</span>
<a name="line-1895"></a> <span class="n">categorySizes</span> <span class="o">+=</span> <span class="n">upperBound</span> <span class="o">-</span> <span class="n">k</span><span class="p">;</span>
<a name="line-1896"></a> <span class="n">offset</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-1897"></a>
<a name="line-1898"></a> <span class="n">QVector</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">rows</span><span class="p">(</span><span class="n">upperBound</span> <span class="o">-</span> <span class="n">k</span><span class="p">);</span>
<a name="line-1899"></a>
<a name="line-1900"></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">k</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;</span> <span class="n">upperBound</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">,</span> <span class="o">++</span><span class="n">offset</span><span class="p">)</span>
<a name="line-1901"></a> <span class="p">{</span>
<a name="line-1902"></a> <span class="n">rows</span><span class="p">[</span><span class="n">offset</span><span class="p">]</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
<a name="line-1903"></a> <span class="k">struct</span> <span class="n">Private</span><span class="o">::</span><span class="n">ElementInfo</span><span class="o">&amp;</span> <span class="n">elementInfo</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsInfo</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
<a name="line-1904"></a> <span class="n">elementInfo</span><span class="p">.</span><span class="n">category</span> <span class="o">=</span> <span class="n">lastCategory</span><span class="p">;</span>
<a name="line-1905"></a> <span class="n">elementInfo</span><span class="p">.</span><span class="n">relativeOffsetToCategory</span> <span class="o">=</span> <span class="n">offset</span><span class="p">;</span>
<a name="line-1906"></a> <span class="p">}</span>
<a name="line-1907"></a>
<a name="line-1908"></a> <span class="n">k</span> <span class="o">=</span> <span class="n">upperBound</span><span class="p">;</span>
<a name="line-1909"></a>
<a name="line-1910"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categoriesIndexes</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">lastCategory</span><span class="p">,</span> <span class="n">rows</span><span class="p">);</span>
<a name="line-1911"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categories</span> <span class="o">&lt;&lt;</span> <span class="n">lastCategory</span><span class="p">;</span>
<a name="line-1912"></a> <span class="p">}</span>
<a name="line-1913"></a>
<a name="line-1914"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">updateScrollbars</span><span class="p">();</span>
<a name="line-1915"></a>
<a name="line-1916"></a> <span class="c1">// FIXME: We need to safely save the last selection. This is on my TODO</span>
<a name="line-1917"></a> <span class="c1">// list (ereslibre).</span>
<a name="line-1918"></a> <span class="c1">// Note: QItemSelectionModel will save it selection in persistend indexes</span>
<a name="line-1919"></a> <span class="c1">// on layoutChanged(). All works fine for me.</span>
<a name="line-1920"></a> <span class="c1">//selectionModel()-&gt;clear();</span>
<a name="line-1921"></a><span class="p">}</span>
<a name="line-1922"></a>
<a name="line-1923"></a><span class="kt">void</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">rowsRemoved</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-1924"></a><span class="p">{</span>
<a name="line-1925"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
<a name="line-1926"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">start</span><span class="p">);</span>
<a name="line-1927"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">end</span><span class="p">);</span>
<a name="line-1928"></a>
<a name="line-1929"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span> <span class="o">&amp;&amp;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryDrawer</span> <span class="o">&amp;&amp;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">isCategorizedModel</span><span class="p">())</span>
<a name="line-1930"></a> <span class="p">{</span>
<a name="line-1931"></a> <span class="c1">// Force the view to update all elements</span>
<a name="line-1932"></a>
<a name="line-1933"></a> <span class="n">rowsInsertedArtifficial</span><span class="p">(</span><span class="n">QModelIndex</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">proxyModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-1934"></a> <span class="p">}</span>
<a name="line-1935"></a><span class="p">}</span>
<a name="line-1936"></a>
<a name="line-1937"></a><span class="kt">void</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">updateGeometries</span><span class="p">()</span>
<a name="line-1938"></a><span class="p">{</span>
<a name="line-1939"></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">proxyModel</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryDrawer</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">isCategorizedModel</span><span class="p">())</span>
<a name="line-1940"></a> <span class="p">{</span>
<a name="line-1941"></a> <span class="n">QListView</span><span class="o">::</span><span class="n">updateGeometries</span><span class="p">();</span>
<a name="line-1942"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-1943"></a> <span class="p">}</span>
<a name="line-1944"></a>
<a name="line-1945"></a> <span class="c1">// Avoid QListView::updateGeometries(), since it will try to set another</span>
<a name="line-1946"></a> <span class="c1">// range to our scroll bars, what we don&#39;t want (ereslibre)</span>
<a name="line-1947"></a> <span class="n">QAbstractItemView</span><span class="o">::</span><span class="n">updateGeometries</span><span class="p">();</span>
<a name="line-1948"></a><span class="p">}</span>
<a name="line-1949"></a>
<a name="line-1950"></a><span class="kt">void</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">slotLayoutChanged</span><span class="p">()</span>
<a name="line-1951"></a><span class="p">{</span>
<a name="line-1952"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span> <span class="o">&amp;&amp;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryDrawer</span> <span class="o">&amp;&amp;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">isCategorizedModel</span><span class="p">())</span>
<a name="line-1953"></a> <span class="p">{</span>
<a name="line-1954"></a> <span class="c1">// all cached values are invalidated, recompute immediately</span>
<a name="line-1955"></a>
<a name="line-1956"></a> <span class="n">rowsInsertedArtifficial</span><span class="p">(</span><span class="n">QModelIndex</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">proxyModel</span><span class="o">-&gt;</span><span class="n">rowCount</span><span class="p">()</span> <span class="o">-</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-1957"></a> <span class="p">}</span>
<a name="line-1958"></a><span class="p">}</span>
<a name="line-1959"></a>
<a name="line-1960"></a><span class="kt">void</span> <span class="n">DCategorizedView</span><span class="o">::</span><span class="n">currentChanged</span><span class="p">(</span><span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">current</span><span class="p">,</span> <span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span> <span class="n">previous</span><span class="p">)</span>
<a name="line-1961"></a><span class="p">{</span>
<a name="line-1962"></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">proxyModel</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">categoryDrawer</span> <span class="o">||</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">proxyModel</span><span class="o">-&gt;</span><span class="n">isCategorizedModel</span><span class="p">())</span>
<a name="line-1963"></a> <span class="p">{</span>
<a name="line-1964"></a> <span class="n">QListView</span><span class="o">::</span><span class="n">currentChanged</span><span class="p">(</span><span class="n">current</span><span class="p">,</span> <span class="n">previous</span><span class="p">);</span>
<a name="line-1965"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-1966"></a> <span class="p">}</span>
<a name="line-1967"></a>
<a name="line-1968"></a> <span class="c1">// We need to update the forcedSelectionPosition property in order to correctly</span>
<a name="line-1969"></a> <span class="c1">// navigate after with keyboard using up &amp; down keys</span>
<a name="line-1970"></a>
<a name="line-1971"></a> <span class="kt">int</span> <span class="n">viewportWidth</span> <span class="o">=</span> <span class="n">viewport</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">width</span><span class="p">()</span> <span class="o">-</span> <span class="n">spacing</span><span class="p">();</span>
<a name="line-1972"></a>
<a name="line-1973"></a><span class="c1">// int itemHeight;</span>
<a name="line-1974"></a> <span class="kt">int</span> <span class="n">itemWidth</span><span class="p">;</span>
<a name="line-1975"></a>
<a name="line-1976"></a> <span class="k">if</span> <span class="p">(</span><span class="n">gridSize</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-1977"></a> <span class="p">{</span>
<a name="line-1978"></a><span class="c1">// itemHeight = d-&gt;biggestItemSize.height();</span>
<a name="line-1979"></a> <span class="n">itemWidth</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">biggestItemSize</span><span class="p">.</span><span class="n">width</span><span class="p">();</span>
<a name="line-1980"></a> <span class="p">}</span>
<a name="line-1981"></a> <span class="k">else</span>
<a name="line-1982"></a> <span class="p">{</span>
<a name="line-1983"></a><span class="c1">// itemHeight = gridSize().height();</span>
<a name="line-1984"></a> <span class="n">itemWidth</span> <span class="o">=</span> <span class="n">gridSize</span><span class="p">().</span><span class="n">width</span><span class="p">();</span>
<a name="line-1985"></a> <span class="p">}</span>
<a name="line-1986"></a>
<a name="line-1987"></a> <span class="kt">int</span> <span class="n">itemWidthPlusSeparation</span> <span class="o">=</span> <span class="n">spacing</span><span class="p">()</span> <span class="o">+</span> <span class="n">itemWidth</span><span class="p">;</span>
<a name="line-1988"></a>
<a name="line-1989"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">itemWidthPlusSeparation</span><span class="p">)</span>
<a name="line-1990"></a> <span class="p">{</span>
<a name="line-1991"></a> <span class="o">++</span><span class="n">itemWidthPlusSeparation</span><span class="p">;</span>
<a name="line-1992"></a> <span class="p">}</span>
<a name="line-1993"></a>
<a name="line-1994"></a> <span class="kt">int</span> <span class="n">elementsPerRow</span> <span class="o">=</span> <span class="n">viewportWidth</span> <span class="o">/</span> <span class="n">itemWidthPlusSeparation</span><span class="p">;</span>
<a name="line-1995"></a>
<a name="line-1996"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">elementsPerRow</span><span class="p">)</span>
<a name="line-1997"></a> <span class="p">{</span>
<a name="line-1998"></a> <span class="o">++</span><span class="n">elementsPerRow</span><span class="p">;</span>
<a name="line-1999"></a> <span class="p">}</span>
<a name="line-2000"></a>
<a name="line-2001"></a> <span class="k">if</span> <span class="p">(</span><span class="n">current</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-2002"></a> <span class="p">{</span>
<a name="line-2003"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">forcedSelectionPosition</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">elementsInfo</span><span class="p">[</span><span class="n">current</span><span class="p">.</span><span class="n">row</span><span class="p">()].</span><span class="n">relativeOffsetToCategory</span> <span class="o">%</span> <span class="n">elementsPerRow</span><span class="p">;</span>
<a name="line-2004"></a> <span class="p">}</span>
<a name="line-2005"></a>
<a name="line-2006"></a> <span class="n">QListView</span><span class="o">::</span><span class="n">currentChanged</span><span class="p">(</span><span class="n">current</span><span class="p">,</span> <span class="n">previous</span><span class="p">);</span>
<a name="line-2007"></a><span class="p">}</span>
<a name="line-2008"></a>
<a name="line-2009"></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/44.html b/static/reports/cppcheck/master/44.html
index 635cafc98..71ff56e61 100644
--- a/static/reports/cppcheck/master/44.html
+++ b/static/reports/cppcheck/master/44.html
@@ -1,3091 +1,3091 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/libs/widgets/mainview/sidebar.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/libs/widgets/mainview/sidebar.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> sidebar.cpp</p>
<a href='44.html#line-1035'> shadowVar 1035</a><a href='44.html#line-1067'> shadowVar 1067</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
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473</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-03-22</span>
<a name="line-7"></a><span class="cm"> * Description : a widget to manage sidebar in GUI.</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2005-2006 by Joern Ahrens &lt;joern dot ahrens at kdemail dot net&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"> * Copyright (C) 2008-2011 by Marcel Wiesweg &lt;marcel dot wiesweg at gmx dot de&gt;</span>
<a name="line-12"></a><span class="cm"> * Copyright (C) 2001-2003 by Joseph Wenninger &lt;jowenn at kde dot org&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;sidebar.h&quot;</span><span class="cp"></span>
<a name="line-28"></a>
<a name="line-29"></a><span class="c1">// C++ includes</span>
<a name="line-30"></a>
<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;cmath&gt;</span><span class="cp"></span>
<a name="line-32"></a>
<a name="line-33"></a><span class="c1">// Qt includes</span>
<a name="line-34"></a>
<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&lt;QDataStream&gt;</span><span class="cp"></span>
<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&lt;QDragEnterEvent&gt;</span><span class="cp"></span>
<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&lt;QEvent&gt;</span><span class="cp"></span>
<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&lt;QPixmap&gt;</span><span class="cp"></span>
<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&lt;QSplitter&gt;</span><span class="cp"></span>
<a name="line-40"></a><span class="cp">#include</span> <span class="cpf">&lt;QStackedWidget&gt;</span><span class="cp"></span>
<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&lt;QTimer&gt;</span><span class="cp"></span>
<a name="line-42"></a><span class="cp">#include</span> <span class="cpf">&lt;QHash&gt;</span><span class="cp"></span>
<a name="line-43"></a><span class="cp">#include</span> <span class="cpf">&lt;QScrollArea&gt;</span><span class="cp"></span>
<a name="line-44"></a><span class="cp">#include</span> <span class="cpf">&lt;QFrame&gt;</span><span class="cp"></span>
<a name="line-45"></a><span class="cp">#include</span> <span class="cpf">&lt;QActionEvent&gt;</span><span class="cp"></span>
<a name="line-46"></a><span class="cp">#include</span> <span class="cpf">&lt;QLayout&gt;</span><span class="cp"></span>
<a name="line-47"></a><span class="cp">#include</span> <span class="cpf">&lt;QPainter&gt;</span><span class="cp"></span>
<a name="line-48"></a><span class="cp">#include</span> <span class="cpf">&lt;QFontMetrics&gt;</span><span class="cp"></span>
<a name="line-49"></a><span class="cp">#include</span> <span class="cpf">&lt;QStyle&gt;</span><span class="cp"></span>
<a name="line-50"></a><span class="cp">#include</span> <span class="cpf">&lt;QStyleOptionButton&gt;</span><span class="cp"></span>
<a name="line-51"></a>
<a name="line-52"></a><span class="c1">// KDE includes</span>
<a name="line-53"></a>
<a name="line-54"></a><span class="cp">#include</span> <span class="cpf">&lt;kconfiggroup.h&gt;</span><span class="cp"></span>
<a name="line-55"></a>
<a name="line-56"></a><span class="c1">// Local includes</span>
<a name="line-57"></a>
<a name="line-58"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.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">Digikam</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">DMultiTabBarFrame</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">explicit</span> <span class="n">Private</span><span class="p">()</span>
<a name="line-68"></a> <span class="o">:</span> <span class="n">mainLayout</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-69"></a> <span class="n">position</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">LeftEdge</span><span class="p">),</span>
<a name="line-70"></a> <span class="n">style</span><span class="p">(</span><span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">AllIconsText</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="n">QBoxLayout</span><span class="o">*</span> <span class="n">mainLayout</span><span class="p">;</span>
<a name="line-75"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">DMultiTabBarTab</span><span class="o">*&gt;</span> <span class="n">tabs</span><span class="p">;</span>
<a name="line-76"></a> <span class="n">Qt</span><span class="o">::</span><span class="n">Edge</span> <span class="n">position</span><span class="p">;</span>
<a name="line-77"></a> <span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">TextStyle</span> <span class="n">style</span><span class="p">;</span>
<a name="line-78"></a><span class="p">};</span>
<a name="line-79"></a>
<a name="line-80"></a><span class="n">DMultiTabBarFrame</span><span class="o">::</span><span class="n">DMultiTabBarFrame</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">Qt</span><span class="o">::</span><span class="n">Edge</span> <span class="n">pos</span><span class="p">)</span>
<a name="line-81"></a> <span class="o">:</span> <span class="n">QFrame</span><span class="p">(</span><span class="n">parent</span><span class="p">),</span>
<a name="line-82"></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-83"></a><span class="p">{</span>
<a name="line-84"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">position</span> <span class="o">=</span> <span class="n">pos</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">pos</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">LeftEdge</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">pos</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">RightEdge</span><span class="p">))</span>
<a name="line-87"></a> <span class="p">{</span>
<a name="line-88"></a> <span class="n">d</span><span class="o">-&gt;</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-89"></a> <span class="p">}</span>
<a name="line-90"></a> <span class="k">else</span>
<a name="line-91"></a> <span class="p">{</span>
<a name="line-92"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mainLayout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QHBoxLayout</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-93"></a> <span class="p">}</span>
<a name="line-94"></a>
<a name="line-95"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mainLayout</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-96"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mainLayout</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-97"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mainLayout</span><span class="o">-&gt;</span><span class="n">addStretch</span><span class="p">();</span>
<a name="line-98"></a> <span class="n">setFrameStyle</span><span class="p">(</span><span class="n">NoFrame</span><span class="p">);</span>
<a name="line-99"></a> <span class="n">setBackgroundRole</span><span class="p">(</span><span class="n">QPalette</span><span class="o">::</span><span class="n">Window</span><span class="p">);</span>
<a name="line-100"></a><span class="p">}</span>
<a name="line-101"></a>
<a name="line-102"></a><span class="n">DMultiTabBarFrame</span><span class="o">::~</span><span class="n">DMultiTabBarFrame</span><span class="p">()</span>
<a name="line-103"></a><span class="p">{</span>
<a name="line-104"></a> <span class="n">qDeleteAll</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tabs</span><span class="p">);</span>
<a name="line-105"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabs</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-106"></a> <span class="k">delete</span> <span class="n">d</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="kt">void</span> <span class="n">DMultiTabBarFrame</span><span class="o">::</span><span class="n">setStyle</span><span class="p">(</span><span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">TextStyle</span> <span class="n">style</span><span class="p">)</span>
<a name="line-110"></a><span class="p">{</span>
<a name="line-111"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">style</span> <span class="o">=</span> <span class="n">style</span><span class="p">;</span>
<a name="line-112"></a>
<a name="line-113"></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">tabs</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-114"></a> <span class="p">{</span>
<a name="line-115"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabs</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">setStyle</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">style</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="n">updateGeometry</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="kt">void</span> <span class="n">DMultiTabBarFrame</span><span class="o">::</span><span class="n">contentsMousePressEvent</span><span class="p">(</span><span class="n">QMouseEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">)</span>
<a name="line-122"></a><span class="p">{</span>
<a name="line-123"></a> <span class="n">e</span><span class="o">-&gt;</span><span class="n">ignore</span><span class="p">();</span>
<a name="line-124"></a><span class="p">}</span>
<a name="line-125"></a>
<a name="line-126"></a><span class="kt">void</span> <span class="n">DMultiTabBarFrame</span><span class="o">::</span><span class="n">mousePressEvent</span><span class="p">(</span><span class="n">QMouseEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">)</span>
<a name="line-127"></a><span class="p">{</span>
<a name="line-128"></a> <span class="n">e</span><span class="o">-&gt;</span><span class="n">ignore</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">DMultiTabBarTab</span><span class="o">*</span> <span class="n">DMultiTabBarFrame</span><span class="o">::</span><span class="n">tab</span><span class="p">(</span><span class="kt">int</span> <span class="n">id</span><span class="p">)</span> <span class="k">const</span>
<a name="line-132"></a><span class="p">{</span>
<a name="line-133"></a> <span class="n">QListIterator</span><span class="o">&lt;</span><span class="n">DMultiTabBarTab</span><span class="o">*&gt;</span> <span class="n">it</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tabs</span><span class="p">);</span>
<a name="line-134"></a>
<a name="line-135"></a> <span class="k">while</span> <span class="p">(</span><span class="n">it</span><span class="p">.</span><span class="n">hasNext</span><span class="p">())</span>
<a name="line-136"></a> <span class="p">{</span>
<a name="line-137"></a> <span class="n">DMultiTabBarTab</span><span class="o">*</span> <span class="k">const</span> <span class="n">tab</span> <span class="o">=</span> <span class="n">it</span><span class="p">.</span><span class="n">next</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="n">tab</span><span class="o">-&gt;</span><span class="n">id</span><span class="p">()</span> <span class="o">==</span> <span class="n">id</span><span class="p">)</span>
<a name="line-140"></a> <span class="p">{</span>
<a name="line-141"></a> <span class="k">return</span> <span class="n">tab</span><span class="p">;</span>
<a name="line-142"></a> <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="k">return</span> <span class="k">nullptr</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="kt">int</span> <span class="n">DMultiTabBarFrame</span><span class="o">::</span><span class="n">appendTab</span><span class="p">(</span><span class="k">const</span> <span class="n">QPixmap</span><span class="o">&amp;</span> <span class="n">pic</span><span class="p">,</span> <span class="kt">int</span> <span class="n">id</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-149"></a><span class="p">{</span>
<a name="line-150"></a> <span class="n">DMultiTabBarTab</span><span class="o">*</span> <span class="k">const</span> <span class="n">tab</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DMultiTabBarTab</span><span class="p">(</span><span class="n">pic</span><span class="p">,</span> <span class="n">text</span><span class="p">,</span> <span class="n">id</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">position</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">style</span><span class="p">);</span>
<a name="line-151"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabs</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">tab</span><span class="p">);</span>
<a name="line-152"></a>
<a name="line-153"></a> <span class="c1">// Insert before the stretch.</span>
<a name="line-154"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">mainLayout</span><span class="o">-&gt;</span><span class="n">insertWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tabs</span><span class="p">.</span><span class="n">size</span><span class="p">()</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="n">tab</span><span class="p">);</span>
<a name="line-155"></a> <span class="n">tab</span><span class="o">-&gt;</span><span class="n">show</span><span class="p">();</span>
<a name="line-156"></a>
<a name="line-157"></a> <span class="k">return</span> <span class="mi">0</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="kt">void</span> <span class="n">DMultiTabBarFrame</span><span class="o">::</span><span class="n">removeTab</span><span class="p">(</span><span class="kt">int</span> <span class="n">id</span><span class="p">)</span>
<a name="line-161"></a><span class="p">{</span>
<a name="line-162"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">pos</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">pos</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabs</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">pos</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">d</span><span class="o">-&gt;</span><span class="n">tabs</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">pos</span><span class="p">)</span><span class="o">-&gt;</span><span class="n">id</span><span class="p">()</span> <span class="o">==</span> <span class="n">id</span><span class="p">)</span>
<a name="line-165"></a> <span class="p">{</span>
<a name="line-166"></a> <span class="c1">// remove &amp; delete the tab</span>
<a name="line-167"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabs</span><span class="p">.</span><span class="n">takeAt</span><span class="p">(</span><span class="n">pos</span><span class="p">);</span>
<a name="line-168"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-169"></a> <span class="p">}</span>
<a name="line-170"></a> <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">DMultiTabBarFrame</span><span class="o">::</span><span class="n">setPosition</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">Edge</span> <span class="n">pos</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">position</span> <span class="o">=</span> <span class="n">pos</span><span class="p">;</span>
<a name="line-176"></a>
<a name="line-177"></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">tabs</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-178"></a> <span class="p">{</span>
<a name="line-179"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabs</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">setPosition</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">position</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">updateGeometry</span><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="n">QList</span><span class="o">&lt;</span><span class="n">DMultiTabBarTab</span><span class="o">*&gt;*</span> <span class="n">DMultiTabBarFrame</span><span class="o">::</span><span class="n">tabs</span><span class="p">()</span>
<a name="line-186"></a><span class="p">{</span>
<a name="line-187"></a> <span class="k">return</span> <span class="o">&amp;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tabs</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="c1">// -------------------------------------------------------------------------------------</span>
<a name="line-191"></a>
<a name="line-192"></a><span class="n">DMultiTabBarButton</span><span class="o">::</span><span class="n">DMultiTabBarButton</span><span class="p">(</span><span class="k">const</span> <span class="n">QPixmap</span><span class="o">&amp;</span> <span class="n">pic</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-193"></a> <span class="kt">int</span> <span class="n">id</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-194"></a> <span class="o">:</span> <span class="n">QPushButton</span><span class="p">(</span><span class="n">QIcon</span><span class="p">(</span><span class="n">pic</span><span class="p">),</span> <span class="n">text</span><span class="p">,</span> <span class="n">parent</span><span class="p">),</span>
<a name="line-195"></a> <span class="n">m_id</span><span class="p">(</span><span class="n">id</span><span class="p">)</span>
<a name="line-196"></a><span class="p">{</span>
<a name="line-197"></a> <span class="c1">// --- NOTE: use dynamic binding as slotClicked() is a virtual method which can be re-implemented in derived classes.</span>
<a name="line-198"></a>
<a name="line-199"></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">QPushButton</span><span class="o">::</span><span class="n">clicked</span><span class="p">,</span>
<a name="line-200"></a> <span class="k">this</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">DMultiTabBarButton</span><span class="o">::</span><span class="n">slotClicked</span><span class="p">);</span>
<a name="line-201"></a>
<a name="line-202"></a> <span class="c1">// we can&#39;t see the focus, so don&#39;t take focus. #45557</span>
<a name="line-203"></a> <span class="c1">// If keyboard navigation is wanted, then only the bar should take focus,</span>
<a name="line-204"></a> <span class="c1">// and arrows could change the focused button; but generally, tabbars don&#39;t take focus anyway.</span>
<a name="line-205"></a>
<a name="line-206"></a> <span class="n">setFocusPolicy</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">NoFocus</span><span class="p">);</span>
<a name="line-207"></a>
<a name="line-208"></a> <span class="c1">// See RB #128005</span>
<a name="line-209"></a>
<a name="line-210"></a> <span class="n">setAttribute</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">WA_LayoutUsesWidgetRect</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">DMultiTabBarButton</span><span class="o">::~</span><span class="n">DMultiTabBarButton</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>
<a name="line-217"></a><span class="kt">void</span> <span class="n">DMultiTabBarButton</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-218"></a><span class="p">{</span>
<a name="line-219"></a> <span class="n">QPushButton</span><span class="o">::</span><span class="n">setText</span><span class="p">(</span><span class="n">text</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">DMultiTabBarButton</span><span class="o">::</span><span class="n">slotClicked</span><span class="p">()</span>
<a name="line-223"></a><span class="p">{</span>
<a name="line-224"></a> <span class="n">updateGeometry</span><span class="p">();</span>
<a name="line-225"></a> <span class="n">emit</span> <span class="nf">clicked</span><span class="p">(</span><span class="n">m_id</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">DMultiTabBarButton</span><span class="o">::</span><span class="n">id</span><span class="p">()</span> <span class="k">const</span>
<a name="line-229"></a><span class="p">{</span>
<a name="line-230"></a> <span class="k">return</span> <span class="n">m_id</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="kt">void</span> <span class="n">DMultiTabBarButton</span><span class="o">::</span><span class="n">hideEvent</span><span class="p">(</span><span class="n">QHideEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">)</span>
<a name="line-234"></a><span class="p">{</span>
<a name="line-235"></a> <span class="n">QPushButton</span><span class="o">::</span><span class="n">hideEvent</span><span class="p">(</span><span class="n">e</span><span class="p">);</span>
<a name="line-236"></a> <span class="n">DMultiTabBar</span><span class="o">*</span> <span class="k">const</span> <span class="n">tb</span> <span class="o">=</span> <span class="k">dynamic_cast</span><span class="o">&lt;</span><span class="n">DMultiTabBar</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">parentWidget</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">tb</span><span class="p">)</span>
<a name="line-239"></a> <span class="p">{</span>
<a name="line-240"></a> <span class="n">tb</span><span class="o">-&gt;</span><span class="n">updateSeparator</span><span class="p">();</span>
<a name="line-241"></a> <span class="p">}</span>
<a name="line-242"></a><span class="p">}</span>
<a name="line-243"></a>
<a name="line-244"></a><span class="kt">void</span> <span class="n">DMultiTabBarButton</span><span class="o">::</span><span class="n">showEvent</span><span class="p">(</span><span class="n">QShowEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">)</span>
<a name="line-245"></a><span class="p">{</span>
<a name="line-246"></a> <span class="n">QPushButton</span><span class="o">::</span><span class="n">showEvent</span><span class="p">(</span><span class="n">e</span><span class="p">);</span>
<a name="line-247"></a> <span class="n">DMultiTabBar</span><span class="o">*</span> <span class="k">const</span> <span class="n">tb</span> <span class="o">=</span> <span class="k">dynamic_cast</span><span class="o">&lt;</span><span class="n">DMultiTabBar</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">parentWidget</span><span class="p">());</span>
<a name="line-248"></a>
<a name="line-249"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tb</span><span class="p">)</span>
<a name="line-250"></a> <span class="p">{</span>
<a name="line-251"></a> <span class="n">tb</span><span class="o">-&gt;</span><span class="n">updateSeparator</span><span class="p">();</span>
<a name="line-252"></a> <span class="p">}</span>
<a name="line-253"></a><span class="p">}</span>
<a name="line-254"></a>
<a name="line-255"></a><span class="kt">void</span> <span class="n">DMultiTabBarButton</span><span class="o">::</span><span class="n">paintEvent</span><span class="p">(</span><span class="n">QPaintEvent</span><span class="o">*</span><span class="p">)</span>
<a name="line-256"></a><span class="p">{</span>
<a name="line-257"></a> <span class="n">QStyleOptionButton</span> <span class="n">opt</span><span class="p">;</span>
<a name="line-258"></a> <span class="n">opt</span><span class="p">.</span><span class="n">initFrom</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-259"></a> <span class="n">opt</span><span class="p">.</span><span class="n">icon</span> <span class="o">=</span> <span class="n">icon</span><span class="p">();</span>
<a name="line-260"></a> <span class="n">opt</span><span class="p">.</span><span class="n">iconSize</span> <span class="o">=</span> <span class="n">iconSize</span><span class="p">();</span>
<a name="line-261"></a>
<a name="line-262"></a> <span class="c1">// removes the QStyleOptionButton::HasMenu ButtonFeature</span>
<a name="line-263"></a>
<a name="line-264"></a> <span class="n">opt</span><span class="p">.</span><span class="n">features</span> <span class="o">=</span> <span class="n">QStyleOptionButton</span><span class="o">::</span><span class="n">Flat</span><span class="p">;</span>
<a name="line-265"></a> <span class="n">QPainter</span> <span class="nf">painter</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-266"></a> <span class="n">style</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">drawControl</span><span class="p">(</span><span class="n">QStyle</span><span class="o">::</span><span class="n">CE_PushButton</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">painter</span><span class="p">,</span> <span class="k">this</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="c1">// -------------------------------------------------------------------------------------</span>
<a name="line-270"></a>
<a name="line-271"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">DMultiTabBarTab</span><span class="o">::</span><span class="n">Private</span>
<a name="line-272"></a><span class="p">{</span>
<a name="line-273"></a><span class="k">public</span><span class="o">:</span>
<a name="line-274"></a>
<a name="line-275"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
<a name="line-276"></a> <span class="o">:</span> <span class="n">position</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">LeftEdge</span><span class="p">),</span>
<a name="line-277"></a> <span class="n">style</span><span class="p">(</span><span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">AllIconsText</span><span class="p">)</span>
<a name="line-278"></a> <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">Qt</span><span class="o">::</span><span class="n">Edge</span> <span class="n">position</span><span class="p">;</span>
<a name="line-282"></a> <span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">TextStyle</span> <span class="n">style</span><span class="p">;</span>
<a name="line-283"></a><span class="p">};</span>
<a name="line-284"></a>
<a name="line-285"></a><span class="n">DMultiTabBarTab</span><span class="o">::</span><span class="n">DMultiTabBarTab</span><span class="p">(</span><span class="k">const</span> <span class="n">QPixmap</span><span class="o">&amp;</span> <span class="n">pic</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-286"></a> <span class="kt">int</span> <span class="n">id</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-287"></a> <span class="n">Qt</span><span class="o">::</span><span class="n">Edge</span> <span class="n">pos</span><span class="p">,</span>
<a name="line-288"></a> <span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">TextStyle</span> <span class="n">style</span><span class="p">)</span>
<a name="line-289"></a> <span class="o">:</span> <span class="n">DMultiTabBarButton</span><span class="p">(</span><span class="n">pic</span><span class="p">,</span> <span class="n">text</span><span class="p">,</span> <span class="n">id</span><span class="p">,</span> <span class="n">parent</span><span class="p">),</span>
<a name="line-290"></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-291"></a><span class="p">{</span>
<a name="line-292"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">style</span> <span class="o">=</span> <span class="n">style</span><span class="p">;</span>
<a name="line-293"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">position</span> <span class="o">=</span> <span class="n">pos</span><span class="p">;</span>
<a name="line-294"></a> <span class="n">setToolTip</span><span class="p">(</span><span class="n">text</span><span class="p">);</span>
<a name="line-295"></a> <span class="n">setCheckable</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-296"></a> <span class="n">setSizePolicy</span><span class="p">(</span><span class="n">QSizePolicy</span><span class="o">::</span><span class="n">Preferred</span><span class="p">,</span> <span class="n">QSizePolicy</span><span class="o">::</span><span class="n">Preferred</span><span class="p">);</span>
<a name="line-297"></a>
<a name="line-298"></a> <span class="c1">// shrink down to icon only, but prefer to show text if it&#39;s there</span>
<a name="line-299"></a><span class="p">}</span>
<a name="line-300"></a>
<a name="line-301"></a><span class="n">DMultiTabBarTab</span><span class="o">::~</span><span class="n">DMultiTabBarTab</span><span class="p">()</span>
<a name="line-302"></a><span class="p">{</span>
<a name="line-303"></a> <span class="k">delete</span> <span class="n">d</span><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="kt">void</span> <span class="n">DMultiTabBarTab</span><span class="o">::</span><span class="n">setPosition</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">Edge</span> <span class="n">pos</span><span class="p">)</span>
<a name="line-307"></a><span class="p">{</span>
<a name="line-308"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">position</span> <span class="o">=</span> <span class="n">pos</span><span class="p">;</span>
<a name="line-309"></a> <span class="n">updateGeometry</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="kt">void</span> <span class="n">DMultiTabBarTab</span><span class="o">::</span><span class="n">setStyle</span><span class="p">(</span><span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">TextStyle</span> <span class="n">style</span><span class="p">)</span>
<a name="line-313"></a><span class="p">{</span>
<a name="line-314"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">style</span> <span class="o">=</span> <span class="n">style</span><span class="p">;</span>
<a name="line-315"></a> <span class="n">updateGeometry</span><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">QPixmap</span> <span class="n">DMultiTabBarTab</span><span class="o">::</span><span class="n">iconPixmap</span><span class="p">()</span> <span class="k">const</span>
<a name="line-319"></a><span class="p">{</span>
<a name="line-320"></a> <span class="kt">int</span> <span class="n">iconSize</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_SmallIconSize</span><span class="p">,</span> <span class="k">nullptr</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
<a name="line-321"></a>
<a name="line-322"></a> <span class="k">return</span> <span class="nf">icon</span><span class="p">().</span><span class="n">pixmap</span><span class="p">(</span><span class="n">iconSize</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="kt">void</span> <span class="n">DMultiTabBarTab</span><span class="o">::</span><span class="n">initStyleOption</span><span class="p">(</span><span class="n">QStyleOptionToolButton</span><span class="o">*</span> <span class="n">opt</span><span class="p">)</span> <span class="k">const</span>
<a name="line-326"></a><span class="p">{</span>
<a name="line-327"></a> <span class="n">opt</span><span class="o">-&gt;</span><span class="n">initFrom</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-328"></a>
<a name="line-329"></a> <span class="c1">// Setup icon</span>
<a name="line-330"></a>
<a name="line-331"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">icon</span><span class="p">().</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-332"></a> <span class="p">{</span>
<a name="line-333"></a> <span class="n">opt</span><span class="o">-&gt;</span><span class="n">iconSize</span> <span class="o">=</span> <span class="n">iconPixmap</span><span class="p">().</span><span class="n">size</span><span class="p">();</span>
<a name="line-334"></a> <span class="n">opt</span><span class="o">-&gt;</span><span class="n">icon</span> <span class="o">=</span> <span class="n">icon</span><span class="p">();</span>
<a name="line-335"></a> <span class="p">}</span>
<a name="line-336"></a>
<a name="line-337"></a> <span class="c1">// Should we draw text?</span>
<a name="line-338"></a>
<a name="line-339"></a> <span class="k">if</span> <span class="p">(</span><span class="n">shouldDrawText</span><span class="p">())</span>
<a name="line-340"></a> <span class="p">{</span>
<a name="line-341"></a> <span class="n">opt</span><span class="o">-&gt;</span><span class="n">text</span> <span class="o">=</span> <span class="n">text</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="k">if</span> <span class="p">(</span><span class="n">underMouse</span><span class="p">())</span>
<a name="line-345"></a> <span class="p">{</span>
<a name="line-346"></a> <span class="n">opt</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">|=</span> <span class="n">QStyle</span><span class="o">::</span><span class="n">State_AutoRaise</span> <span class="o">|</span> <span class="n">QStyle</span><span class="o">::</span><span class="n">State_MouseOver</span> <span class="o">|</span> <span class="n">QStyle</span><span class="o">::</span><span class="n">State_Raised</span><span class="p">;</span>
<a name="line-347"></a> <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">isChecked</span><span class="p">())</span>
<a name="line-350"></a> <span class="p">{</span>
<a name="line-351"></a> <span class="n">opt</span><span class="o">-&gt;</span><span class="n">state</span> <span class="o">|=</span> <span class="n">QStyle</span><span class="o">::</span><span class="n">State_Sunken</span> <span class="o">|</span> <span class="n">QStyle</span><span class="o">::</span><span class="n">State_On</span><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="n">opt</span><span class="o">-&gt;</span><span class="n">font</span> <span class="o">=</span> <span class="n">font</span><span class="p">();</span>
<a name="line-355"></a> <span class="n">opt</span><span class="o">-&gt;</span><span class="n">toolButtonStyle</span> <span class="o">=</span> <span class="n">shouldDrawText</span><span class="p">()</span> <span class="o">?</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">ToolButtonTextBesideIcon</span> <span class="p">:</span> <span class="n">Qt</span><span class="o">::</span><span class="n">ToolButtonIconOnly</span><span class="p">;</span>
<a name="line-356"></a> <span class="n">opt</span><span class="o">-&gt;</span><span class="n">subControls</span> <span class="o">=</span> <span class="n">QStyle</span><span class="o">::</span><span class="n">SC_ToolButton</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="n">QSize</span> <span class="n">DMultiTabBarTab</span><span class="o">::</span><span class="n">sizeHint</span><span class="p">()</span> <span class="k">const</span>
<a name="line-360"></a><span class="p">{</span>
<a name="line-361"></a> <span class="k">return</span> <span class="n">computeSizeHint</span><span class="p">(</span><span class="n">shouldDrawText</span><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">QSize</span> <span class="n">DMultiTabBarTab</span><span class="o">::</span><span class="n">minimumSizeHint</span><span class="p">()</span> <span class="k">const</span>
<a name="line-365"></a><span class="p">{</span>
<a name="line-366"></a> <span class="k">return</span> <span class="n">computeSizeHint</span><span class="p">(</span><span class="nb">false</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="kt">void</span> <span class="n">DMultiTabBarTab</span><span class="o">::</span><span class="n">computeMargins</span><span class="p">(</span><span class="kt">int</span><span class="o">*</span> <span class="n">hMargin</span><span class="p">,</span> <span class="kt">int</span><span class="o">*</span> <span class="n">vMargin</span><span class="p">)</span> <span class="k">const</span>
<a name="line-370"></a><span class="p">{</span>
<a name="line-371"></a> <span class="c1">// Unfortunately, QStyle does not give us enough information to figure out</span>
<a name="line-372"></a> <span class="c1">// where to place things, so we try to reverse-engineer it</span>
<a name="line-373"></a>
<a name="line-374"></a> <span class="n">QStyleOptionToolButton</span> <span class="n">opt</span><span class="p">;</span>
<a name="line-375"></a> <span class="n">initStyleOption</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
<a name="line-376"></a>
<a name="line-377"></a> <span class="n">QPixmap</span> <span class="n">iconPix</span> <span class="o">=</span> <span class="n">iconPixmap</span><span class="p">();</span>
<a name="line-378"></a> <span class="n">QSize</span> <span class="n">trialSize</span> <span class="o">=</span> <span class="n">iconPix</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
<a name="line-379"></a> <span class="n">QSize</span> <span class="n">expandSize</span> <span class="o">=</span> <span class="n">style</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">sizeFromContents</span><span class="p">(</span><span class="n">QStyle</span><span class="o">::</span><span class="n">CT_ToolButton</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">,</span> <span class="n">trialSize</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
<a name="line-380"></a>
<a name="line-381"></a> <span class="o">*</span><span class="n">hMargin</span> <span class="o">=</span> <span class="p">(</span><span class="n">expandSize</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">-</span> <span class="n">trialSize</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-382"></a> <span class="o">*</span><span class="n">vMargin</span> <span class="o">=</span> <span class="p">(</span><span class="n">expandSize</span><span class="p">.</span><span class="n">height</span><span class="p">()</span> <span class="o">-</span> <span class="n">trialSize</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-383"></a><span class="p">}</span>
<a name="line-384"></a>
<a name="line-385"></a><span class="n">QSize</span> <span class="n">DMultiTabBarTab</span><span class="o">::</span><span class="n">computeSizeHint</span><span class="p">(</span><span class="kt">bool</span> <span class="n">withText</span><span class="p">)</span> <span class="k">const</span>
<a name="line-386"></a><span class="p">{</span>
<a name="line-387"></a> <span class="c1">// Compute as horizontal first, then flip around if need be.</span>
<a name="line-388"></a>
<a name="line-389"></a> <span class="n">QStyleOptionToolButton</span> <span class="n">opt</span><span class="p">;</span>
<a name="line-390"></a> <span class="n">initStyleOption</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
<a name="line-391"></a>
<a name="line-392"></a> <span class="kt">int</span> <span class="n">hMargin</span><span class="p">,</span> <span class="n">vMargin</span><span class="p">;</span>
<a name="line-393"></a> <span class="n">computeMargins</span><span class="p">(</span><span class="o">&amp;</span><span class="n">hMargin</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">vMargin</span><span class="p">);</span>
<a name="line-394"></a>
<a name="line-395"></a> <span class="c1">// Compute interior size, starting from pixmap..</span>
<a name="line-396"></a>
<a name="line-397"></a> <span class="n">QPixmap</span> <span class="n">iconPix</span> <span class="o">=</span> <span class="n">iconPixmap</span><span class="p">();</span>
<a name="line-398"></a> <span class="n">QSize</span> <span class="n">size</span> <span class="o">=</span> <span class="n">iconPix</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
<a name="line-399"></a>
<a name="line-400"></a> <span class="c1">// Always include text height in computation, to avoid resizing the minor direction</span>
<a name="line-401"></a> <span class="c1">// when expanding text..</span>
<a name="line-402"></a>
<a name="line-403"></a> <span class="n">QSize</span> <span class="n">textSize</span> <span class="o">=</span> <span class="n">fontMetrics</span><span class="p">().</span><span class="n">size</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">text</span><span class="p">());</span>
<a name="line-404"></a> <span class="n">size</span><span class="p">.</span><span class="n">setHeight</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">height</span><span class="p">(),</span> <span class="n">textSize</span><span class="p">.</span><span class="n">height</span><span class="p">()));</span>
<a name="line-405"></a>
<a name="line-406"></a> <span class="c1">// Pick margins for major/minor direction, depending on orientation</span>
<a name="line-407"></a>
<a name="line-408"></a> <span class="kt">int</span> <span class="n">majorMargin</span> <span class="o">=</span> <span class="n">isVertical</span><span class="p">()</span> <span class="o">?</span> <span class="nl">vMargin</span> <span class="p">:</span> <span class="n">hMargin</span><span class="p">;</span>
<a name="line-409"></a> <span class="kt">int</span> <span class="n">minorMargin</span> <span class="o">=</span> <span class="n">isVertical</span><span class="p">()</span> <span class="o">?</span> <span class="nl">hMargin</span> <span class="p">:</span> <span class="n">vMargin</span><span class="p">;</span>
<a name="line-410"></a>
<a name="line-411"></a> <span class="n">size</span><span class="p">.</span><span class="n">setWidth</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="o">*</span><span class="n">majorMargin</span><span class="p">);</span>
<a name="line-412"></a> <span class="n">size</span><span class="p">.</span><span class="n">setHeight</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="o">*</span><span class="n">minorMargin</span><span class="p">);</span>
<a name="line-413"></a>
<a name="line-414"></a> <span class="k">if</span> <span class="p">(</span><span class="n">withText</span><span class="p">)</span>
<a name="line-415"></a> <span class="p">{</span>
<a name="line-416"></a> <span class="c1">// Add enough room for the text, and an extra major margin.</span>
<a name="line-417"></a>
<a name="line-418"></a> <span class="n">size</span><span class="p">.</span><span class="n">setWidth</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="n">textSize</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">+</span> <span class="n">majorMargin</span><span class="p">);</span>
<a name="line-419"></a> <span class="p">}</span>
<a name="line-420"></a>
<a name="line-421"></a> <span class="k">if</span> <span class="p">(</span><span class="n">isVertical</span><span class="p">())</span>
<a name="line-422"></a> <span class="p">{</span>
<a name="line-423"></a> <span class="k">return</span> <span class="n">QSize</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="n">size</span><span class="p">.</span><span class="n">width</span><span class="p">());</span>
<a name="line-424"></a> <span class="p">}</span>
<a name="line-425"></a>
<a name="line-426"></a> <span class="k">return</span> <span class="n">size</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">DMultiTabBarTab</span><span class="o">::</span><span class="n">setState</span><span class="p">(</span><span class="kt">bool</span> <span class="n">newState</span><span class="p">)</span>
<a name="line-430"></a><span class="p">{</span>
<a name="line-431"></a> <span class="n">setChecked</span><span class="p">(</span><span class="n">newState</span><span class="p">);</span>
<a name="line-432"></a> <span class="n">updateGeometry</span><span class="p">();</span>
<a name="line-433"></a><span class="p">}</span>
<a name="line-434"></a>
<a name="line-435"></a><span class="kt">void</span> <span class="n">DMultiTabBarTab</span><span class="o">::</span><span class="n">setIcon</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">icon</span><span class="p">)</span>
<a name="line-436"></a><span class="p">{</span>
<a name="line-437"></a> <span class="k">const</span> <span class="n">QIcon</span> <span class="n">i</span> <span class="o">=</span> <span class="n">QIcon</span><span class="o">::</span><span class="n">fromTheme</span><span class="p">(</span><span class="n">icon</span><span class="p">);</span>
<a name="line-438"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">iconSize</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_SmallIconSize</span><span class="p">,</span> <span class="k">nullptr</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
<a name="line-439"></a> <span class="n">setIcon</span><span class="p">(</span><span class="n">i</span><span class="p">.</span><span class="n">pixmap</span><span class="p">(</span><span class="n">iconSize</span><span class="p">));</span>
<a name="line-440"></a><span class="p">}</span>
<a name="line-441"></a>
<a name="line-442"></a><span class="kt">void</span> <span class="n">DMultiTabBarTab</span><span class="o">::</span><span class="n">setIcon</span><span class="p">(</span><span class="k">const</span> <span class="n">QPixmap</span><span class="o">&amp;</span> <span class="n">icon</span><span class="p">)</span>
<a name="line-443"></a><span class="p">{</span>
<a name="line-444"></a> <span class="n">QPushButton</span><span class="o">::</span><span class="n">setIcon</span><span class="p">(</span><span class="n">icon</span><span class="p">);</span>
<a name="line-445"></a><span class="p">}</span>
<a name="line-446"></a>
<a name="line-447"></a><span class="kt">bool</span> <span class="n">DMultiTabBarTab</span><span class="o">::</span><span class="n">shouldDrawText</span><span class="p">()</span> <span class="k">const</span>
<a name="line-448"></a><span class="p">{</span>
<a name="line-449"></a> <span class="k">return</span> <span class="p">((</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">style</span> <span class="o">==</span> <span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">AllIconsText</span><span class="p">)</span> <span class="o">||</span> <span class="n">isChecked</span><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="kt">bool</span> <span class="n">DMultiTabBarTab</span><span class="o">::</span><span class="n">isVertical</span><span class="p">()</span> <span class="k">const</span>
<a name="line-453"></a><span class="p">{</span>
<a name="line-454"></a> <span class="k">return</span> <span class="p">((</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">position</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">RightEdge</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">position</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">LeftEdge</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="kt">void</span> <span class="n">DMultiTabBarTab</span><span class="o">::</span><span class="n">paintEvent</span><span class="p">(</span><span class="n">QPaintEvent</span><span class="o">*</span><span class="p">)</span>
<a name="line-458"></a><span class="p">{</span>
<a name="line-459"></a> <span class="n">QPainter</span> <span class="n">painter</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-460"></a>
<a name="line-461"></a> <span class="n">QStyleOptionToolButton</span> <span class="n">opt</span><span class="p">;</span>
<a name="line-462"></a> <span class="n">initStyleOption</span><span class="p">(</span><span class="o">&amp;</span><span class="n">opt</span><span class="p">);</span>
<a name="line-463"></a>
<a name="line-464"></a> <span class="c1">// Paint bevel..</span>
<a name="line-465"></a>
<a name="line-466"></a> <span class="k">if</span> <span class="p">(</span><span class="n">underMouse</span><span class="p">()</span> <span class="o">||</span> <span class="n">isChecked</span><span class="p">())</span>
<a name="line-467"></a> <span class="p">{</span>
<a name="line-468"></a> <span class="n">opt</span><span class="p">.</span><span class="n">text</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-469"></a> <span class="n">opt</span><span class="p">.</span><span class="n">icon</span> <span class="o">=</span> <span class="n">QIcon</span><span class="p">();</span>
<a name="line-470"></a> <span class="n">style</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">drawComplexControl</span><span class="p">(</span><span class="n">QStyle</span><span class="o">::</span><span class="n">CC_ToolButton</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">opt</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">painter</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
<a name="line-471"></a> <span class="p">}</span>
<a name="line-472"></a>
<a name="line-473"></a> <span class="kt">int</span> <span class="n">hMargin</span><span class="p">,</span> <span class="n">vMargin</span><span class="p">;</span>
<a name="line-474"></a> <span class="n">computeMargins</span><span class="p">(</span><span class="o">&amp;</span><span class="n">hMargin</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">vMargin</span><span class="p">);</span>
<a name="line-475"></a>
<a name="line-476"></a> <span class="c1">// We first figure out how much room we have for the text, based on</span>
<a name="line-477"></a> <span class="c1">// icon size and margin, try to fit in by eliding, and perhaps</span>
<a name="line-478"></a> <span class="c1">// give up on drawing the text entirely if we&#39;re too short on room</span>
<a name="line-479"></a>
<a name="line-480"></a> <span class="n">QPixmap</span> <span class="n">icon</span> <span class="o">=</span> <span class="n">iconPixmap</span><span class="p">();</span>
<a name="line-481"></a> <span class="kt">int</span> <span class="n">textRoom</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-482"></a> <span class="kt">int</span> <span class="n">iconRoom</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-483"></a>
<a name="line-484"></a> <span class="n">QString</span> <span class="n">t</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">shouldDrawText</span><span class="p">())</span>
<a name="line-487"></a> <span class="p">{</span>
<a name="line-488"></a> <span class="k">if</span> <span class="p">(</span><span class="n">isVertical</span><span class="p">())</span>
<a name="line-489"></a> <span class="p">{</span>
<a name="line-490"></a> <span class="n">iconRoom</span> <span class="o">=</span> <span class="n">icon</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="o">*</span><span class="n">vMargin</span><span class="p">;</span>
<a name="line-491"></a> <span class="n">textRoom</span> <span class="o">=</span> <span class="n">height</span><span class="p">()</span> <span class="o">-</span> <span class="n">iconRoom</span> <span class="o">-</span> <span class="n">vMargin</span><span class="p">;</span>
<a name="line-492"></a> <span class="p">}</span>
<a name="line-493"></a> <span class="k">else</span>
<a name="line-494"></a> <span class="p">{</span>
<a name="line-495"></a> <span class="n">iconRoom</span> <span class="o">=</span> <span class="n">icon</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="o">*</span><span class="n">hMargin</span><span class="p">;</span>
<a name="line-496"></a> <span class="n">textRoom</span> <span class="o">=</span> <span class="n">width</span><span class="p">()</span> <span class="o">-</span> <span class="n">iconRoom</span> <span class="o">-</span> <span class="n">hMargin</span><span class="p">;</span>
<a name="line-497"></a> <span class="p">}</span>
<a name="line-498"></a>
<a name="line-499"></a> <span class="n">t</span> <span class="o">=</span> <span class="n">painter</span><span class="p">.</span><span class="n">fontMetrics</span><span class="p">().</span><span class="n">elidedText</span><span class="p">(</span><span class="n">text</span><span class="p">(),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">ElideRight</span><span class="p">,</span> <span class="n">textRoom</span><span class="p">);</span>
<a name="line-500"></a>
<a name="line-501"></a> <span class="c1">// See whether anything is left. Qt will return either</span>
<a name="line-502"></a> <span class="c1">// ... or the ellipsis unicode character, 0x2026</span>
<a name="line-503"></a>
<a name="line-504"></a> <span class="k">if</span> <span class="p">((</span><span class="n">t</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="o">||</span> <span class="p">(</span><span class="n">t</span> <span class="o">==</span> <span class="n">QChar</span><span class="p">(</span><span class="mh">0x2026</span><span class="p">)))</span>
<a name="line-505"></a> <span class="p">{</span>
<a name="line-506"></a> <span class="n">t</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-507"></a> <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="c1">// Label time.... Simple case: no text, so just plop down the icon right in the center</span>
<a name="line-511"></a> <span class="c1">// We only do this when the button never draws the text, to avoid jumps in icon position</span>
<a name="line-512"></a> <span class="c1">// when resizing</span>
<a name="line-513"></a>
<a name="line-514"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">shouldDrawText</span><span class="p">())</span>
<a name="line-515"></a> <span class="p">{</span>
<a name="line-516"></a> <span class="n">style</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">drawItemPixmap</span><span class="p">(</span><span class="o">&amp;</span><span class="n">painter</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">AlignCenter</span> <span class="o">|</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AlignVCenter</span><span class="p">,</span> <span class="n">icon</span><span class="p">);</span>
<a name="line-517"></a> <span class="k">return</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">// Now where the icon/text goes depends on text direction and tab position</span>
<a name="line-521"></a>
<a name="line-522"></a> <span class="n">QRect</span> <span class="n">iconArea</span><span class="p">;</span>
<a name="line-523"></a> <span class="n">QRect</span> <span class="n">labelArea</span><span class="p">;</span>
<a name="line-524"></a>
<a name="line-525"></a> <span class="kt">bool</span> <span class="n">bottomIcon</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-526"></a> <span class="kt">bool</span> <span class="n">rtl</span> <span class="o">=</span> <span class="n">layoutDirection</span><span class="p">()</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">RightToLeft</span><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">isVertical</span><span class="p">())</span>
<a name="line-529"></a> <span class="p">{</span>
<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">position</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">LeftEdge</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">rtl</span><span class="p">)</span>
<a name="line-531"></a> <span class="p">{</span>
<a name="line-532"></a> <span class="n">bottomIcon</span> <span class="o">=</span> <span class="nb">true</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="k">if</span> <span class="p">((</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">position</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">RightEdge</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="n">rtl</span><span class="p">)</span>
<a name="line-536"></a> <span class="p">{</span>
<a name="line-537"></a> <span class="n">bottomIcon</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-538"></a> <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="k">if</span> <span class="p">(</span><span class="n">isVertical</span><span class="p">())</span>
<a name="line-542"></a> <span class="p">{</span>
<a name="line-543"></a> <span class="k">if</span> <span class="p">(</span><span class="n">bottomIcon</span><span class="p">)</span>
<a name="line-544"></a> <span class="p">{</span>
<a name="line-545"></a> <span class="n">labelArea</span> <span class="o">=</span> <span class="n">QRect</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">vMargin</span><span class="p">,</span> <span class="n">width</span><span class="p">(),</span> <span class="n">textRoom</span><span class="p">);</span>
<a name="line-546"></a> <span class="n">iconArea</span> <span class="o">=</span> <span class="n">QRect</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">vMargin</span> <span class="o">+</span> <span class="n">textRoom</span><span class="p">,</span> <span class="n">width</span><span class="p">(),</span> <span class="n">iconRoom</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">labelArea</span> <span class="o">=</span> <span class="n">QRect</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">iconRoom</span><span class="p">,</span> <span class="n">width</span><span class="p">(),</span> <span class="n">textRoom</span><span class="p">);</span>
<a name="line-551"></a> <span class="n">iconArea</span> <span class="o">=</span> <span class="n">QRect</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">width</span><span class="p">(),</span> <span class="n">iconRoom</span><span class="p">);</span>
<a name="line-552"></a> <span class="p">}</span>
<a name="line-553"></a> <span class="p">}</span>
<a name="line-554"></a> <span class="k">else</span>
<a name="line-555"></a> <span class="p">{</span>
<a name="line-556"></a> <span class="c1">// Pretty simple --- depends only on RTL/LTR</span>
<a name="line-557"></a>
<a name="line-558"></a> <span class="k">if</span> <span class="p">(</span><span class="n">rtl</span><span class="p">)</span>
<a name="line-559"></a> <span class="p">{</span>
<a name="line-560"></a> <span class="n">labelArea</span> <span class="o">=</span> <span class="n">QRect</span><span class="p">(</span><span class="n">hMargin</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">textRoom</span><span class="p">,</span> <span class="n">height</span><span class="p">());</span>
<a name="line-561"></a> <span class="n">iconArea</span> <span class="o">=</span> <span class="n">QRect</span><span class="p">(</span><span class="n">hMargin</span> <span class="o">+</span> <span class="n">textRoom</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">iconRoom</span><span class="p">,</span> <span class="n">height</span><span class="p">());</span>
<a name="line-562"></a> <span class="p">}</span>
<a name="line-563"></a> <span class="k">else</span>
<a name="line-564"></a> <span class="p">{</span>
<a name="line-565"></a> <span class="n">labelArea</span> <span class="o">=</span> <span class="n">QRect</span><span class="p">(</span><span class="n">iconRoom</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">textRoom</span><span class="p">,</span> <span class="n">height</span><span class="p">());</span>
<a name="line-566"></a> <span class="n">iconArea</span> <span class="o">=</span> <span class="n">QRect</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">iconRoom</span><span class="p">,</span> <span class="n">height</span><span class="p">());</span>
<a name="line-567"></a> <span class="p">}</span>
<a name="line-568"></a> <span class="p">}</span>
<a name="line-569"></a>
<a name="line-570"></a> <span class="n">style</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">drawItemPixmap</span><span class="p">(</span><span class="o">&amp;</span><span class="n">painter</span><span class="p">,</span> <span class="n">iconArea</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AlignCenter</span> <span class="o">|</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AlignVCenter</span><span class="p">,</span> <span class="n">icon</span><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">t</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-573"></a> <span class="p">{</span>
<a name="line-574"></a> <span class="k">return</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="n">QRect</span> <span class="n">labelPaintArea</span> <span class="o">=</span> <span class="n">labelArea</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">isVertical</span><span class="p">())</span>
<a name="line-580"></a> <span class="p">{</span>
<a name="line-581"></a> <span class="c1">// If we&#39;re vertical, we paint to a simple 0,0 origin rect,</span>
<a name="line-582"></a> <span class="c1">// and get the transformations to get us in the right place</span>
<a name="line-583"></a>
<a name="line-584"></a> <span class="n">labelPaintArea</span> <span class="o">=</span> <span class="n">QRect</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">labelArea</span><span class="p">.</span><span class="n">height</span><span class="p">(),</span> <span class="n">labelArea</span><span class="p">.</span><span class="n">width</span><span class="p">());</span>
<a name="line-585"></a>
<a name="line-586"></a> <span class="n">QTransform</span> <span class="n">tr</span><span class="p">;</span>
<a name="line-587"></a>
<a name="line-588"></a> <span class="k">if</span> <span class="p">(</span><span class="n">bottomIcon</span><span class="p">)</span>
<a name="line-589"></a> <span class="p">{</span>
<a name="line-590"></a> <span class="n">tr</span><span class="p">.</span><span class="n">translate</span><span class="p">(</span><span class="n">labelArea</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="n">labelPaintArea</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">+</span> <span class="n">labelArea</span><span class="p">.</span><span class="n">y</span><span class="p">());</span>
<a name="line-591"></a> <span class="n">tr</span><span class="p">.</span><span class="n">rotate</span><span class="p">(</span><span class="o">-</span><span class="mi">90</span><span class="p">);</span>
<a name="line-592"></a> <span class="p">}</span>
<a name="line-593"></a> <span class="k">else</span>
<a name="line-594"></a> <span class="p">{</span>
<a name="line-595"></a> <span class="n">tr</span><span class="p">.</span><span class="n">translate</span><span class="p">(</span><span class="n">labelPaintArea</span><span class="p">.</span><span class="n">height</span><span class="p">()</span> <span class="o">+</span> <span class="n">labelArea</span><span class="p">.</span><span class="n">x</span><span class="p">(),</span> <span class="n">labelArea</span><span class="p">.</span><span class="n">y</span><span class="p">());</span>
<a name="line-596"></a> <span class="n">tr</span><span class="p">.</span><span class="n">rotate</span><span class="p">(</span><span class="mi">90</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="n">painter</span><span class="p">.</span><span class="n">setTransform</span><span class="p">(</span><span class="n">tr</span><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="n">style</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">drawItemText</span><span class="p">(</span><span class="o">&amp;</span><span class="n">painter</span><span class="p">,</span> <span class="n">labelPaintArea</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AlignLeading</span> <span class="o">|</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AlignVCenter</span><span class="p">,</span>
<a name="line-603"></a> <span class="n">palette</span><span class="p">(),</span> <span class="nb">true</span><span class="p">,</span> <span class="n">t</span><span class="p">,</span> <span class="n">QPalette</span><span class="o">::</span><span class="n">ButtonText</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="c1">// -------------------------------------------------------------------------------------</span>
<a name="line-607"></a>
<a name="line-608"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">Private</span>
<a name="line-609"></a><span class="p">{</span>
<a name="line-610"></a><span class="k">public</span><span class="o">:</span>
<a name="line-611"></a>
<a name="line-612"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
<a name="line-613"></a> <span class="o">:</span> <span class="n">internal</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-614"></a> <span class="n">layout</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-615"></a> <span class="n">btnTabSep</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-616"></a> <span class="n">position</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">LeftEdge</span><span class="p">)</span>
<a name="line-617"></a> <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">DMultiTabBarFrame</span><span class="o">*</span> <span class="n">internal</span><span class="p">;</span>
<a name="line-621"></a> <span class="n">QBoxLayout</span><span class="o">*</span> <span class="n">layout</span><span class="p">;</span>
<a name="line-622"></a> <span class="n">QFrame</span><span class="o">*</span> <span class="n">btnTabSep</span><span class="p">;</span>
<a name="line-623"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">DMultiTabBarButton</span><span class="o">*&gt;</span> <span class="n">buttons</span><span class="p">;</span>
<a name="line-624"></a> <span class="n">Qt</span><span class="o">::</span><span class="n">Edge</span> <span class="n">position</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="n">DMultiTabBar</span><span class="o">::</span><span class="n">DMultiTabBar</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">Edge</span> <span class="n">pos</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-628"></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-629"></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-630"></a><span class="p">{</span>
<a name="line-631"></a> <span class="k">if</span> <span class="p">((</span><span class="n">pos</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">LeftEdge</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">pos</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">RightEdge</span><span class="p">))</span>
<a name="line-632"></a> <span class="p">{</span>
<a name="line-633"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">layout</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-634"></a> <span class="n">setSizePolicy</span><span class="p">(</span><span class="n">QSizePolicy</span><span class="o">::</span><span class="n">Fixed</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-635"></a> <span class="p">}</span>
<a name="line-636"></a> <span class="k">else</span>
<a name="line-637"></a> <span class="p">{</span>
<a name="line-638"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">layout</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QHBoxLayout</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-639"></a> <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">Fixed</span><span class="p">);</span>
<a name="line-640"></a> <span class="p">}</span>
<a name="line-641"></a>
<a name="line-642"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">layout</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-643"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">layout</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-644"></a>
<a name="line-645"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">internal</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DMultiTabBarFrame</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">pos</span><span class="p">);</span>
<a name="line-646"></a> <span class="n">setPosition</span><span class="p">(</span><span class="n">pos</span><span class="p">);</span>
<a name="line-647"></a> <span class="n">setStyle</span><span class="p">(</span><span class="n">ActiveIconText</span><span class="p">);</span>
<a name="line-648"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">layout</span><span class="o">-&gt;</span><span class="n">insertWidget</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">internal</span><span class="p">);</span>
<a name="line-649"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">layout</span><span class="o">-&gt;</span><span class="n">insertWidget</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">btnTabSep</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QFrame</span><span class="p">(</span><span class="k">this</span><span class="p">));</span>
<a name="line-650"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">btnTabSep</span><span class="o">-&gt;</span><span class="n">setFixedHeight</span><span class="p">(</span><span class="mi">4</span><span class="p">);</span>
<a name="line-651"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">btnTabSep</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">Panel</span> <span class="o">|</span> <span class="n">QFrame</span><span class="o">::</span><span class="n">Sunken</span><span class="p">);</span>
<a name="line-652"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">btnTabSep</span><span class="o">-&gt;</span><span class="n">setLineWidth</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
<a name="line-653"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">btnTabSep</span><span class="o">-&gt;</span><span class="n">hide</span><span class="p">();</span>
<a name="line-654"></a>
<a name="line-655"></a> <span class="n">updateGeometry</span><span class="p">();</span>
<a name="line-656"></a><span class="p">}</span>
<a name="line-657"></a>
<a name="line-658"></a><span class="n">DMultiTabBar</span><span class="o">::~</span><span class="n">DMultiTabBar</span><span class="p">()</span>
<a name="line-659"></a><span class="p">{</span>
<a name="line-660"></a> <span class="n">qDeleteAll</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">buttons</span><span class="p">);</span>
<a name="line-661"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buttons</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-662"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
<a name="line-663"></a><span class="p">}</span>
<a name="line-664"></a>
<a name="line-665"></a><span class="kt">int</span> <span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">appendButton</span><span class="p">(</span><span class="k">const</span> <span class="n">QPixmap</span> <span class="o">&amp;</span><span class="n">pic</span><span class="p">,</span> <span class="kt">int</span> <span class="n">id</span><span class="p">,</span> <span class="n">QMenu</span> <span class="o">*</span><span class="n">popup</span><span class="p">,</span> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span><span class="p">)</span>
<a name="line-666"></a><span class="p">{</span>
<a name="line-667"></a> <span class="n">DMultiTabBarButton</span><span class="o">*</span> <span class="k">const</span> <span class="n">btn</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DMultiTabBarButton</span><span class="p">(</span><span class="n">pic</span><span class="p">,</span> <span class="n">QString</span><span class="p">(),</span> <span class="n">id</span><span class="p">,</span> <span class="k">this</span><span class="p">);</span>
<a name="line-668"></a>
<a name="line-669"></a> <span class="c1">// a button with a QMenu can have another size. Make sure the button has always the same size.</span>
<a name="line-670"></a>
<a name="line-671"></a> <span class="n">btn</span><span class="o">-&gt;</span><span class="n">setFixedWidth</span><span class="p">(</span><span class="n">btn</span><span class="o">-&gt;</span><span class="n">height</span><span class="p">());</span>
<a name="line-672"></a> <span class="n">btn</span><span class="o">-&gt;</span><span class="n">setMenu</span><span class="p">(</span><span class="n">popup</span><span class="p">);</span>
<a name="line-673"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buttons</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">btn</span><span class="p">);</span>
<a name="line-674"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">layout</span><span class="o">-&gt;</span><span class="n">insertWidget</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="n">btn</span><span class="p">);</span>
<a name="line-675"></a> <span class="n">btn</span><span class="o">-&gt;</span><span class="n">show</span><span class="p">();</span>
<a name="line-676"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">btnTabSep</span><span class="o">-&gt;</span><span class="n">show</span><span class="p">();</span>
<a name="line-677"></a>
<a name="line-678"></a> <span class="k">return</span> <span class="mi">0</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">DMultiTabBar</span><span class="o">::</span><span class="n">updateSeparator</span><span class="p">()</span>
<a name="line-682"></a><span class="p">{</span>
<a name="line-683"></a> <span class="kt">bool</span> <span class="n">hideSep</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-684"></a> <span class="n">QListIterator</span><span class="o">&lt;</span><span class="n">DMultiTabBarButton</span><span class="o">*&gt;</span> <span class="n">it</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">buttons</span><span class="p">);</span>
<a name="line-685"></a>
<a name="line-686"></a> <span class="k">while</span> <span class="p">(</span><span class="n">it</span><span class="p">.</span><span class="n">hasNext</span><span class="p">())</span>
<a name="line-687"></a> <span class="p">{</span>
<a name="line-688"></a> <span class="k">if</span> <span class="p">(</span><span class="n">it</span><span class="p">.</span><span class="n">next</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">isVisibleTo</span><span class="p">(</span><span class="k">this</span><span class="p">))</span>
<a name="line-689"></a> <span class="p">{</span>
<a name="line-690"></a> <span class="n">hideSep</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-691"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-692"></a> <span class="p">}</span>
<a name="line-693"></a> <span class="p">}</span>
<a name="line-694"></a>
<a name="line-695"></a> <span class="k">if</span> <span class="p">(</span><span class="n">hideSep</span><span class="p">)</span>
<a name="line-696"></a> <span class="p">{</span>
<a name="line-697"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">btnTabSep</span><span class="o">-&gt;</span><span class="n">hide</span><span class="p">();</span>
<a name="line-698"></a> <span class="p">}</span>
<a name="line-699"></a> <span class="k">else</span>
<a name="line-700"></a> <span class="p">{</span>
<a name="line-701"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">btnTabSep</span><span class="o">-&gt;</span><span class="n">show</span><span class="p">();</span>
<a name="line-702"></a> <span class="p">}</span>
<a name="line-703"></a><span class="p">}</span>
<a name="line-704"></a>
<a name="line-705"></a><span class="kt">int</span> <span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">appendTab</span><span class="p">(</span><span class="k">const</span> <span class="n">QPixmap</span><span class="o">&amp;</span> <span class="n">pic</span><span class="p">,</span> <span class="kt">int</span> <span class="n">id</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-706"></a><span class="p">{</span>
<a name="line-707"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">internal</span><span class="o">-&gt;</span><span class="n">appendTab</span><span class="p">(</span><span class="n">pic</span><span class="p">,</span><span class="n">id</span><span class="p">,</span><span class="n">text</span><span class="p">);</span>
<a name="line-708"></a>
<a name="line-709"></a> <span class="k">return</span> <span class="mi">0</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">DMultiTabBarButton</span><span class="o">*</span> <span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">button</span><span class="p">(</span><span class="kt">int</span> <span class="n">id</span><span class="p">)</span> <span class="k">const</span>
<a name="line-713"></a><span class="p">{</span>
<a name="line-714"></a> <span class="n">QListIterator</span><span class="o">&lt;</span><span class="n">DMultiTabBarButton</span><span class="o">*&gt;</span> <span class="n">it</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">buttons</span><span class="p">);</span>
<a name="line-715"></a>
<a name="line-716"></a> <span class="k">while</span> <span class="p">(</span><span class="n">it</span><span class="p">.</span><span class="n">hasNext</span><span class="p">())</span>
<a name="line-717"></a> <span class="p">{</span>
<a name="line-718"></a> <span class="n">DMultiTabBarButton</span><span class="o">*</span> <span class="k">const</span> <span class="n">button</span> <span class="o">=</span> <span class="n">it</span><span class="p">.</span><span class="n">next</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">button</span><span class="o">-&gt;</span><span class="n">id</span><span class="p">()</span> <span class="o">==</span> <span class="n">id</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">button</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="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-727"></a><span class="p">}</span>
<a name="line-728"></a>
<a name="line-729"></a><span class="n">DMultiTabBarTab</span><span class="o">*</span> <span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">tab</span><span class="p">(</span><span class="kt">int</span> <span class="n">id</span><span class="p">)</span> <span class="k">const</span>
<a name="line-730"></a><span class="p">{</span>
<a name="line-731"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">internal</span><span class="o">-&gt;</span><span class="n">tab</span><span class="p">(</span><span class="n">id</span><span class="p">);</span>
<a name="line-732"></a><span class="p">}</span>
<a name="line-733"></a>
<a name="line-734"></a><span class="kt">void</span> <span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">removeButton</span><span class="p">(</span><span class="kt">int</span> <span class="n">id</span><span class="p">)</span>
<a name="line-735"></a><span class="p">{</span>
<a name="line-736"></a> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">pos</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">pos</span> <span class="o">&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buttons</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">pos</span><span class="p">)</span>
<a name="line-737"></a> <span class="p">{</span>
<a name="line-738"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">buttons</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">pos</span><span class="p">)</span><span class="o">-&gt;</span><span class="n">id</span><span class="p">()</span> <span class="o">==</span> <span class="n">id</span><span class="p">)</span>
<a name="line-739"></a> <span class="p">{</span>
<a name="line-740"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">buttons</span><span class="p">.</span><span class="n">takeAt</span><span class="p">(</span><span class="n">pos</span><span class="p">)</span><span class="o">-&gt;</span><span class="n">deleteLater</span><span class="p">();</span>
<a name="line-741"></a> <span class="k">break</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="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">buttons</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-746"></a> <span class="p">{</span>
<a name="line-747"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">btnTabSep</span><span class="o">-&gt;</span><span class="n">hide</span><span class="p">();</span>
<a name="line-748"></a> <span class="p">}</span>
<a name="line-749"></a><span class="p">}</span>
<a name="line-750"></a>
<a name="line-751"></a><span class="kt">void</span> <span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">removeTab</span><span class="p">(</span><span class="kt">int</span> <span class="n">id</span><span class="p">)</span>
<a name="line-752"></a><span class="p">{</span>
<a name="line-753"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">internal</span><span class="o">-&gt;</span><span class="n">removeTab</span><span class="p">(</span><span class="n">id</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="kt">void</span> <span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">setTab</span><span class="p">(</span><span class="kt">int</span> <span class="n">id</span><span class="p">,</span><span class="kt">bool</span> <span class="n">state</span><span class="p">)</span>
<a name="line-757"></a><span class="p">{</span>
<a name="line-758"></a> <span class="n">DMultiTabBarTab</span><span class="o">*</span> <span class="k">const</span> <span class="n">ttab</span> <span class="o">=</span> <span class="n">tab</span><span class="p">(</span><span class="n">id</span><span class="p">);</span>
<a name="line-759"></a>
<a name="line-760"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ttab</span><span class="p">)</span>
<a name="line-761"></a> <span class="p">{</span>
<a name="line-762"></a> <span class="n">ttab</span><span class="o">-&gt;</span><span class="n">setState</span><span class="p">(</span><span class="n">state</span><span class="p">);</span>
<a name="line-763"></a> <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="kt">bool</span> <span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">isTabRaised</span><span class="p">(</span><span class="kt">int</span> <span class="n">id</span><span class="p">)</span> <span class="k">const</span>
<a name="line-767"></a><span class="p">{</span>
<a name="line-768"></a> <span class="n">DMultiTabBarTab</span><span class="o">*</span> <span class="k">const</span> <span class="n">ttab</span> <span class="o">=</span> <span class="n">tab</span><span class="p">(</span><span class="n">id</span><span class="p">);</span>
<a name="line-769"></a>
<a name="line-770"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ttab</span><span class="p">)</span>
<a name="line-771"></a> <span class="p">{</span>
<a name="line-772"></a> <span class="k">return</span> <span class="n">ttab</span><span class="o">-&gt;</span><span class="n">isChecked</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">return</span> <span class="nb">false</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="kt">void</span> <span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">setStyle</span><span class="p">(</span><span class="n">TextStyle</span> <span class="n">style</span><span class="p">)</span>
<a name="line-779"></a><span class="p">{</span>
<a name="line-780"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">internal</span><span class="o">-&gt;</span><span class="n">setStyle</span><span class="p">(</span><span class="n">style</span><span class="p">);</span>
<a name="line-781"></a><span class="p">}</span>
<a name="line-782"></a>
<a name="line-783"></a><span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">TextStyle</span> <span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">tabStyle</span><span class="p">()</span> <span class="k">const</span>
<a name="line-784"></a><span class="p">{</span>
<a name="line-785"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">internal</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">style</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="kt">void</span> <span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">setPosition</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">Edge</span> <span class="n">pos</span><span class="p">)</span>
<a name="line-789"></a><span class="p">{</span>
<a name="line-790"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">position</span> <span class="o">=</span> <span class="n">pos</span><span class="p">;</span>
<a name="line-791"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">internal</span><span class="o">-&gt;</span><span class="n">setPosition</span><span class="p">(</span><span class="n">pos</span><span class="p">);</span>
<a name="line-792"></a><span class="p">}</span>
<a name="line-793"></a>
<a name="line-794"></a><span class="n">Qt</span><span class="o">::</span><span class="n">Edge</span> <span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">position</span><span class="p">()</span> <span class="k">const</span>
<a name="line-795"></a><span class="p">{</span>
<a name="line-796"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">position</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="kt">void</span> <span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">fontChange</span><span class="p">(</span><span class="k">const</span> <span class="n">QFont</span><span class="o">&amp;</span><span class="p">)</span>
<a name="line-800"></a><span class="p">{</span>
<a name="line-801"></a> <span class="n">updateGeometry</span><span class="p">();</span>
<a name="line-802"></a><span class="p">}</span>
<a name="line-803"></a>
<a name="line-804"></a><span class="c1">// -------------------------------------------------------------------------------------</span>
<a name="line-805"></a>
<a name="line-806"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">SidebarState</span>
<a name="line-807"></a><span class="p">{</span>
<a name="line-808"></a>
<a name="line-809"></a><span class="k">public</span><span class="o">:</span>
<a name="line-810"></a>
<a name="line-811"></a> <span class="n">SidebarState</span><span class="p">()</span>
<a name="line-812"></a> <span class="o">:</span> <span class="n">activeWidget</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-813"></a> <span class="n">size</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
<a name="line-814"></a> <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">SidebarState</span><span class="p">(</span><span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">w</span><span class="p">,</span> <span class="kt">int</span> <span class="n">size</span><span class="p">)</span>
<a name="line-818"></a> <span class="o">:</span> <span class="n">activeWidget</span><span class="p">(</span><span class="n">w</span><span class="p">),</span>
<a name="line-819"></a> <span class="n">size</span><span class="p">(</span><span class="n">size</span><span class="p">)</span>
<a name="line-820"></a> <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="n">QWidget</span><span class="o">*</span> <span class="n">activeWidget</span><span class="p">;</span>
<a name="line-824"></a> <span class="kt">int</span> <span class="n">size</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="c1">// -------------------------------------------------------------------------------------</span>
<a name="line-828"></a>
<a name="line-829"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">Sidebar</span><span class="o">::</span><span class="n">Private</span>
<a name="line-830"></a><span class="p">{</span>
<a name="line-831"></a>
<a name="line-832"></a><span class="k">public</span><span class="o">:</span>
<a name="line-833"></a>
<a name="line-834"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
<a name="line-835"></a> <span class="o">:</span> <span class="n">minimizedDefault</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
<a name="line-836"></a> <span class="n">minimized</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
<a name="line-837"></a> <span class="n">isMinimized</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
<a name="line-838"></a> <span class="n">tabs</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
<a name="line-839"></a> <span class="n">activeTab</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span>
<a name="line-840"></a> <span class="n">dragSwitchId</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span>
<a name="line-841"></a> <span class="n">restoreSize</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
<a name="line-842"></a> <span class="n">stack</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-843"></a> <span class="n">splitter</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-844"></a> <span class="n">dragSwitchTimer</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-845"></a> <span class="n">appendedTabsStateCache</span><span class="p">(),</span>
<a name="line-846"></a> <span class="n">optionActiveTabEntry</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;ActiveTab&quot;</span><span class="p">)),</span>
<a name="line-847"></a> <span class="n">optionMinimizedEntry</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Minimized&quot;</span><span class="p">)),</span>
<a name="line-848"></a> <span class="n">optionRestoreSizeEntry</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;RestoreSize&quot;</span><span class="p">))</span>
<a name="line-849"></a> <span class="p">{</span>
<a name="line-850"></a> <span class="p">}</span>
<a name="line-851"></a>
<a name="line-852"></a> <span class="kt">bool</span> <span class="n">minimizedDefault</span><span class="p">;</span>
<a name="line-853"></a> <span class="kt">bool</span> <span class="n">minimized</span><span class="p">;</span>
<a name="line-854"></a>
<a name="line-855"></a> <span class="cm">/**</span>
<a name="line-856"></a><span class="cm"> * Backup of shrinked status before backup(), restored by restore()</span>
<a name="line-857"></a><span class="cm"> * NOTE: when sidebar is hidden, only icon bar is affected. If sidebar view is</span>
<a name="line-858"></a><span class="cm"> * visible, this one must be shrink and restored accordingly.</span>
<a name="line-859"></a><span class="cm"> */</span>
<a name="line-860"></a> <span class="kt">bool</span> <span class="n">isMinimized</span><span class="p">;</span>
<a name="line-861"></a>
<a name="line-862"></a> <span class="kt">int</span> <span class="n">tabs</span><span class="p">;</span>
<a name="line-863"></a> <span class="kt">int</span> <span class="n">activeTab</span><span class="p">;</span>
<a name="line-864"></a> <span class="kt">int</span> <span class="n">dragSwitchId</span><span class="p">;</span>
<a name="line-865"></a> <span class="kt">int</span> <span class="n">restoreSize</span><span class="p">;</span>
<a name="line-866"></a>
<a name="line-867"></a> <span class="n">QStackedWidget</span><span class="o">*</span> <span class="n">stack</span><span class="p">;</span>
<a name="line-868"></a> <span class="n">SidebarSplitter</span><span class="o">*</span> <span class="n">splitter</span><span class="p">;</span>
<a name="line-869"></a> <span class="n">QTimer</span><span class="o">*</span> <span class="n">dragSwitchTimer</span><span class="p">;</span>
<a name="line-870"></a>
<a name="line-871"></a> <span class="n">QHash</span><span class="o">&lt;</span><span class="n">QWidget</span><span class="o">*</span><span class="p">,</span> <span class="n">SidebarState</span><span class="o">&gt;</span> <span class="n">appendedTabsStateCache</span><span class="p">;</span>
<a name="line-872"></a>
<a name="line-873"></a> <span class="k">const</span> <span class="n">QString</span> <span class="n">optionActiveTabEntry</span><span class="p">;</span>
<a name="line-874"></a> <span class="k">const</span> <span class="n">QString</span> <span class="n">optionMinimizedEntry</span><span class="p">;</span>
<a name="line-875"></a> <span class="k">const</span> <span class="n">QString</span> <span class="n">optionRestoreSizeEntry</span><span class="p">;</span>
<a name="line-876"></a><span class="p">};</span>
<a name="line-877"></a>
<a name="line-878"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">SidebarSplitter</span><span class="o">::</span><span class="n">Private</span>
<a name="line-879"></a><span class="p">{</span>
<a name="line-880"></a><span class="k">public</span><span class="o">:</span>
<a name="line-881"></a>
<a name="line-882"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">Sidebar</span><span class="o">*&gt;</span> <span class="n">sidebars</span><span class="p">;</span>
<a name="line-883"></a><span class="p">};</span>
<a name="line-884"></a>
<a name="line-885"></a><span class="c1">// -------------------------------------------------------------------------------------</span>
<a name="line-886"></a>
<a name="line-887"></a><span class="n">Sidebar</span><span class="o">::</span><span class="n">Sidebar</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">SidebarSplitter</span><span class="o">*</span> <span class="k">const</span> <span class="n">sp</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Edge</span> <span class="n">side</span><span class="p">,</span> <span class="kt">bool</span> <span class="n">minimizedDefault</span><span class="p">)</span>
<a name="line-888"></a> <span class="o">:</span> <span class="n">DMultiTabBar</span><span class="p">(</span><span class="n">side</span><span class="p">,</span> <span class="n">parent</span><span class="p">),</span>
<a name="line-889"></a> <span class="n">StateSavingObject</span><span class="p">(</span><span class="k">this</span><span class="p">),</span>
<a name="line-890"></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-891"></a><span class="p">{</span>
<a name="line-892"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">splitter</span> <span class="o">=</span> <span class="n">sp</span><span class="p">;</span>
<a name="line-893"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">minimizedDefault</span> <span class="o">=</span> <span class="n">minimizedDefault</span><span class="p">;</span>
<a name="line-894"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QStackedWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">splitter</span><span class="p">);</span>
<a name="line-895"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dragSwitchTimer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QTimer</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-896"></a>
<a name="line-897"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">dragSwitchTimer</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">timeout</span><span class="p">()),</span>
<a name="line-898"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotDragSwitchTimer</span><span class="p">()));</span>
<a name="line-899"></a>
<a name="line-900"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">splitter</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sidebars</span> <span class="o">&lt;&lt;</span> <span class="k">this</span><span class="p">;</span>
<a name="line-901"></a>
<a name="line-902"></a> <span class="n">setStyle</span><span class="p">(</span><span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">ActiveIconText</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">Sidebar</span><span class="o">::~</span><span class="n">Sidebar</span><span class="p">()</span>
<a name="line-906"></a><span class="p">{</span>
<a name="line-907"></a> <span class="n">saveState</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">splitter</span><span class="p">)</span>
<a name="line-910"></a> <span class="p">{</span>
<a name="line-911"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">splitter</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sidebars</span><span class="p">.</span><span class="n">removeAll</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-912"></a> <span class="p">}</span>
<a name="line-913"></a>
<a name="line-914"></a> <span class="k">delete</span> <span class="n">d</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">SidebarSplitter</span><span class="o">*</span> <span class="n">Sidebar</span><span class="o">::</span><span class="n">splitter</span><span class="p">()</span> <span class="k">const</span>
<a name="line-918"></a><span class="p">{</span>
<a name="line-919"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">splitter</span><span class="p">;</span>
<a name="line-920"></a><span class="p">}</span>
<a name="line-921"></a>
<a name="line-922"></a><span class="kt">void</span> <span class="n">Sidebar</span><span class="o">::</span><span class="n">doLoadState</span><span class="p">()</span>
<a name="line-923"></a><span class="p">{</span>
<a name="line-924"></a> <span class="n">KConfigGroup</span> <span class="n">group</span> <span class="o">=</span> <span class="n">getConfigGroup</span><span class="p">();</span>
<a name="line-925"></a> <span class="kt">int</span> <span class="n">tab</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="n">entryName</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">optionActiveTabEntry</span><span class="p">),</span> <span class="mi">0</span><span class="p">);</span>
<a name="line-926"></a> <span class="kt">bool</span> <span class="n">minimized</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="n">entryName</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">optionMinimizedEntry</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">minimizedDefault</span><span class="p">);</span>
<a name="line-927"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">restoreSize</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="n">entryName</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">optionRestoreSizeEntry</span><span class="p">),</span> <span class="o">-</span><span class="mi">1</span><span class="p">);</span>
<a name="line-928"></a>
<a name="line-929"></a> <span class="c1">// validate</span>
<a name="line-930"></a>
<a name="line-931"></a> <span class="k">if</span> <span class="p">((</span><span class="n">tab</span> <span class="o">&gt;=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabs</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">tab</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">))</span>
<a name="line-932"></a> <span class="p">{</span>
<a name="line-933"></a> <span class="n">tab</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-934"></a> <span class="p">}</span>
<a name="line-935"></a>
<a name="line-936"></a> <span class="k">if</span> <span class="p">(</span><span class="n">minimized</span><span class="p">)</span>
<a name="line-937"></a> <span class="p">{</span>
<a name="line-938"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">activeTab</span> <span class="o">=</span> <span class="n">tab</span><span class="p">;</span>
<a name="line-939"></a> <span class="n">setTab</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">activeTab</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-940"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</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">activeTab</span><span class="p">);</span>
<a name="line-941"></a> <span class="n">shrink</span><span class="p">();</span>
<a name="line-942"></a> <span class="n">emit</span> <span class="nf">signalChangedTab</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</span><span class="o">-&gt;</span><span class="n">currentWidget</span><span class="p">());</span>
<a name="line-943"></a>
<a name="line-944"></a> <span class="k">return</span><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="n">d</span><span class="o">-&gt;</span><span class="n">activeTab</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<a name="line-948"></a> <span class="n">clicked</span><span class="p">(</span><span class="n">tab</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="kt">void</span> <span class="n">Sidebar</span><span class="o">::</span><span class="n">doSaveState</span><span class="p">()</span>
<a name="line-952"></a><span class="p">{</span>
<a name="line-953"></a> <span class="n">KConfigGroup</span> <span class="n">group</span> <span class="o">=</span> <span class="n">getConfigGroup</span><span class="p">();</span>
<a name="line-954"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="n">entryName</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">optionActiveTabEntry</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">activeTab</span><span class="p">);</span>
<a name="line-955"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="n">entryName</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">optionMinimizedEntry</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">minimized</span><span class="p">);</span>
<a name="line-956"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="n">entryName</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">optionRestoreSizeEntry</span><span class="p">),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">minimized</span> <span class="o">?</span> <span class="n">d</span><span class="o">-&gt;</span><span class="nl">restoreSize</span> <span class="p">:</span> <span class="o">-</span><span class="mi">1</span><span class="p">);</span>
<a name="line-957"></a><span class="p">}</span>
<a name="line-958"></a>
<a name="line-959"></a><span class="kt">void</span> <span class="n">Sidebar</span><span class="o">::</span><span class="n">backup</span><span class="p">()</span>
<a name="line-960"></a><span class="p">{</span>
<a name="line-961"></a> <span class="c1">// backup preview state of sidebar view (shrink or not)</span>
<a name="line-962"></a>
<a name="line-963"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">isMinimized</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">minimized</span><span class="p">;</span>
<a name="line-964"></a>
<a name="line-965"></a> <span class="c1">// In all case, shrink sidebar view</span>
<a name="line-966"></a>
<a name="line-967"></a> <span class="n">shrink</span><span class="p">();</span>
<a name="line-968"></a>
<a name="line-969"></a> <span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">hide</span><span class="p">();</span>
<a name="line-970"></a><span class="p">}</span>
<a name="line-971"></a>
<a name="line-972"></a><span class="kt">void</span> <span class="n">Sidebar</span><span class="o">::</span><span class="n">backup</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QWidget</span><span class="o">*&gt;</span> <span class="n">thirdWidgetsToBackup</span><span class="p">,</span> <span class="n">QList</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;*</span> <span class="k">const</span> <span class="n">sizes</span><span class="p">)</span>
<a name="line-973"></a><span class="p">{</span>
<a name="line-974"></a> <span class="n">sizes</span><span class="o">-&gt;</span><span class="n">clear</span><span class="p">();</span>
<a name="line-975"></a>
<a name="line-976"></a> <span class="n">foreach</span> <span class="p">(</span><span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">widget</span><span class="p">,</span> <span class="n">thirdWidgetsToBackup</span><span class="p">)</span>
<a name="line-977"></a> <span class="p">{</span>
<a name="line-978"></a> <span class="o">*</span><span class="n">sizes</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">splitter</span><span class="o">-&gt;</span><span class="n">size</span><span class="p">(</span><span class="n">widget</span><span class="p">);</span>
<a name="line-979"></a> <span class="p">}</span>
<a name="line-980"></a>
<a name="line-981"></a> <span class="n">backup</span><span class="p">();</span>
<a name="line-982"></a><span class="p">}</span>
<a name="line-983"></a>
<a name="line-984"></a><span class="kt">void</span> <span class="n">Sidebar</span><span class="o">::</span><span class="n">restore</span><span class="p">()</span>
<a name="line-985"></a><span class="p">{</span>
<a name="line-986"></a> <span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">show</span><span class="p">();</span>
<a name="line-987"></a>
<a name="line-988"></a> <span class="c1">// restore preview state of sidebar view, stored in backup()</span>
<a name="line-989"></a>
<a name="line-990"></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">isMinimized</span><span class="p">)</span>
<a name="line-991"></a> <span class="p">{</span>
<a name="line-992"></a> <span class="n">expand</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="kt">void</span> <span class="n">Sidebar</span><span class="o">::</span><span class="n">restore</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QWidget</span><span class="o">*&gt;</span> <span class="n">thirdWidgetsToRestore</span><span class="p">,</span> <span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;&amp;</span> <span class="n">sizes</span><span class="p">)</span>
<a name="line-997"></a><span class="p">{</span>
<a name="line-998"></a> <span class="n">restore</span><span class="p">();</span>
<a name="line-999"></a>
<a name="line-1000"></a> <span class="k">if</span> <span class="p">(</span><span class="n">thirdWidgetsToRestore</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">==</span> <span class="n">sizes</span><span class="p">.</span><span class="n">size</span><span class="p">())</span>
<a name="line-1001"></a> <span class="p">{</span>
<a name="line-1002"></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">thirdWidgetsToRestore</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-1003"></a> <span class="p">{</span>
<a name="line-1004"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">splitter</span><span class="o">-&gt;</span><span class="n">setSize</span><span class="p">(</span><span class="n">thirdWidgetsToRestore</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">sizes</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-1005"></a> <span class="p">}</span>
<a name="line-1006"></a> <span class="p">}</span>
<a name="line-1007"></a><span class="p">}</span>
<a name="line-1008"></a>
<a name="line-1009"></a><span class="kt">void</span> <span class="n">Sidebar</span><span class="o">::</span><span class="n">appendTab</span><span class="p">(</span><span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">w</span><span class="p">,</span> <span class="k">const</span> <span class="n">QIcon</span><span class="o">&amp;</span> <span class="n">pic</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-1010"></a><span class="p">{</span>
<a name="line-1011"></a> <span class="c1">// Store state (but not on initialization)</span>
<a name="line-1012"></a>
<a name="line-1013"></a> <span class="k">if</span> <span class="p">(</span><span class="n">isVisible</span><span class="p">())</span>
<a name="line-1014"></a> <span class="p">{</span>
<a name="line-1015"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">appendedTabsStateCache</span><span class="p">[</span><span class="n">w</span><span class="p">]</span> <span class="o">=</span> <span class="n">SidebarState</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</span><span class="o">-&gt;</span><span class="n">currentWidget</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">splitter</span><span class="o">-&gt;</span><span class="n">size</span><span class="p">(</span><span class="k">this</span><span class="p">));</span>
<a name="line-1016"></a> <span class="p">}</span>
<a name="line-1017"></a>
<a name="line-1018"></a> <span class="c1">// Add tab</span>
<a name="line-1019"></a>
<a name="line-1020"></a> <span class="n">w</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">stack</span><span class="p">);</span>
<a name="line-1021"></a> <span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">appendTab</span><span class="p">(</span><span class="n">pic</span><span class="p">.</span><span class="n">pixmap</span><span class="p">(</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_SmallIconSize</span><span class="p">)),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabs</span><span class="p">,</span> <span class="n">title</span><span class="p">);</span>
<a name="line-1022"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</span><span class="o">-&gt;</span><span class="n">insertWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tabs</span><span class="p">,</span> <span class="n">w</span><span class="p">);</span>
<a name="line-1023"></a>
<a name="line-1024"></a> <span class="n">tab</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tabs</span><span class="p">)</span><span class="o">-&gt;</span><span class="n">setAcceptDrops</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-1025"></a> <span class="n">tab</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tabs</span><span class="p">)</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-1026"></a>
<a name="line-1027"></a> <span class="n">connect</span><span class="p">(</span><span class="n">tab</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tabs</span><span class="p">),</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">clicked</span><span class="p">(</span><span class="kt">int</span><span class="p">)),</span>
<a name="line-1028"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">clicked</span><span class="p">(</span><span class="kt">int</span><span class="p">)));</span>
<a name="line-1029"></a>
<a name="line-1030"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabs</span><span class="o">++</span><span class="p">;</span>
<a name="line-1031"></a><span class="p">}</span>
<a name="line-1032"></a>
<a name="line-1033"></a><span class="kt">void</span> <span class="n">Sidebar</span><span class="o">::</span><span class="n">deleteTab</span><span class="p">(</span><span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">w</span><span class="p">)</span>
<a name="line-1034"></a><span class="p">{</span>
<a name="line-1035"></a><span class="hll"> <span class="kt">int</span> <span class="n">tab</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</span><span class="o">-&gt;</span><span class="n">indexOf</span><span class="p">(</span><span class="n">w</span><span class="p">);</span><span class='error2'>&lt;--- Shadowed declaration</span>
</span><a name="line-1036"></a>
<a name="line-1037"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tab</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-1038"></a> <span class="p">{</span>
<a name="line-1039"></a> <span class="k">return</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="kt">bool</span> <span class="n">removingActiveTab</span> <span class="o">=</span> <span class="p">(</span><span class="n">tab</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">activeTab</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="n">removingActiveTab</span><span class="p">)</span>
<a name="line-1045"></a> <span class="p">{</span>
<a name="line-1046"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">activeTab</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<a name="line-1047"></a> <span class="p">}</span>
<a name="line-1048"></a>
<a name="line-1049"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</span><span class="o">-&gt;</span><span class="n">removeWidget</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</span><span class="o">-&gt;</span><span class="n">widget</span><span class="p">(</span><span class="n">tab</span><span class="p">));</span>
<a name="line-1050"></a>
<a name="line-1051"></a> <span class="c1">// delete widget</span>
<a name="line-1052"></a>
<a name="line-1053"></a> <span class="n">removeTab</span><span class="p">(</span><span class="n">tab</span><span class="p">);</span>
<a name="line-1054"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabs</span><span class="o">--</span><span class="p">;</span>
<a name="line-1055"></a>
<a name="line-1056"></a> <span class="c1">// restore or reset active tab and width</span>
<a name="line-1057"></a>
<a name="line-1058"></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">minimized</span><span class="p">)</span>
<a name="line-1059"></a> <span class="p">{</span>
<a name="line-1060"></a> <span class="c1">// restore to state before adding tab</span>
<a name="line-1061"></a> <span class="c1">// using a hash is simple, but does not handle well multiple add/removal operations at a time</span>
<a name="line-1062"></a>
<a name="line-1063"></a> <span class="n">SidebarState</span> <span class="n">state</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">appendedTabsStateCache</span><span class="p">.</span><span class="n">take</span><span class="p">(</span><span class="n">w</span><span class="p">);</span>
<a name="line-1064"></a>
<a name="line-1065"></a> <span class="k">if</span> <span class="p">(</span><span class="n">state</span><span class="p">.</span><span class="n">activeWidget</span><span class="p">)</span>
<a name="line-1066"></a> <span class="p">{</span>
<a name="line-1067"></a><span class="hll"> <span class="kt">int</span> <span class="n">tab</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</span><span class="o">-&gt;</span><span class="n">indexOf</span><span class="p">(</span><span class="n">state</span><span class="p">.</span><span class="n">activeWidget</span><span class="p">);</span><span class='error2'>&lt;--- Shadow variable</span>
</span><a name="line-1068"></a>
<a name="line-1069"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tab</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<a name="line-1070"></a> <span class="p">{</span>
<a name="line-1071"></a> <span class="n">switchTabAndStackToTab</span><span class="p">(</span><span class="n">tab</span><span class="p">);</span>
<a name="line-1072"></a> <span class="n">emit</span> <span class="nf">signalChangedTab</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</span><span class="o">-&gt;</span><span class="n">currentWidget</span><span class="p">());</span>
<a name="line-1073"></a>
<a name="line-1074"></a> <span class="k">if</span> <span class="p">(</span><span class="n">state</span><span class="p">.</span><span class="n">size</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-1075"></a> <span class="p">{</span>
<a name="line-1076"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">minimized</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-1077"></a> <span class="n">setTab</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">activeTab</span><span class="p">,</span> <span class="nb">false</span><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="n">d</span><span class="o">-&gt;</span><span class="n">splitter</span><span class="o">-&gt;</span><span class="n">setSize</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="n">state</span><span class="p">.</span><span class="n">size</span><span class="p">);</span>
<a name="line-1081"></a> <span class="p">}</span>
<a name="line-1082"></a> <span class="p">}</span>
<a name="line-1083"></a> <span class="k">else</span>
<a name="line-1084"></a> <span class="p">{</span>
<a name="line-1085"></a> <span class="k">if</span> <span class="p">(</span><span class="n">removingActiveTab</span><span class="p">)</span>
<a name="line-1086"></a> <span class="p">{</span>
<a name="line-1087"></a> <span class="n">clicked</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tabs</span> <span class="o">-</span> <span class="mi">1</span><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="n">d</span><span class="o">-&gt;</span><span class="n">splitter</span><span class="o">-&gt;</span><span class="n">setSize</span><span class="p">(</span><span class="k">this</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">);</span>
<a name="line-1091"></a> <span class="p">}</span>
<a name="line-1092"></a> <span class="p">}</span>
<a name="line-1093"></a> <span class="k">else</span>
<a name="line-1094"></a> <span class="p">{</span>
<a name="line-1095"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">restoreSize</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<a name="line-1096"></a> <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="kt">void</span> <span class="n">Sidebar</span><span class="o">::</span><span class="n">clicked</span><span class="p">(</span><span class="kt">int</span> <span class="n">tab</span><span class="p">)</span>
<a name="line-1100"></a><span class="p">{</span>
<a name="line-1101"></a> <span class="k">if</span> <span class="p">((</span><span class="n">tab</span> <span class="o">&gt;=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabs</span><span class="p">)</span> <span class="o">||</span> <span class="p">(</span><span class="n">tab</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">))</span>
<a name="line-1102"></a> <span class="p">{</span>
<a name="line-1103"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-1104"></a> <span class="p">}</span>
<a name="line-1105"></a>
<a name="line-1106"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tab</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">activeTab</span><span class="p">)</span>
<a name="line-1107"></a> <span class="p">{</span>
<a name="line-1108"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</span><span class="o">-&gt;</span><span class="n">isHidden</span><span class="p">()</span> <span class="o">?</span> <span class="n">expand</span><span class="p">()</span>
<a name="line-1109"></a> <span class="o">:</span> <span class="n">shrink</span><span class="p">();</span>
<a name="line-1110"></a> <span class="p">}</span>
<a name="line-1111"></a> <span class="k">else</span>
<a name="line-1112"></a> <span class="p">{</span>
<a name="line-1113"></a> <span class="n">switchTabAndStackToTab</span><span class="p">(</span><span class="n">tab</span><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">d</span><span class="o">-&gt;</span><span class="n">minimized</span><span class="p">)</span>
<a name="line-1116"></a> <span class="p">{</span>
<a name="line-1117"></a> <span class="n">expand</span><span class="p">();</span>
<a name="line-1118"></a> <span class="p">}</span>
<a name="line-1119"></a>
<a name="line-1120"></a> <span class="n">emit</span> <span class="n">signalChangedTab</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</span><span class="o">-&gt;</span><span class="n">currentWidget</span><span class="p">());</span>
<a name="line-1121"></a> <span class="p">}</span>
<a name="line-1122"></a><span class="p">}</span>
<a name="line-1123"></a>
<a name="line-1124"></a><span class="kt">void</span> <span class="n">Sidebar</span><span class="o">::</span><span class="n">setActiveTab</span><span class="p">(</span><span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">w</span><span class="p">)</span>
<a name="line-1125"></a><span class="p">{</span>
<a name="line-1126"></a> <span class="kt">int</span> <span class="n">tab</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</span><span class="o">-&gt;</span><span class="n">indexOf</span><span class="p">(</span><span class="n">w</span><span class="p">);</span>
<a name="line-1127"></a>
<a name="line-1128"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tab</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-1129"></a> <span class="p">{</span>
<a name="line-1130"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-1131"></a> <span class="p">}</span>
<a name="line-1132"></a>
<a name="line-1133"></a> <span class="n">switchTabAndStackToTab</span><span class="p">(</span><span class="n">tab</span><span class="p">);</span>
<a name="line-1134"></a>
<a name="line-1135"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">minimized</span><span class="p">)</span>
<a name="line-1136"></a> <span class="p">{</span>
<a name="line-1137"></a> <span class="n">expand</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="n">emit</span> <span class="n">signalChangedTab</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</span><span class="o">-&gt;</span><span class="n">currentWidget</span><span class="p">());</span>
<a name="line-1141"></a><span class="p">}</span>
<a name="line-1142"></a>
<a name="line-1143"></a><span class="kt">void</span> <span class="n">Sidebar</span><span class="o">::</span><span class="n">activePreviousTab</span><span class="p">()</span>
<a name="line-1144"></a><span class="p">{</span>
<a name="line-1145"></a> <span class="kt">int</span> <span class="n">tab</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</span><span class="o">-&gt;</span><span class="n">indexOf</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</span><span class="o">-&gt;</span><span class="n">currentWidget</span><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">tab</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-1148"></a> <span class="p">{</span>
<a name="line-1149"></a> <span class="n">tab</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabs</span><span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<a name="line-1150"></a> <span class="p">}</span>
<a name="line-1151"></a> <span class="k">else</span>
<a name="line-1152"></a> <span class="p">{</span>
<a name="line-1153"></a> <span class="n">tab</span><span class="o">--</span><span class="p">;</span>
<a name="line-1154"></a> <span class="p">}</span>
<a name="line-1155"></a>
<a name="line-1156"></a> <span class="n">setActiveTab</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</span><span class="o">-&gt;</span><span class="n">widget</span><span class="p">(</span><span class="n">tab</span><span class="p">));</span>
<a name="line-1157"></a><span class="p">}</span>
<a name="line-1158"></a>
<a name="line-1159"></a><span class="kt">void</span> <span class="n">Sidebar</span><span class="o">::</span><span class="n">activeNextTab</span><span class="p">()</span>
<a name="line-1160"></a><span class="p">{</span>
<a name="line-1161"></a> <span class="kt">int</span> <span class="n">tab</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</span><span class="o">-&gt;</span><span class="n">indexOf</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</span><span class="o">-&gt;</span><span class="n">currentWidget</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">tab</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tabs</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<a name="line-1164"></a> <span class="p">{</span>
<a name="line-1165"></a> <span class="n">tab</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-1166"></a> <span class="p">}</span>
<a name="line-1167"></a> <span class="k">else</span>
<a name="line-1168"></a> <span class="p">{</span>
<a name="line-1169"></a> <span class="n">tab</span><span class="o">++</span><span class="p">;</span>
<a name="line-1170"></a> <span class="p">}</span>
<a name="line-1171"></a>
<a name="line-1172"></a> <span class="n">setActiveTab</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</span><span class="o">-&gt;</span><span class="n">widget</span><span class="p">(</span><span class="n">tab</span><span class="p">));</span>
<a name="line-1173"></a><span class="p">}</span>
<a name="line-1174"></a>
<a name="line-1175"></a><span class="kt">void</span> <span class="n">Sidebar</span><span class="o">::</span><span class="n">switchTabAndStackToTab</span><span class="p">(</span><span class="kt">int</span> <span class="n">tab</span><span class="p">)</span>
<a name="line-1176"></a><span class="p">{</span>
<a name="line-1177"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">activeTab</span> <span class="o">&gt;=</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-1178"></a> <span class="p">{</span>
<a name="line-1179"></a> <span class="n">setTab</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">activeTab</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-1180"></a> <span class="p">}</span>
<a name="line-1181"></a>
<a name="line-1182"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">activeTab</span> <span class="o">=</span> <span class="n">tab</span><span class="p">;</span>
<a name="line-1183"></a> <span class="n">setTab</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">activeTab</span><span class="p">,</span> <span class="nb">true</span><span class="p">);</span>
<a name="line-1184"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</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">activeTab</span><span class="p">);</span>
<a name="line-1185"></a><span class="p">}</span>
<a name="line-1186"></a>
<a name="line-1187"></a><span class="n">QWidget</span><span class="o">*</span> <span class="n">Sidebar</span><span class="o">::</span><span class="n">getActiveTab</span><span class="p">()</span> <span class="k">const</span>
<a name="line-1188"></a><span class="p">{</span>
<a name="line-1189"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">splitter</span><span class="p">)</span>
<a name="line-1190"></a> <span class="p">{</span>
<a name="line-1191"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</span><span class="o">-&gt;</span><span class="n">currentWidget</span><span class="p">();</span>
<a name="line-1192"></a> <span class="p">}</span>
<a name="line-1193"></a> <span class="k">else</span>
<a name="line-1194"></a> <span class="p">{</span>
<a name="line-1195"></a> <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-1196"></a> <span class="p">}</span>
<a name="line-1197"></a><span class="p">}</span>
<a name="line-1198"></a>
<a name="line-1199"></a><span class="kt">void</span> <span class="n">Sidebar</span><span class="o">::</span><span class="n">shrink</span><span class="p">()</span>
<a name="line-1200"></a><span class="p">{</span>
<a name="line-1201"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">minimized</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-1202"></a>
<a name="line-1203"></a> <span class="c1">// store the size that we had. We may later need it when we restore to visible.</span>
<a name="line-1204"></a>
<a name="line-1205"></a> <span class="kt">int</span> <span class="n">currentSize</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">splitter</span><span class="o">-&gt;</span><span class="n">size</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-1206"></a>
<a name="line-1207"></a> <span class="k">if</span> <span class="p">(</span><span class="n">currentSize</span><span class="p">)</span>
<a name="line-1208"></a> <span class="p">{</span>
<a name="line-1209"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">restoreSize</span> <span class="o">=</span> <span class="n">currentSize</span><span class="p">;</span>
<a name="line-1210"></a> <span class="p">}</span>
<a name="line-1211"></a>
<a name="line-1212"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</span><span class="o">-&gt;</span><span class="n">hide</span><span class="p">();</span>
<a name="line-1213"></a> <span class="n">emit</span> <span class="nf">signalViewChanged</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="kt">void</span> <span class="n">Sidebar</span><span class="o">::</span><span class="n">expand</span><span class="p">()</span>
<a name="line-1217"></a><span class="p">{</span>
<a name="line-1218"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">minimized</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-1219"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</span><span class="o">-&gt;</span><span class="n">show</span><span class="p">();</span>
<a name="line-1220"></a>
<a name="line-1221"></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">slotExpandTimer</span><span class="p">()));</span>
<a name="line-1222"></a><span class="p">}</span>
<a name="line-1223"></a>
<a name="line-1224"></a><span class="kt">void</span> <span class="n">Sidebar</span><span class="o">::</span><span class="n">slotExpandTimer</span><span class="p">()</span>
<a name="line-1225"></a><span class="p">{</span>
<a name="line-1226"></a> <span class="c1">// Do not expand to size 0 (only splitter handle visible)</span>
<a name="line-1227"></a> <span class="c1">// but either to previous size, or the minimum size hint</span>
<a name="line-1228"></a>
<a name="line-1229"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">splitter</span><span class="o">-&gt;</span><span class="n">size</span><span class="p">(</span><span class="k">this</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-1230"></a> <span class="p">{</span>
<a name="line-1231"></a> <span class="n">setTab</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">activeTab</span><span class="p">,</span> <span class="nb">true</span><span class="p">);</span>
<a name="line-1232"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">splitter</span><span class="o">-&gt;</span><span class="n">setSize</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">restoreSize</span> <span class="o">?</span> <span class="n">d</span><span class="o">-&gt;</span><span class="nl">restoreSize</span> <span class="p">:</span> <span class="o">-</span><span class="mi">1</span><span class="p">);</span>
<a name="line-1233"></a> <span class="p">}</span>
<a name="line-1234"></a>
<a name="line-1235"></a> <span class="n">emit</span> <span class="n">signalViewChanged</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="kt">bool</span> <span class="n">Sidebar</span><span class="o">::</span><span class="n">isExpanded</span><span class="p">()</span> <span class="k">const</span>
<a name="line-1239"></a><span class="p">{</span>
<a name="line-1240"></a> <span class="k">return</span> <span class="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">minimized</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="kt">bool</span> <span class="n">Sidebar</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">obj</span><span class="p">,</span> <span class="n">QEvent</span><span class="o">*</span> <span class="n">ev</span><span class="p">)</span>
<a name="line-1244"></a><span class="p">{</span>
<a name="line-1245"></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">tabs</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-1246"></a> <span class="p">{</span>
<a name="line-1247"></a> <span class="k">if</span> <span class="p">(</span><span class="n">obj</span> <span class="o">==</span> <span class="n">tab</span><span class="p">(</span><span class="n">i</span><span class="p">))</span>
<a name="line-1248"></a> <span class="p">{</span>
<a name="line-1249"></a> <span class="k">if</span> <span class="p">(</span><span class="n">ev</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">DragEnter</span><span class="p">)</span>
<a name="line-1250"></a> <span class="p">{</span>
<a name="line-1251"></a> <span class="n">QDragEnterEvent</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">QDragEnterEvent</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">ev</span><span class="p">);</span>
<a name="line-1252"></a> <span class="n">enterEvent</span><span class="p">(</span><span class="n">e</span><span class="p">);</span>
<a name="line-1253"></a> <span class="n">e</span><span class="o">-&gt;</span><span class="n">accept</span><span class="p">();</span>
<a name="line-1254"></a>
<a name="line-1255"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-1256"></a> <span class="p">}</span>
<a name="line-1257"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">ev</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">DragMove</span><span class="p">)</span>
<a name="line-1258"></a> <span class="p">{</span>
<a name="line-1259"></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">dragSwitchTimer</span><span class="o">-&gt;</span><span class="n">isActive</span><span class="p">())</span>
<a name="line-1260"></a> <span class="p">{</span>
<a name="line-1261"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dragSwitchTimer</span><span class="o">-&gt;</span><span class="n">setSingleShot</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-1262"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dragSwitchTimer</span><span class="o">-&gt;</span><span class="n">start</span><span class="p">(</span><span class="mi">800</span><span class="p">);</span>
<a name="line-1263"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dragSwitchId</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
<a name="line-1264"></a> <span class="p">}</span>
<a name="line-1265"></a>
<a name="line-1266"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-1267"></a> <span class="p">}</span>
<a name="line-1268"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">ev</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">DragLeave</span><span class="p">)</span>
<a name="line-1269"></a> <span class="p">{</span>
<a name="line-1270"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dragSwitchTimer</span><span class="o">-&gt;</span><span class="n">stop</span><span class="p">();</span>
<a name="line-1271"></a> <span class="n">QDragLeaveEvent</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">QDragLeaveEvent</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">ev</span><span class="p">);</span>
<a name="line-1272"></a> <span class="n">leaveEvent</span><span class="p">(</span><span class="n">e</span><span class="p">);</span>
<a name="line-1273"></a>
<a name="line-1274"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-1275"></a> <span class="p">}</span>
<a name="line-1276"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">ev</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">Drop</span><span class="p">)</span>
<a name="line-1277"></a> <span class="p">{</span>
<a name="line-1278"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">dragSwitchTimer</span><span class="o">-&gt;</span><span class="n">stop</span><span class="p">();</span>
<a name="line-1279"></a> <span class="n">QDropEvent</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">QDropEvent</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">ev</span><span class="p">);</span>
<a name="line-1280"></a> <span class="n">leaveEvent</span><span class="p">(</span><span class="n">e</span><span class="p">);</span>
<a name="line-1281"></a>
<a name="line-1282"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-1283"></a> <span class="p">}</span>
<a name="line-1284"></a> <span class="k">else</span>
<a name="line-1285"></a> <span class="p">{</span>
<a name="line-1286"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-1287"></a> <span class="p">}</span>
<a name="line-1288"></a> <span class="p">}</span>
<a name="line-1289"></a> <span class="p">}</span>
<a name="line-1290"></a>
<a name="line-1291"></a> <span class="c1">// Else, pass the event on to the parent class</span>
<a name="line-1292"></a>
<a name="line-1293"></a> <span class="k">return</span> <span class="n">DMultiTabBar</span><span class="o">::</span><span class="n">eventFilter</span><span class="p">(</span><span class="n">obj</span><span class="p">,</span> <span class="n">ev</span><span class="p">);</span>
<a name="line-1294"></a><span class="p">}</span>
<a name="line-1295"></a>
<a name="line-1296"></a><span class="kt">void</span> <span class="n">Sidebar</span><span class="o">::</span><span class="n">slotDragSwitchTimer</span><span class="p">()</span>
<a name="line-1297"></a><span class="p">{</span>
<a name="line-1298"></a> <span class="n">clicked</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">dragSwitchId</span><span class="p">);</span>
<a name="line-1299"></a><span class="p">}</span>
<a name="line-1300"></a>
<a name="line-1301"></a><span class="kt">void</span> <span class="n">Sidebar</span><span class="o">::</span><span class="n">slotSplitterBtnClicked</span><span class="p">()</span>
<a name="line-1302"></a><span class="p">{</span>
<a name="line-1303"></a> <span class="n">clicked</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">activeTab</span><span class="p">);</span>
<a name="line-1304"></a><span class="p">}</span>
<a name="line-1305"></a>
<a name="line-1306"></a><span class="c1">// -----------------------------------------------------------------------------</span>
<a name="line-1307"></a>
<a name="line-1308"></a><span class="k">const</span> <span class="n">QString</span> <span class="n">SidebarSplitter</span><span class="o">::</span><span class="n">DEFAULT_CONFIG_KEY</span> <span class="o">=</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;SplitterState&quot;</span><span class="p">);</span>
<a name="line-1309"></a>
<a name="line-1310"></a><span class="n">SidebarSplitter</span><span class="o">::</span><span class="n">SidebarSplitter</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-1311"></a> <span class="o">:</span> <span class="n">QSplitter</span><span class="p">(</span><span class="n">parent</span><span class="p">),</span>
<a name="line-1312"></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-1313"></a><span class="p">{</span>
<a name="line-1314"></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">splitterMoved</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-1315"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotSplitterMoved</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-1316"></a><span class="p">}</span>
<a name="line-1317"></a>
<a name="line-1318"></a><span class="n">SidebarSplitter</span><span class="o">::</span><span class="n">SidebarSplitter</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="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">parent</span><span class="p">)</span>
<a name="line-1319"></a> <span class="o">:</span> <span class="n">QSplitter</span><span class="p">(</span><span class="n">orientation</span><span class="p">,</span> <span class="n">parent</span><span class="p">),</span>
<a name="line-1320"></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-1321"></a><span class="p">{</span>
<a name="line-1322"></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">splitterMoved</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-1323"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotSplitterMoved</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-1324"></a><span class="p">}</span>
<a name="line-1325"></a>
<a name="line-1326"></a><span class="n">SidebarSplitter</span><span class="o">::~</span><span class="n">SidebarSplitter</span><span class="p">()</span>
<a name="line-1327"></a><span class="p">{</span>
<a name="line-1328"></a> <span class="c1">// retreat cautiously from sidebars that live longer</span>
<a name="line-1329"></a>
<a name="line-1330"></a> <span class="n">foreach</span> <span class="p">(</span><span class="n">Sidebar</span><span class="o">*</span> <span class="k">const</span> <span class="n">sidebar</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sidebars</span><span class="p">)</span>
<a name="line-1331"></a> <span class="p">{</span>
<a name="line-1332"></a> <span class="n">sidebar</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">splitter</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-1333"></a> <span class="p">}</span>
<a name="line-1334"></a>
<a name="line-1335"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
<a name="line-1336"></a><span class="p">}</span>
<a name="line-1337"></a>
<a name="line-1338"></a><span class="kt">void</span> <span class="n">SidebarSplitter</span><span class="o">::</span><span class="n">restoreState</span><span class="p">(</span><span class="n">KConfigGroup</span><span class="o">&amp;</span> <span class="n">group</span><span class="p">)</span>
<a name="line-1339"></a><span class="p">{</span>
<a name="line-1340"></a> <span class="n">restoreState</span><span class="p">(</span><span class="n">group</span><span class="p">,</span> <span class="n">DEFAULT_CONFIG_KEY</span><span class="p">);</span>
<a name="line-1341"></a><span class="p">}</span>
<a name="line-1342"></a>
<a name="line-1343"></a><span class="kt">void</span> <span class="n">SidebarSplitter</span><span class="o">::</span><span class="n">restoreState</span><span class="p">(</span><span class="n">KConfigGroup</span><span class="o">&amp;</span> <span class="n">group</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>
<a name="line-1344"></a><span class="p">{</span>
<a name="line-1345"></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="n">key</span><span class="p">))</span>
<a name="line-1346"></a> <span class="p">{</span>
<a name="line-1347"></a> <span class="n">QByteArray</span> <span class="n">state</span><span class="p">;</span>
<a name="line-1348"></a> <span class="n">state</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="n">key</span><span class="p">,</span> <span class="n">state</span><span class="p">);</span>
<a name="line-1349"></a> <span class="n">QSplitter</span><span class="o">::</span><span class="n">restoreState</span><span class="p">(</span><span class="n">QByteArray</span><span class="o">::</span><span class="n">fromBase64</span><span class="p">(</span><span class="n">state</span><span class="p">));</span>
<a name="line-1350"></a> <span class="p">}</span>
<a name="line-1351"></a><span class="p">}</span>
<a name="line-1352"></a>
<a name="line-1353"></a><span class="kt">void</span> <span class="n">SidebarSplitter</span><span class="o">::</span><span class="n">saveState</span><span class="p">(</span><span class="n">KConfigGroup</span><span class="o">&amp;</span> <span class="n">group</span><span class="p">)</span>
<a name="line-1354"></a><span class="p">{</span>
<a name="line-1355"></a> <span class="n">saveState</span><span class="p">(</span><span class="n">group</span><span class="p">,</span> <span class="n">DEFAULT_CONFIG_KEY</span><span class="p">);</span>
<a name="line-1356"></a><span class="p">}</span>
<a name="line-1357"></a>
<a name="line-1358"></a><span class="kt">void</span> <span class="n">SidebarSplitter</span><span class="o">::</span><span class="n">saveState</span><span class="p">(</span><span class="n">KConfigGroup</span><span class="o">&amp;</span> <span class="n">group</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>
<a name="line-1359"></a><span class="p">{</span>
<a name="line-1360"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">QSplitter</span><span class="o">::</span><span class="n">saveState</span><span class="p">().</span><span class="n">toBase64</span><span class="p">());</span>
<a name="line-1361"></a><span class="p">}</span>
<a name="line-1362"></a>
<a name="line-1363"></a><span class="kt">int</span> <span class="n">SidebarSplitter</span><span class="o">::</span><span class="n">size</span><span class="p">(</span><span class="n">Sidebar</span><span class="o">*</span> <span class="k">const</span> <span class="n">bar</span><span class="p">)</span> <span class="k">const</span>
<a name="line-1364"></a><span class="p">{</span>
<a name="line-1365"></a> <span class="k">return</span> <span class="n">size</span><span class="p">(</span><span class="n">bar</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</span><span class="p">);</span>
<a name="line-1366"></a><span class="p">}</span>
<a name="line-1367"></a>
<a name="line-1368"></a><span class="kt">int</span> <span class="n">SidebarSplitter</span><span class="o">::</span><span class="n">size</span><span class="p">(</span><span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">widget</span><span class="p">)</span> <span class="k">const</span>
<a name="line-1369"></a><span class="p">{</span>
<a name="line-1370"></a> <span class="kt">int</span> <span class="n">index</span> <span class="o">=</span> <span class="n">indexOf</span><span class="p">(</span><span class="n">widget</span><span class="p">);</span>
<a name="line-1371"></a>
<a name="line-1372"></a> <span class="k">if</span> <span class="p">(</span><span class="n">index</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<a name="line-1373"></a> <span class="p">{</span>
<a name="line-1374"></a> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<a name="line-1375"></a> <span class="p">}</span>
<a name="line-1376"></a>
<a name="line-1377"></a> <span class="k">return</span> <span class="n">sizes</span><span class="p">().</span><span class="n">at</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
<a name="line-1378"></a><span class="p">}</span>
<a name="line-1379"></a>
<a name="line-1380"></a><span class="kt">void</span> <span class="n">SidebarSplitter</span><span class="o">::</span><span class="n">setSize</span><span class="p">(</span><span class="n">Sidebar</span><span class="o">*</span> <span class="k">const</span> <span class="n">bar</span><span class="p">,</span> <span class="kt">int</span> <span class="n">size</span><span class="p">)</span>
<a name="line-1381"></a><span class="p">{</span>
<a name="line-1382"></a> <span class="n">setSize</span><span class="p">(</span><span class="n">bar</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</span><span class="p">,</span> <span class="n">size</span><span class="p">);</span>
<a name="line-1383"></a><span class="p">}</span>
<a name="line-1384"></a>
<a name="line-1385"></a><span class="kt">void</span> <span class="n">SidebarSplitter</span><span class="o">::</span><span class="n">setSize</span><span class="p">(</span><span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">widget</span><span class="p">,</span> <span class="kt">int</span> <span class="n">size</span><span class="p">)</span>
<a name="line-1386"></a><span class="p">{</span>
<a name="line-1387"></a> <span class="kt">int</span> <span class="n">index</span> <span class="o">=</span> <span class="n">indexOf</span><span class="p">(</span><span class="n">widget</span><span class="p">);</span>
<a name="line-1388"></a>
<a name="line-1389"></a> <span class="k">if</span> <span class="p">(</span><span class="n">index</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<a name="line-1390"></a> <span class="p">{</span>
<a name="line-1391"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-1392"></a> <span class="p">}</span>
<a name="line-1393"></a>
<a name="line-1394"></a> <span class="c1">// special case: Use minimum size hint</span>
<a name="line-1395"></a>
<a name="line-1396"></a> <span class="k">if</span> <span class="p">(</span><span class="n">size</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<a name="line-1397"></a> <span class="p">{</span>
<a name="line-1398"></a> <span class="k">if</span> <span class="p">(</span><span class="n">orientation</span><span class="p">()</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Horizontal</span><span class="p">)</span>
<a name="line-1399"></a> <span class="p">{</span>
<a name="line-1400"></a> <span class="n">size</span> <span class="o">=</span> <span class="n">widget</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-1401"></a> <span class="p">}</span>
<a name="line-1402"></a>
<a name="line-1403"></a> <span class="k">if</span> <span class="p">(</span><span class="n">orientation</span><span class="p">()</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">Vertical</span><span class="p">)</span>
<a name="line-1404"></a> <span class="p">{</span>
<a name="line-1405"></a> <span class="n">size</span> <span class="o">=</span> <span class="n">widget</span><span class="o">-&gt;</span><span class="n">minimumSizeHint</span><span class="p">().</span><span class="n">height</span><span class="p">();</span>
<a name="line-1406"></a> <span class="p">}</span>
<a name="line-1407"></a> <span class="p">}</span>
<a name="line-1408"></a>
<a name="line-1409"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">sizeList</span> <span class="o">=</span> <span class="n">sizes</span><span class="p">();</span>
<a name="line-1410"></a> <span class="n">sizeList</span><span class="p">[</span><span class="n">index</span><span class="p">]</span> <span class="o">=</span> <span class="n">size</span><span class="p">;</span>
<a name="line-1411"></a> <span class="n">setSizes</span><span class="p">(</span><span class="n">sizeList</span><span class="p">);</span>
<a name="line-1412"></a><span class="p">}</span>
<a name="line-1413"></a>
<a name="line-1414"></a><span class="kt">void</span> <span class="n">SidebarSplitter</span><span class="o">::</span><span class="n">slotSplitterMoved</span><span class="p">(</span><span class="kt">int</span> <span class="n">pos</span><span class="p">,</span> <span class="kt">int</span> <span class="n">index</span><span class="p">)</span>
<a name="line-1415"></a><span class="p">{</span>
<a name="line-1416"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">pos</span><span class="p">);</span>
<a name="line-1417"></a>
<a name="line-1418"></a> <span class="c1">// When the user moves the splitter so that size is 0 (collapsed),</span>
<a name="line-1419"></a> <span class="c1">// it may be difficult to restore the sidebar as clicking the buttons</span>
<a name="line-1420"></a> <span class="c1">// has no effect (only hides/shows the splitter handle)</span>
<a name="line-1421"></a> <span class="c1">// So we want to transform this size-0-sidebar</span>
<a name="line-1422"></a> <span class="c1">// to a sidebar that is shrunk (d-&gt;stack hidden)</span>
<a name="line-1423"></a> <span class="c1">// and can be restored by clicking a tab bar button</span>
<a name="line-1424"></a>
<a name="line-1425"></a> <span class="c1">// We need to look at the widget between index-1 and index</span>
<a name="line-1426"></a> <span class="c1">// and the one between index and index+1</span>
<a name="line-1427"></a>
<a name="line-1428"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">sizeList</span> <span class="o">=</span> <span class="n">sizes</span><span class="p">();</span>
<a name="line-1429"></a>
<a name="line-1430"></a> <span class="c1">// Is there a sidebar with size 0 before index ?</span>
<a name="line-1431"></a>
<a name="line-1432"></a> <span class="k">if</span> <span class="p">(</span><span class="n">index</span> <span class="o">&gt;</span> <span class="mi">0</span> <span class="o">&amp;&amp;</span> <span class="n">sizeList</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">index</span><span class="o">-</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-1433"></a> <span class="p">{</span>
<a name="line-1434"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">w</span> <span class="o">=</span> <span class="n">widget</span><span class="p">(</span><span class="n">index</span><span class="o">-</span><span class="mi">1</span><span class="p">);</span>
<a name="line-1435"></a>
<a name="line-1436"></a> <span class="n">foreach</span> <span class="p">(</span><span class="n">Sidebar</span><span class="o">*</span> <span class="k">const</span> <span class="n">sidebar</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sidebars</span><span class="p">)</span>
<a name="line-1437"></a> <span class="p">{</span>
<a name="line-1438"></a> <span class="k">if</span> <span class="p">(</span><span class="n">w</span> <span class="o">==</span> <span class="n">sidebar</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</span><span class="p">)</span>
<a name="line-1439"></a> <span class="p">{</span>
<a name="line-1440"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">sidebar</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">minimized</span><span class="p">)</span>
<a name="line-1441"></a> <span class="p">{</span>
<a name="line-1442"></a> <span class="n">sidebar</span><span class="o">-&gt;</span><span class="n">setTab</span><span class="p">(</span><span class="n">sidebar</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">activeTab</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-1443"></a> <span class="n">sidebar</span><span class="o">-&gt;</span><span class="n">shrink</span><span class="p">();</span>
<a name="line-1444"></a> <span class="p">}</span>
<a name="line-1445"></a>
<a name="line-1446"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-1447"></a> <span class="p">}</span>
<a name="line-1448"></a> <span class="p">}</span>
<a name="line-1449"></a> <span class="p">}</span>
<a name="line-1450"></a>
<a name="line-1451"></a> <span class="c1">// Is there a sidebar with size 0 after index ?</span>
<a name="line-1452"></a>
<a name="line-1453"></a> <span class="k">if</span> <span class="p">(</span><span class="n">sizeList</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">index</span><span class="p">)</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-1454"></a> <span class="p">{</span>
<a name="line-1455"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">w</span> <span class="o">=</span> <span class="n">widget</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
<a name="line-1456"></a>
<a name="line-1457"></a> <span class="n">foreach</span> <span class="p">(</span><span class="n">Sidebar</span><span class="o">*</span> <span class="k">const</span> <span class="n">sidebar</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sidebars</span><span class="p">)</span>
<a name="line-1458"></a> <span class="p">{</span>
<a name="line-1459"></a> <span class="k">if</span> <span class="p">(</span><span class="n">w</span> <span class="o">==</span> <span class="n">sidebar</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">stack</span><span class="p">)</span>
<a name="line-1460"></a> <span class="p">{</span>
<a name="line-1461"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">sidebar</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">minimized</span><span class="p">)</span>
<a name="line-1462"></a> <span class="p">{</span>
<a name="line-1463"></a> <span class="n">sidebar</span><span class="o">-&gt;</span><span class="n">setTab</span><span class="p">(</span><span class="n">sidebar</span><span class="o">-&gt;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">activeTab</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-1464"></a> <span class="n">sidebar</span><span class="o">-&gt;</span><span class="n">shrink</span><span class="p">();</span>
<a name="line-1465"></a> <span class="p">}</span>
<a name="line-1466"></a>
<a name="line-1467"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-1468"></a> <span class="p">}</span>
<a name="line-1469"></a> <span class="p">}</span>
<a name="line-1470"></a> <span class="p">}</span>
<a name="line-1471"></a><span class="p">}</span>
<a name="line-1472"></a>
<a name="line-1473"></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/45.html b/static/reports/cppcheck/master/45.html
index 4d739a904..8285f58e5 100644
--- a/static/reports/cppcheck/master/45.html
+++ b/static/reports/cppcheck/master/45.html
@@ -1,1019 +1,1019 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/showfoto/thumbbar/itemviewshowfotodelegate.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/showfoto/thumbbar/itemviewshowfotodelegate.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> itemviewshowfotodelegate.cpp</p>
<a href='45.html#line-50'> useInitializationList 50</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</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 : 2013-08-01</span>
<a name="line-7"></a><span class="cm"> * Description : Qt model view for Showfoto item - the delegate</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2013 by Mohamed_Anwer &lt;m_dot_anwer at gmx 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;itemviewshowfotodelegate.h&quot;</span><span class="cp"></span>
<a name="line-25"></a><span class="cp">#include</span> <span class="cpf">&quot;itemviewshowfotodelegate_p.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;QPainter&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>
<a name="line-32"></a><span class="c1">// KDE includes</span>
<a name="line-33"></a>
<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&gt;</span><span class="cp"></span>
<a name="line-35"></a>
<a name="line-36"></a><span class="c1">// Local includes</span>
<a name="line-37"></a>
<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&quot;thememanager.h&quot;</span><span class="cp"></span>
<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&quot;itempropertiestab.h&quot;</span><span class="cp"></span>
<a name="line-40"></a><span class="cp">#include</span> <span class="cpf">&quot;showfotoiteminfo.h&quot;</span><span class="cp"></span>
<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&quot;colorlabelwidget.h&quot;</span><span class="cp"></span>
<a name="line-42"></a>
<a name="line-43"></a><span class="k">namespace</span> <span class="n">ShowFoto</span>
<a name="line-44"></a><span class="p">{</span>
<a name="line-45"></a>
<a name="line-46"></a><span class="n">ItemViewShowfotoDelegatePrivate</span><span class="o">::</span><span class="n">ItemViewShowfotoDelegatePrivate</span><span class="p">()</span>
<a name="line-47"></a><span class="p">{</span>
<a name="line-48"></a> <span class="n">q</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-49"></a> <span class="n">spacing</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-50"></a><span class="hll"> <span class="n">thumbSize</span> <span class="o">=</span> <span class="n">ThumbnailSize</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'thumbSize' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;thumbSize&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-51"></a>
<a name="line-52"></a> <span class="c1">// painting constants</span>
<a name="line-53"></a> <span class="n">radius</span> <span class="o">=</span> <span class="mi">3</span><span class="p">;</span>
<a name="line-54"></a> <span class="n">margin</span> <span class="o">=</span> <span class="mi">5</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="kt">void</span> <span class="n">ItemViewShowfotoDelegatePrivate</span><span class="o">::</span><span class="n">init</span><span class="p">(</span><span class="n">ItemViewShowfotoDelegate</span><span class="o">*</span> <span class="k">const</span> <span class="n">_q</span><span class="p">)</span>
<a name="line-58"></a><span class="p">{</span>
<a name="line-59"></a> <span class="n">q</span> <span class="o">=</span> <span class="n">_q</span><span class="p">;</span>
<a name="line-60"></a>
<a name="line-61"></a> <span class="n">q</span><span class="o">-&gt;</span><span class="n">connect</span><span class="p">(</span><span class="n">ThemeManager</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">signalThemeChanged</span><span class="p">()),</span>
<a name="line-62"></a> <span class="n">q</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotThemeChanged</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="kt">void</span> <span class="n">ItemViewShowfotoDelegatePrivate</span><span class="o">::</span><span class="n">clearRects</span><span class="p">()</span>
<a name="line-66"></a><span class="p">{</span>
<a name="line-67"></a> <span class="n">gridSize</span> <span class="o">=</span> <span class="n">QSize</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-68"></a> <span class="n">rect</span> <span class="o">=</span> <span class="n">QRect</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">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">);</span>
<a name="line-69"></a><span class="p">}</span>
<a name="line-70"></a>
<a name="line-71"></a><span class="c1">// ---- ItemViewShowfotoDelegate -----------------------------------------------</span>
<a name="line-72"></a>
<a name="line-73"></a><span class="n">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">ItemViewShowfotoDelegate</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-74"></a> <span class="o">:</span> <span class="n">DItemDelegate</span><span class="p">(</span><span class="n">parent</span><span class="p">),</span>
<a name="line-75"></a> <span class="n">d_ptr</span><span class="p">(</span><span class="k">new</span> <span class="n">ItemViewShowfotoDelegatePrivate</span><span class="p">)</span>
<a name="line-76"></a><span class="p">{</span>
<a name="line-77"></a> <span class="n">d_ptr</span><span class="o">-&gt;</span><span class="n">init</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-78"></a><span class="p">}</span>
<a name="line-79"></a>
<a name="line-80"></a><span class="n">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">ItemViewShowfotoDelegate</span><span class="p">(</span><span class="n">ItemViewShowfotoDelegatePrivate</span><span class="o">&amp;</span> <span class="n">dd</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-81"></a> <span class="o">:</span> <span class="n">DItemDelegate</span><span class="p">(</span><span class="n">parent</span><span class="p">),</span> <span class="n">d_ptr</span><span class="p">(</span><span class="o">&amp;</span><span class="n">dd</span><span class="p">)</span>
<a name="line-82"></a><span class="p">{</span>
<a name="line-83"></a> <span class="n">d_ptr</span><span class="o">-&gt;</span><span class="n">init</span><span class="p">(</span><span class="k">this</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="n">ItemViewShowfotoDelegate</span><span class="o">::~</span><span class="n">ItemViewShowfotoDelegate</span><span class="p">()</span>
<a name="line-87"></a><span class="p">{</span>
<a name="line-88"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">ItemViewShowfotoDelegate</span><span class="p">);</span>
<a name="line-89"></a> <span class="n">removeAllOverlays</span><span class="p">();</span>
<a name="line-90"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
<a name="line-91"></a><span class="p">}</span>
<a name="line-92"></a>
<a name="line-93"></a><span class="n">ThumbnailSize</span> <span class="n">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">thumbnailSize</span><span class="p">()</span> <span class="k">const</span>
<a name="line-94"></a><span class="p">{</span>
<a name="line-95"></a> <span class="n">Q_D</span><span class="p">(</span><span class="k">const</span> <span class="n">ItemViewShowfotoDelegate</span><span class="p">);</span>
<a name="line-96"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">thumbSize</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">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">setThumbnailSize</span><span class="p">(</span><span class="k">const</span> <span class="n">ThumbnailSize</span><span class="o">&amp;</span> <span class="n">thumbSize</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">ItemViewShowfotoDelegate</span><span class="p">);</span>
<a name="line-102"></a>
<a name="line-103"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">thumbSize</span> <span class="o">!=</span> <span class="n">thumbSize</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">thumbSize</span> <span class="o">=</span> <span class="n">thumbSize</span><span class="p">;</span>
<a name="line-106"></a> <span class="n">invalidatePaintingCache</span><span class="p">();</span>
<a name="line-107"></a> <span class="p">}</span>
<a name="line-108"></a><span class="p">}</span>
<a name="line-109"></a>
<a name="line-110"></a><span class="kt">void</span> <span class="n">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">setSpacing</span><span class="p">(</span><span class="kt">int</span> <span class="n">spacing</span><span class="p">)</span>
<a name="line-111"></a><span class="p">{</span>
<a name="line-112"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">ItemViewShowfotoDelegate</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">spacing</span> <span class="o">==</span> <span class="n">spacing</span><span class="p">)</span>
<a name="line-115"></a> <span class="p">{</span>
<a name="line-116"></a> <span class="k">return</span><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="n">d</span><span class="o">-&gt;</span><span class="n">spacing</span> <span class="o">=</span> <span class="n">spacing</span><span class="p">;</span>
<a name="line-120"></a> <span class="n">invalidatePaintingCache</span><span class="p">();</span>
<a name="line-121"></a><span class="p">}</span>
<a name="line-122"></a>
<a name="line-123"></a><span class="kt">int</span> <span class="n">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">spacing</span><span class="p">()</span> <span class="k">const</span>
<a name="line-124"></a><span class="p">{</span>
<a name="line-125"></a> <span class="n">Q_D</span><span class="p">(</span><span class="k">const</span> <span class="n">ItemViewShowfotoDelegate</span><span class="p">);</span>
<a name="line-126"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">spacing</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">QRect</span> <span class="n">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">rect</span><span class="p">()</span> <span class="k">const</span>
<a name="line-130"></a><span class="p">{</span>
<a name="line-131"></a> <span class="n">Q_D</span><span class="p">(</span><span class="k">const</span> <span class="n">ItemViewShowfotoDelegate</span><span class="p">);</span>
<a name="line-132"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</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="n">QRect</span> <span class="n">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">pixmapRect</span><span class="p">()</span> <span class="k">const</span>
<a name="line-136"></a><span class="p">{</span>
<a name="line-137"></a> <span class="k">return</span> <span class="n">QRect</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">QRect</span> <span class="n">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">imageInformationRect</span><span class="p">()</span> <span class="k">const</span>
<a name="line-141"></a><span class="p">{</span>
<a name="line-142"></a> <span class="k">return</span> <span class="n">QRect</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">QSize</span> <span class="n">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">sizeHint</span><span class="p">(</span><span class="k">const</span> <span class="n">QStyleOptionViewItem</span><span class="o">&amp;</span> <span class="cm">/*option*/</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>
<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="k">const</span> <span class="n">ItemViewShowfotoDelegate</span><span class="p">);</span>
<a name="line-148"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">size</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">QSize</span> <span class="n">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">gridSize</span><span class="p">()</span> <span class="k">const</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="k">const</span> <span class="n">ItemViewShowfotoDelegate</span><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">gridSize</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">bool</span> <span class="n">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">acceptsToolTip</span><span class="p">(</span><span class="k">const</span> <span class="n">QPoint</span><span class="o">&amp;</span><span class="p">,</span> <span class="k">const</span> <span class="n">QRect</span><span class="o">&amp;</span> <span class="n">visualRect</span><span class="p">,</span> <span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span><span class="p">,</span> <span class="n">QRect</span><span class="o">*</span> <span class="n">retRect</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">if</span> <span class="p">(</span><span class="n">retRect</span><span class="p">)</span>
<a name="line-160"></a> <span class="p">{</span>
<a name="line-161"></a> <span class="o">*</span><span class="n">retRect</span> <span class="o">=</span> <span class="n">visualRect</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="k">return</span> <span class="nb">true</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">bool</span> <span class="n">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">acceptsActivation</span><span class="p">(</span><span class="k">const</span> <span class="n">QPoint</span><span class="o">&amp;</span> <span class="p">,</span> <span class="k">const</span> <span class="n">QRect</span><span class="o">&amp;</span> <span class="n">visualRect</span><span class="p">,</span> <span class="k">const</span> <span class="n">QModelIndex</span><span class="o">&amp;</span><span class="p">,</span> <span class="n">QRect</span><span class="o">*</span> <span class="n">retRect</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">if</span> <span class="p">(</span><span class="n">retRect</span><span class="p">)</span>
<a name="line-170"></a> <span class="p">{</span>
<a name="line-171"></a> <span class="o">*</span><span class="n">retRect</span> <span class="o">=</span> <span class="n">visualRect</span><span class="p">;</span>
<a name="line-172"></a> <span class="p">}</span>
<a name="line-173"></a>
<a name="line-174"></a> <span class="k">return</span> <span class="nb">true</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="n">QAbstractItemDelegate</span><span class="o">*</span> <span class="n">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">asDelegate</span><span class="p">()</span>
<a name="line-178"></a><span class="p">{</span>
<a name="line-179"></a> <span class="k">return</span> <span class="k">this</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">void</span> <span class="n">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">overlayDestroyed</span><span class="p">(</span><span class="n">QObject</span><span class="o">*</span> <span class="n">o</span><span class="p">)</span>
<a name="line-183"></a><span class="p">{</span>
<a name="line-184"></a> <span class="n">ItemDelegateOverlayContainer</span><span class="o">::</span><span class="n">overlayDestroyed</span><span class="p">(</span><span class="n">o</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">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">mouseMoved</span><span class="p">(</span><span class="n">QMouseEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">,</span> <span class="k">const</span> <span class="n">QRect</span><span class="o">&amp;</span> <span class="n">visualRect</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-188"></a><span class="p">{</span>
<a name="line-189"></a> <span class="c1">// 3-way indirection AbstractShowfotoItemDelegate -&gt; ItemViewShowfotoDelegate -&gt; ItemDelegateOverlayContainer</span>
<a name="line-190"></a> <span class="n">ItemDelegateOverlayContainer</span><span class="o">::</span><span class="n">mouseMoved</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">visualRect</span><span class="p">,</span> <span class="n">index</span><span class="p">);</span>
<a name="line-191"></a><span class="p">}</span>
<a name="line-192"></a>
<a name="line-193"></a><span class="kt">void</span> <span class="n">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">setDefaultViewOptions</span><span class="p">(</span><span class="k">const</span> <span class="n">QStyleOptionViewItem</span><span class="o">&amp;</span> <span class="n">option</span><span class="p">)</span>
<a name="line-194"></a><span class="p">{</span>
<a name="line-195"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">ItemViewShowfotoDelegate</span><span class="p">);</span>
<a name="line-196"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">font</span> <span class="o">=</span> <span class="n">option</span><span class="p">.</span><span class="n">font</span><span class="p">;</span>
<a name="line-197"></a> <span class="n">invalidatePaintingCache</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">void</span> <span class="n">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">slotThemeChanged</span><span class="p">()</span>
<a name="line-201"></a><span class="p">{</span>
<a name="line-202"></a> <span class="n">invalidatePaintingCache</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">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">slotSetupChanged</span><span class="p">()</span>
<a name="line-206"></a><span class="p">{</span>
<a name="line-207"></a> <span class="n">invalidatePaintingCache</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">void</span> <span class="n">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">invalidatePaintingCache</span><span class="p">()</span>
<a name="line-211"></a><span class="p">{</span>
<a name="line-212"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">ItemViewShowfotoDelegate</span><span class="p">);</span>
<a name="line-213"></a> <span class="n">QSize</span> <span class="n">oldGridSize</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">gridSize</span><span class="p">;</span>
<a name="line-214"></a> <span class="n">updateSizeRectsAndPixmaps</span><span class="p">();</span>
<a name="line-215"></a>
<a name="line-216"></a> <span class="k">if</span> <span class="p">(</span><span class="n">oldGridSize</span> <span class="o">!=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">gridSize</span><span class="p">)</span>
<a name="line-217"></a> <span class="p">{</span>
<a name="line-218"></a> <span class="n">emit</span> <span class="n">gridSizeChanged</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">gridSize</span><span class="p">);</span>
<a name="line-219"></a> <span class="c1">// emit sizeHintChanged(QModelIndex());</span>
<a name="line-220"></a> <span class="p">}</span>
<a name="line-221"></a>
<a name="line-222"></a> <span class="n">emit</span> <span class="n">visualChange</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="n">QRect</span> <span class="n">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">drawThumbnail</span><span class="p">(</span><span class="n">QPainter</span><span class="o">*</span> <span class="n">p</span><span class="p">,</span> <span class="k">const</span> <span class="n">QRect</span><span class="o">&amp;</span> <span class="n">thumbRect</span><span class="p">,</span> <span class="k">const</span> <span class="n">QPixmap</span><span class="o">&amp;</span> <span class="n">background</span><span class="p">,</span>
<a name="line-226"></a> <span class="k">const</span> <span class="n">QPixmap</span><span class="o">&amp;</span> <span class="n">thumbnail</span><span class="p">)</span> <span class="k">const</span>
<a name="line-227"></a><span class="p">{</span>
<a name="line-228"></a> <span class="n">p</span><span class="o">-&gt;</span><span class="n">drawPixmap</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">background</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">thumbnail</span><span class="p">.</span><span class="n">isNull</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">QRect</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">QRect</span> <span class="n">r</span> <span class="o">=</span> <span class="n">thumbRect</span><span class="p">;</span>
<a name="line-236"></a> <span class="kt">double</span> <span class="n">ratio</span> <span class="o">=</span> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">devicePixelRatio</span><span class="p">();</span>
<a name="line-237"></a> <span class="kt">int</span> <span class="n">thumbW</span> <span class="o">=</span> <span class="n">qRound</span><span class="p">((</span><span class="kt">double</span><span class="p">)</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="n">ratio</span><span class="p">);</span>
<a name="line-238"></a> <span class="kt">int</span> <span class="n">thumbH</span> <span class="o">=</span> <span class="n">qRound</span><span class="p">((</span><span class="kt">double</span><span class="p">)</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="n">ratio</span><span class="p">);</span>
<a name="line-239"></a>
<a name="line-240"></a> <span class="n">QRect</span> <span class="nf">actualPixmapRect</span><span class="p">(</span><span class="n">r</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">r</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">-</span> <span class="n">thumbW</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">,</span>
<a name="line-241"></a> <span class="n">r</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">r</span><span class="p">.</span><span class="n">height</span><span class="p">()</span> <span class="o">-</span> <span class="n">thumbH</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">,</span>
<a name="line-242"></a> <span class="n">thumbW</span><span class="p">,</span> <span class="n">thumbH</span><span class="p">);</span>
<a name="line-243"></a>
<a name="line-244"></a> <span class="n">QPixmap</span> <span class="n">borderPix</span> <span class="o">=</span> <span class="n">thumbnailBorderPixmap</span><span class="p">(</span><span class="n">actualPixmapRect</span><span class="p">.</span><span class="n">size</span><span class="p">());</span>
<a name="line-245"></a>
<a name="line-246"></a> <span class="n">p</span><span class="o">-&gt;</span><span class="n">drawPixmap</span><span class="p">(</span><span class="n">actualPixmapRect</span><span class="p">.</span><span class="n">x</span><span class="p">()</span> <span class="o">-</span> <span class="mi">3</span><span class="p">,</span>
<a name="line-247"></a> <span class="n">actualPixmapRect</span><span class="p">.</span><span class="n">y</span><span class="p">()</span> <span class="o">-</span> <span class="mi">3</span><span class="p">,</span> <span class="n">borderPix</span><span class="p">);</span>
<a name="line-248"></a>
<a name="line-249"></a> <span class="n">p</span><span class="o">-&gt;</span><span class="n">drawPixmap</span><span class="p">(</span><span class="n">r</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">r</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">-</span> <span class="n">thumbW</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">,</span>
<a name="line-250"></a> <span class="n">r</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">r</span><span class="p">.</span><span class="n">height</span><span class="p">()</span> <span class="o">-</span> <span class="n">thumbH</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span><span class="p">,</span>
<a name="line-251"></a> <span class="n">thumbW</span><span class="p">,</span> <span class="n">thumbH</span><span class="p">,</span> <span class="n">thumbnail</span><span class="p">);</span>
<a name="line-252"></a>
<a name="line-253"></a> <span class="k">return</span> <span class="n">actualPixmapRect</span><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">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">drawName</span><span class="p">(</span><span class="n">QPainter</span><span class="o">*</span> <span class="n">p</span><span class="p">,</span><span class="k">const</span> <span class="n">QRect</span><span class="o">&amp;</span> <span class="n">nameRect</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>
<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="k">const</span> <span class="n">ItemViewShowfotoDelegate</span><span class="p">);</span>
<a name="line-259"></a> <span class="n">p</span><span class="o">-&gt;</span><span class="n">setFont</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fontReg</span><span class="p">);</span>
<a name="line-260"></a> <span class="n">p</span><span class="o">-&gt;</span><span class="n">drawText</span><span class="p">(</span><span class="n">nameRect</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AlignCenter</span><span class="p">,</span> <span class="n">name</span><span class="p">);</span><span class="c1">//squeezedTextCached(p, nameRect.width(), name));</span>
<a name="line-261"></a><span class="p">}</span>
<a name="line-262"></a>
<a name="line-263"></a><span class="kt">void</span> <span class="n">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">drawCreationDate</span><span class="p">(</span><span class="n">QPainter</span><span class="o">*</span> <span class="n">p</span><span class="p">,</span> <span class="k">const</span> <span class="n">QRect</span><span class="o">&amp;</span> <span class="n">dateRect</span><span class="p">,</span> <span class="k">const</span> <span class="n">QDateTime</span><span class="o">&amp;</span> <span class="n">date</span><span class="p">)</span> <span class="k">const</span>
<a name="line-264"></a><span class="p">{</span>
<a name="line-265"></a> <span class="n">Q_D</span><span class="p">(</span><span class="k">const</span> <span class="n">ItemViewShowfotoDelegate</span><span class="p">);</span>
<a name="line-266"></a> <span class="n">p</span><span class="o">-&gt;</span><span class="n">setFont</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fontXtra</span><span class="p">);</span>
<a name="line-267"></a> <span class="n">QString</span> <span class="n">str</span> <span class="o">=</span> <span class="n">dateToString</span><span class="p">(</span><span class="n">date</span><span class="p">);</span>
<a name="line-268"></a> <span class="n">str</span> <span class="o">=</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;date of image creation&quot;</span><span class="p">,</span> <span class="s">&quot;created: %1&quot;</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span>
<a name="line-269"></a> <span class="n">p</span><span class="o">-&gt;</span><span class="n">drawText</span><span class="p">(</span><span class="n">dateRect</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AlignCenter</span><span class="p">,</span> <span class="n">str</span><span class="p">);</span><span class="c1">//squeezedTextCached(p, dateRect.width(), str));</span>
<a name="line-270"></a><span class="p">}</span>
<a name="line-271"></a>
<a name="line-272"></a><span class="kt">void</span> <span class="n">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">drawImageFormat</span><span class="p">(</span><span class="n">QPainter</span><span class="o">*</span> <span class="n">p</span><span class="p">,</span> <span class="k">const</span> <span class="n">QRect</span><span class="o">&amp;</span> <span class="n">r</span><span class="p">,</span> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">mime</span><span class="p">)</span> <span class="k">const</span>
<a name="line-273"></a><span class="p">{</span>
<a name="line-274"></a> <span class="n">Q_D</span><span class="p">(</span><span class="k">const</span> <span class="n">ItemViewShowfotoDelegate</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="o">!</span><span class="n">mime</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">r</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-277"></a> <span class="p">{</span>
<a name="line-278"></a> <span class="n">QString</span> <span class="n">type</span> <span class="o">=</span> <span class="n">mime</span><span class="p">;</span>
<a name="line-279"></a>
<a name="line-280"></a> <span class="n">p</span><span class="o">-&gt;</span><span class="n">save</span><span class="p">();</span>
<a name="line-281"></a>
<a name="line-282"></a> <span class="n">QFont</span> <span class="nf">fnt</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fontReg</span><span class="p">);</span>
<a name="line-283"></a> <span class="n">fnt</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">Black</span><span class="p">);</span>
<a name="line-284"></a> <span class="n">fnt</span><span class="p">.</span><span class="n">setItalic</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
<a name="line-285"></a> <span class="n">p</span><span class="o">-&gt;</span><span class="n">setFont</span><span class="p">(</span><span class="n">fnt</span><span class="p">);</span>
<a name="line-286"></a> <span class="n">p</span><span class="o">-&gt;</span><span class="n">setPen</span><span class="p">(</span><span class="n">QPen</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">gray</span><span class="p">));</span>
<a name="line-287"></a> <span class="n">p</span><span class="o">-&gt;</span><span class="n">setOpacity</span><span class="p">(</span><span class="mf">0.50</span><span class="p">);</span>
<a name="line-288"></a>
<a name="line-289"></a> <span class="n">QRect</span> <span class="n">bRect</span> <span class="o">=</span> <span class="n">p</span><span class="o">-&gt;</span><span class="n">boundingRect</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">AlignBottom</span> <span class="o">|</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AlignHCenter</span><span class="p">,</span> <span class="n">type</span><span class="p">.</span><span class="n">toUpper</span><span class="p">());</span>
<a name="line-290"></a> <span class="n">bRect</span><span class="p">.</span><span class="n">adjust</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> <span class="o">-</span><span class="mi">1</span><span class="p">);</span>
<a name="line-291"></a> <span class="n">bRect</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="mi">1</span><span class="p">);</span>
<a name="line-292"></a>
<a name="line-293"></a> <span class="n">p</span><span class="o">-&gt;</span><span class="n">fillRect</span><span class="p">(</span><span class="n">bRect</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">SolidPattern</span><span class="p">);</span>
<a name="line-294"></a> <span class="n">p</span><span class="o">-&gt;</span><span class="n">setPen</span><span class="p">(</span><span class="n">QPen</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">white</span><span class="p">));</span>
<a name="line-295"></a> <span class="n">p</span><span class="o">-&gt;</span><span class="n">setOpacity</span><span class="p">(</span><span class="mf">1.0</span><span class="p">);</span>
<a name="line-296"></a> <span class="n">p</span><span class="o">-&gt;</span><span class="n">drawText</span><span class="p">(</span><span class="n">bRect</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AlignBottom</span> <span class="o">|</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AlignHCenter</span><span class="p">,</span> <span class="n">type</span><span class="p">.</span><span class="n">toUpper</span><span class="p">());</span>
<a name="line-297"></a>
<a name="line-298"></a> <span class="n">p</span><span class="o">-&gt;</span><span class="n">restore</span><span class="p">();</span>
<a name="line-299"></a> <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="kt">void</span> <span class="n">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">drawGeolocationIndicator</span><span class="p">(</span><span class="n">QPainter</span><span class="o">*</span> <span class="n">p</span><span class="p">,</span> <span class="k">const</span> <span class="n">QRect</span><span class="o">&amp;</span> <span class="n">r</span><span class="p">)</span> <span class="k">const</span>
<a name="line-303"></a><span class="p">{</span>
<a name="line-304"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">r</span><span class="p">.</span><span class="n">isNull</span><span class="p">())</span>
<a name="line-305"></a> <span class="p">{</span>
<a name="line-306"></a> <span class="n">QIcon</span> <span class="n">icon</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><span class="n">pixmap</span><span class="p">(</span><span class="n">r</span><span class="p">.</span><span class="n">size</span><span class="p">()));</span>
<a name="line-307"></a> <span class="n">qreal</span> <span class="n">op</span> <span class="o">=</span> <span class="n">p</span><span class="o">-&gt;</span><span class="n">opacity</span><span class="p">();</span>
<a name="line-308"></a> <span class="n">p</span><span class="o">-&gt;</span><span class="n">setOpacity</span><span class="p">(</span><span class="mf">0.5</span><span class="p">);</span>
<a name="line-309"></a> <span class="n">icon</span><span class="p">.</span><span class="n">paint</span><span class="p">(</span><span class="n">p</span><span class="p">,</span> <span class="n">r</span><span class="p">);</span>
<a name="line-310"></a> <span class="n">p</span><span class="o">-&gt;</span><span class="n">setOpacity</span><span class="p">(</span><span class="n">op</span><span class="p">);</span>
<a name="line-311"></a> <span class="p">}</span>
<a name="line-312"></a><span class="p">}</span>
<a name="line-313"></a>
<a name="line-314"></a><span class="kt">void</span> <span class="n">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">drawImageSize</span><span class="p">(</span><span class="n">QPainter</span><span class="o">*</span> <span class="n">p</span><span class="p">,</span> <span class="k">const</span> <span class="n">QRect</span><span class="o">&amp;</span> <span class="n">dimsRect</span><span class="p">,</span> <span class="k">const</span> <span class="n">QSize</span><span class="o">&amp;</span> <span class="n">dims</span><span class="p">)</span> <span class="k">const</span>
<a name="line-315"></a><span class="p">{</span>
<a name="line-316"></a> <span class="n">Q_D</span><span class="p">(</span><span class="k">const</span> <span class="n">ItemViewShowfotoDelegate</span><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="n">dims</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-319"></a> <span class="p">{</span>
<a name="line-320"></a> <span class="n">p</span><span class="o">-&gt;</span><span class="n">setFont</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fontXtra</span><span class="p">);</span>
<a name="line-321"></a> <span class="n">QString</span> <span class="n">mpixels</span><span class="p">,</span> <span class="n">resolution</span><span class="p">;</span>
<a name="line-322"></a> <span class="n">mpixels</span><span class="p">.</span><span class="n">setNum</span><span class="p">(</span><span class="n">dims</span><span class="p">.</span><span class="n">width</span><span class="p">()</span><span class="o">*</span><span class="n">dims</span><span class="p">.</span><span class="n">height</span><span class="p">()</span><span class="o">/</span><span class="mf">1000000.0</span><span class="p">,</span> <span class="sc">&#39;f&#39;</span><span class="p">,</span> <span class="mi">2</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">dims</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-325"></a> <span class="p">{</span>
<a name="line-326"></a> <span class="n">resolution</span> <span class="o">=</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;%1 width, %2 height, %3 mpixels&quot;</span><span class="p">,</span> <span class="s">&quot;%1x%2 (%3Mpx)&quot;</span><span class="p">,</span>
<a name="line-327"></a> <span class="n">dims</span><span class="p">.</span><span class="n">width</span><span class="p">(),</span> <span class="n">dims</span><span class="p">.</span><span class="n">height</span><span class="p">(),</span> <span class="n">mpixels</span><span class="p">);</span>
<a name="line-328"></a> <span class="p">}</span>
<a name="line-329"></a> <span class="k">else</span>
<a name="line-330"></a> <span class="p">{</span>
<a name="line-331"></a> <span class="n">resolution</span> <span class="o">=</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;unknown image resolution&quot;</span><span class="p">,</span> <span class="s">&quot;Unknown&quot;</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="n">p</span><span class="o">-&gt;</span><span class="n">drawText</span><span class="p">(</span><span class="n">dimsRect</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AlignCenter</span><span class="p">,</span> <span class="n">resolution</span><span class="p">);</span>
<a name="line-335"></a> <span class="p">}</span>
<a name="line-336"></a><span class="p">}</span>
<a name="line-337"></a>
<a name="line-338"></a><span class="kt">void</span> <span class="n">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">drawFileSize</span><span class="p">(</span><span class="n">QPainter</span><span class="o">*</span> <span class="n">p</span><span class="p">,</span> <span class="k">const</span> <span class="n">QRect</span><span class="o">&amp;</span> <span class="n">r</span><span class="p">,</span> <span class="n">qlonglong</span> <span class="n">bytes</span><span class="p">)</span> <span class="k">const</span>
<a name="line-339"></a><span class="p">{</span>
<a name="line-340"></a> <span class="n">Q_D</span><span class="p">(</span><span class="k">const</span> <span class="n">ItemViewShowfotoDelegate</span><span class="p">);</span>
<a name="line-341"></a> <span class="n">p</span><span class="o">-&gt;</span><span class="n">setFont</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fontXtra</span><span class="p">);</span>
<a name="line-342"></a> <span class="n">p</span><span class="o">-&gt;</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">AlignCenter</span><span class="p">,</span> <span class="n">ItemPropertiesTab</span><span class="o">::</span><span class="n">humanReadableBytesCount</span><span class="p">(</span><span class="n">bytes</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">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">drawFocusRect</span><span class="p">(</span><span class="n">QPainter</span><span class="o">*</span> <span class="n">p</span><span class="p">,</span> <span class="k">const</span> <span class="n">QStyleOptionViewItem</span><span class="o">&amp;</span> <span class="n">option</span><span class="p">,</span>
<a name="line-346"></a> <span class="kt">bool</span> <span class="n">isSelected</span><span class="p">)</span> <span class="k">const</span>
<a name="line-347"></a><span class="p">{</span>
<a name="line-348"></a> <span class="n">Q_D</span><span class="p">(</span><span class="k">const</span> <span class="n">ItemViewShowfotoDelegate</span><span class="p">);</span>
<a name="line-349"></a>
<a name="line-350"></a> <span class="k">if</span> <span class="p">(</span><span class="n">option</span><span class="p">.</span><span class="n">state</span> <span class="o">&amp;</span> <span class="n">QStyle</span><span class="o">::</span><span class="n">State_HasFocus</span><span class="p">)</span> <span class="c1">//?? is current item</span>
<a name="line-351"></a> <span class="p">{</span>
<a name="line-352"></a> <span class="n">p</span><span class="o">-&gt;</span><span class="n">setPen</span><span class="p">(</span><span class="n">QPen</span><span class="p">(</span><span class="n">isSelected</span> <span class="o">?</span> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">palette</span><span class="p">().</span><span class="n">color</span><span class="p">(</span><span class="n">QPalette</span><span class="o">::</span><span class="n">HighlightedText</span><span class="p">)</span>
<a name="line-353"></a> <span class="o">:</span> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">palette</span><span class="p">().</span><span class="n">color</span><span class="p">(</span><span class="n">QPalette</span><span class="o">::</span><span class="n">Text</span><span class="p">),</span>
<a name="line-354"></a> <span class="mi">1</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DotLine</span><span class="p">));</span>
<a name="line-355"></a> <span class="n">p</span><span class="o">-&gt;</span><span class="n">drawRect</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">d</span><span class="o">-&gt;</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="mi">3</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</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="mi">3</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="kt">void</span> <span class="n">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">drawMouseOverRect</span><span class="p">(</span><span class="n">QPainter</span><span class="o">*</span> <span class="n">p</span><span class="p">,</span> <span class="k">const</span> <span class="n">QStyleOptionViewItem</span><span class="o">&amp;</span> <span class="n">option</span><span class="p">)</span> <span class="k">const</span>
<a name="line-360"></a><span class="p">{</span>
<a name="line-361"></a> <span class="n">Q_D</span><span class="p">(</span><span class="k">const</span> <span class="n">ItemViewShowfotoDelegate</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">option</span><span class="p">.</span><span class="n">state</span> <span class="o">&amp;</span> <span class="n">QStyle</span><span class="o">::</span><span class="n">State_MouseOver</span><span class="p">)</span>
<a name="line-364"></a> <span class="p">{</span>
<a name="line-365"></a> <span class="n">p</span><span class="o">-&gt;</span><span class="n">setPen</span><span class="p">(</span><span class="n">QPen</span><span class="p">(</span><span class="n">option</span><span class="p">.</span><span class="n">palette</span><span class="p">.</span><span class="n">color</span><span class="p">(</span><span class="n">QPalette</span><span class="o">::</span><span class="n">Highlight</span><span class="p">),</span> <span class="mi">3</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">SolidLine</span><span class="p">));</span>
<a name="line-366"></a> <span class="n">p</span><span class="o">-&gt;</span><span class="n">drawRect</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">d</span><span class="o">-&gt;</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="mi">3</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</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="mi">3</span><span class="p">);</span>
<a name="line-367"></a> <span class="p">}</span>
<a name="line-368"></a><span class="p">}</span>
<a name="line-369"></a>
<a name="line-370"></a><span class="kt">void</span> <span class="n">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">prepareFonts</span><span class="p">()</span>
<a name="line-371"></a><span class="p">{</span>
<a name="line-372"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">ItemViewShowfotoDelegate</span><span class="p">);</span>
<a name="line-373"></a>
<a name="line-374"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fontReg</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">font</span><span class="p">;</span>
<a name="line-375"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fontCom</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">font</span><span class="p">;</span>
<a name="line-376"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fontXtra</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">font</span><span class="p">;</span>
<a name="line-377"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fontCom</span><span class="p">.</span><span class="n">setItalic</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="kt">int</span> <span class="n">fnSz</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fontReg</span><span class="p">.</span><span class="n">pointSize</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">fnSz</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
<a name="line-382"></a> <span class="p">{</span>
<a name="line-383"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fontCom</span><span class="p">.</span><span class="n">setPointSize</span><span class="p">(</span><span class="n">fnSz</span><span class="o">-</span><span class="mi">1</span><span class="p">);</span>
<a name="line-384"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fontXtra</span><span class="p">.</span><span class="n">setPointSize</span><span class="p">(</span><span class="n">fnSz</span><span class="o">-</span><span class="mi">2</span><span class="p">);</span>
<a name="line-385"></a> <span class="p">}</span>
<a name="line-386"></a> <span class="k">else</span>
<a name="line-387"></a> <span class="p">{</span>
<a name="line-388"></a> <span class="n">fnSz</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fontReg</span><span class="p">.</span><span class="n">pixelSize</span><span class="p">();</span>
<a name="line-389"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fontCom</span><span class="p">.</span><span class="n">setPixelSize</span><span class="p">(</span><span class="n">fnSz</span><span class="o">-</span><span class="mi">1</span><span class="p">);</span>
<a name="line-390"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fontXtra</span><span class="p">.</span><span class="n">setPixelSize</span><span class="p">(</span><span class="n">fnSz</span><span class="o">-</span><span class="mi">2</span><span class="p">);</span>
<a name="line-391"></a> <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">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">prepareMetrics</span><span class="p">(</span><span class="kt">int</span> <span class="n">maxWidth</span><span class="p">)</span>
<a name="line-395"></a><span class="p">{</span>
<a name="line-396"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">ItemViewShowfotoDelegate</span><span class="p">);</span>
<a name="line-397"></a>
<a name="line-398"></a> <span class="n">QFontMetrics</span> <span class="nf">fm</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fontReg</span><span class="p">);</span>
<a name="line-399"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">oneRowRegRect</span> <span class="o">=</span> <span class="n">fm</span><span class="p">.</span><span class="n">boundingRect</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">maxWidth</span><span class="p">,</span> <span class="mh">0xFFFFFFFF</span><span class="p">,</span>
<a name="line-400"></a> <span class="n">Qt</span><span class="o">::</span><span class="n">AlignTop</span> <span class="o">|</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AlignHCenter</span><span class="p">,</span>
<a name="line-401"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;XXXXXXXXX&quot;</span><span class="p">));</span>
<a name="line-402"></a> <span class="n">fm</span> <span class="o">=</span> <span class="n">QFontMetrics</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fontCom</span><span class="p">);</span>
<a name="line-403"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">oneRowComRect</span> <span class="o">=</span> <span class="n">fm</span><span class="p">.</span><span class="n">boundingRect</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">maxWidth</span><span class="p">,</span> <span class="mh">0xFFFFFFFF</span><span class="p">,</span>
<a name="line-404"></a> <span class="n">Qt</span><span class="o">::</span><span class="n">AlignTop</span> <span class="o">|</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AlignHCenter</span><span class="p">,</span>
<a name="line-405"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;XXXXXXXXX&quot;</span><span class="p">));</span>
<a name="line-406"></a> <span class="n">fm</span> <span class="o">=</span> <span class="n">QFontMetrics</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fontXtra</span><span class="p">);</span>
<a name="line-407"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">oneRowXtraRect</span> <span class="o">=</span> <span class="n">fm</span><span class="p">.</span><span class="n">boundingRect</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">maxWidth</span><span class="p">,</span> <span class="mh">0xFFFFFFFF</span><span class="p">,</span>
<a name="line-408"></a> <span class="n">Qt</span><span class="o">::</span><span class="n">AlignTop</span> <span class="o">|</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AlignHCenter</span><span class="p">,</span>
<a name="line-409"></a> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;XXXXXXXXX&quot;</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">ItemViewShowfotoDelegate</span><span class="o">::</span><span class="n">prepareBackground</span><span class="p">()</span>
<a name="line-413"></a><span class="p">{</span>
<a name="line-414"></a> <span class="n">Q_D</span><span class="p">(</span><span class="n">ItemViewShowfotoDelegate</span><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="o">!</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
<a name="line-417"></a> <span class="p">{</span>
<a name="line-418"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">regPixmap</span> <span class="o">=</span> <span class="n">QPixmap</span><span class="p">();</span>
<a name="line-419"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">selPixmap</span> <span class="o">=</span> <span class="n">QPixmap</span><span class="p">();</span>
<a name="line-420"></a> <span class="p">}</span>
<a name="line-421"></a> <span class="k">else</span>
<a name="line-422"></a> <span class="p">{</span>
<a name="line-423"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">regPixmap</span> <span class="o">=</span> <span class="n">QPixmap</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">width</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">height</span><span class="p">());</span>
<a name="line-424"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">regPixmap</span><span class="p">.</span><span class="n">fill</span><span class="p">(</span><span class="n">qApp</span><span class="o">-&gt;</span><span class="n">palette</span><span class="p">().</span><span class="n">color</span><span class="p">(</span><span class="n">QPalette</span><span class="o">::</span><span class="n">Base</span><span class="p">));</span>
<a name="line-425"></a> <span class="n">QPainter</span> <span class="nf">p1</span><span class="p">(</span><span class="o">&amp;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">regPixmap</span><span class="p">);</span>
<a name="line-426"></a> <span class="n">p1</span><span class="p">.</span><span class="n">setPen</span><span class="p">(</span><span class="n">qApp</span><span class="o">-&gt;</span><span class="n">palette</span><span class="p">().</span><span class="n">color</span><span class="p">(</span><span class="n">QPalette</span><span class="o">::</span><span class="n">Midlight</span><span class="p">));</span>
<a name="line-427"></a> <span class="n">p1</span><span class="p">.</span><span class="n">drawRect</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">d</span><span class="o">-&gt;</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="mi">1</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</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="mi">1</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">selPixmap</span> <span class="o">=</span> <span class="n">QPixmap</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">width</span><span class="p">(),</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">rect</span><span class="p">.</span><span class="n">height</span><span class="p">());</span>
<a name="line-430"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">selPixmap</span><span class="p">.</span><span class="n">fill</span><span class="p">(</span><span class="n">qApp</span><span class="o">-&gt;</span><span class="n">palette</span><span class="p">().</span><span class="n">color</span><span class="p">(</span><span class="n">QPalette</span><span class="o">::</span><span class="n">Highlight</span><span class="p">));</span>
<a name="line-431"></a> <span class="n">QPainter</span> <span class="nf">p2</span><span class="p">(</span><span class="o">&amp;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">selPixmap</span><span class="p">);</span>
<a name="line-432"></a> <span class="n">p2</span><span class="p">.</span><span class="n">setPen</span><span class="p">(</span><span class="n">qApp</span><span class="o">-&gt;</span><span class="n">palette</span><span class="p">().</span><span class="n">color</span><span class="p">(</span><span class="n">QPalette</span><span class="o">::</span><span class="n">Midlight</span><span class="p">));</span>
<a name="line-433"></a> <span class="n">p2</span><span class="p">.</span><span class="n">drawRect</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">d</span><span class="o">-&gt;</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="mi">1</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</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="mi">1</span><span class="p">);</span>
<a name="line-434"></a> <span class="p">}</span>
<a name="line-435"></a><span class="p">}</span>
<a name="line-436"></a>
<a name="line-437"></a><span class="p">}</span> <span class="c1">// namespace ShowFoto</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/46.html b/static/reports/cppcheck/master/46.html
index 27cfdc5c3..08491eec9 100644
--- a/static/reports/cppcheck/master/46.html
+++ b/static/reports/cppcheck/master/46.html
@@ -1,387 +1,367 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/showfoto/thumbbar/showfotodelegate_p.h </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/showfoto/thumbbar/showfotoiteminfo.cpp </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> showfotodelegate_p.h</p>
-<a href='46.html#line-91'> useInitializationList 91</a>
+ <p id="filename"><a href="index.html">Defects:</a> showfotoiteminfo.cpp</p>
+<a href='46.html#line-35'> useInitializationList 35</a><a href='46.html#line-36'> useInitializationList 36</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>
+111</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 : 2013-08-01</span>
-<a name="line-7"></a><span class="cm"> * Description : Qt model view for Showfoto item - the delegate Private</span>
+<a name="line-6"></a><span class="cm"> * Date : 2013-07-1</span>
+<a name="line-7"></a><span class="cm"> * Description : Showfoto item info container</span>
<a name="line-8"></a><span class="cm"> *</span>
-<a name="line-9"></a><span class="cm"> * Copyright (C) 2013 by Mohamed_Anwer &lt;m_dot_anwer at gmx dot com&gt;</span>
-<a name="line-10"></a><span class="cm"> * Copyright (C) 2013-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)</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 SHOW_FOTO_DELEGATE_P_H</span>
-<a name="line-26"></a><span class="cp">#define SHOW_FOTO_DELEGATE_P_H</span>
+<a name="line-9"></a><span class="cm"> * Copyright (C) 2013 by Mohamed_Anwer &lt;m_dot_anwer at gmx 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;showfotoiteminfo.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-28"></a><span class="cp">#include</span> <span class="cpf">&lt;QDataStream&gt;</span><span class="cp"></span>
<a name="line-29"></a>
-<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QRect&gt;</span><span class="cp"></span>
-<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QCache&gt;</span><span class="cp"></span>
+<a name="line-30"></a><span class="k">namespace</span> <span class="n">ShowFoto</span>
+<a name="line-31"></a><span class="p">{</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;showfotothumbnailbar.h&quot;</span><span class="cp"></span>
-<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&quot;itemviewshowfotodelegate_p.h&quot;</span><span class="cp"></span>
-<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&quot;showfotodelegate.h&quot;</span><span class="cp"></span>
-<a name="line-38"></a>
-<a name="line-39"></a><span class="n">namespace</span> <span class="n">ShowFoto</span>
-<a name="line-40"></a><span class="p">{</span>
-<a name="line-41"></a>
-<a name="line-42"></a><span class="n">class</span> <span class="n">Q_DECL_HIDDEN</span> <span class="n">ShowfotoDelegate</span><span class="o">::</span><span class="nl">ShowfotoDelegatePrivate</span> <span class="p">:</span> <span class="n">public</span> <span class="n">ItemViewShowfotoDelegatePrivate</span>
-<a name="line-43"></a><span class="p">{</span>
-<a name="line-44"></a><span class="nl">public</span><span class="p">:</span>
-<a name="line-45"></a>
-<a name="line-46"></a> <span class="n">ShowfotoDelegatePrivate</span><span class="p">()</span>
-<a name="line-47"></a> <span class="p">{</span>
-<a name="line-48"></a> <span class="n">contentWidth</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-49"></a> <span class="n">drawImageFormat</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-50"></a> <span class="n">drawMouseOverFrame</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-51"></a> <span class="n">drawFocusFrame</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-52"></a> <span class="n">currentModel</span> <span class="o">=</span> <span class="n">nullptr</span><span class="p">;</span>
-<a name="line-53"></a> <span class="n">currentView</span> <span class="o">=</span> <span class="n">nullptr</span><span class="p">;</span>
-<a name="line-54"></a>
-<a name="line-55"></a> <span class="n">actualPixmapRectCache</span><span class="p">.</span><span class="n">setMaxCost</span><span class="p">(</span><span class="mi">250</span><span class="p">);</span>
-<a name="line-56"></a> <span class="p">}</span>
-<a name="line-57"></a>
-<a name="line-58"></a> <span class="kt">int</span> <span class="n">contentWidth</span><span class="p">;</span>
-<a name="line-59"></a>
-<a name="line-60"></a> <span class="n">QRect</span> <span class="n">dateRect</span><span class="p">;</span>
-<a name="line-61"></a> <span class="n">QRect</span> <span class="n">pixmapRect</span><span class="p">;</span>
-<a name="line-62"></a> <span class="n">QRect</span> <span class="n">nameRect</span><span class="p">;</span>
-<a name="line-63"></a> <span class="n">QRect</span> <span class="n">resolutionRect</span><span class="p">;</span>
-<a name="line-64"></a> <span class="n">QRect</span> <span class="n">sizeRect</span><span class="p">;</span>
-<a name="line-65"></a> <span class="n">QRect</span> <span class="n">imageInformationRect</span><span class="p">;</span>
-<a name="line-66"></a> <span class="n">QRect</span> <span class="n">groupRect</span><span class="p">;</span>
-<a name="line-67"></a> <span class="n">QRect</span> <span class="n">coordinatesRect</span><span class="p">;</span>
-<a name="line-68"></a>
-<a name="line-69"></a> <span class="kt">bool</span> <span class="n">drawImageFormat</span><span class="p">;</span>
-<a name="line-70"></a> <span class="kt">bool</span> <span class="n">drawFocusFrame</span><span class="p">;</span>
-<a name="line-71"></a> <span class="kt">bool</span> <span class="n">drawMouseOverFrame</span><span class="p">;</span>
-<a name="line-72"></a>
-<a name="line-73"></a> <span class="n">QCache</span><span class="o">&lt;</span><span class="kt">int</span><span class="p">,</span> <span class="n">QRect</span><span class="o">&gt;</span> <span class="n">actualPixmapRectCache</span><span class="p">;</span>
-<a name="line-74"></a>
-<a name="line-75"></a> <span class="n">ShowfotoThumbnailBar</span><span class="o">*</span> <span class="n">currentView</span><span class="p">;</span>
-<a name="line-76"></a> <span class="n">QAbstractItemModel</span><span class="o">*</span> <span class="n">currentModel</span><span class="p">;</span>
-<a name="line-77"></a>
-<a name="line-78"></a><span class="nl">public</span><span class="p">:</span>
+<a name="line-33"></a><span class="n">ShowfotoItemInfo</span><span class="o">::</span><span class="n">ShowfotoItemInfo</span><span class="p">()</span>
+<a name="line-34"></a><span class="p">{</span>
+<a name="line-35"></a><span class="hll"> <span class="n">size</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'size' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;size&apos; a value by passing the value to the constructor in the initialization list.</div></div>
+</span><a name="line-36"></a><span class="hll"> <span class="n">id</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'id' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;id&apos; a value by passing the value to the constructor in the initialization list.</div></div>
+</span><a name="line-37"></a> <span class="n">width</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-38"></a> <span class="n">height</span> <span class="o">=</span> <span class="mi">0</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">ShowfotoItemInfo</span><span class="o">::~</span><span class="n">ShowfotoItemInfo</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">bool</span> <span class="n">ShowfotoItemInfo</span><span class="o">::</span><span class="n">isNull</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-46"></a><span class="p">{</span>
+<a name="line-47"></a> <span class="k">return</span> <span class="p">(</span><span class="n">size</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+<a name="line-48"></a> <span class="p">(</span><span class="n">id</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
+<a name="line-49"></a> <span class="n">name</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">&amp;&amp;</span>
+<a name="line-50"></a> <span class="n">folder</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">&amp;&amp;</span>
+<a name="line-51"></a> <span class="n">mime</span><span class="p">.</span><span class="n">isNull</span><span class="p">();</span>
+<a name="line-52"></a><span class="p">}</span>
+<a name="line-53"></a>
+<a name="line-54"></a><span class="kt">bool</span> <span class="n">ShowfotoItemInfo</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">ShowfotoItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-55"></a><span class="p">{</span>
+<a name="line-56"></a> <span class="kt">bool</span> <span class="n">b1</span> <span class="o">=</span> <span class="n">size</span> <span class="o">==</span> <span class="n">info</span><span class="p">.</span><span class="n">size</span><span class="p">;</span>
+<a name="line-57"></a> <span class="kt">bool</span> <span class="n">b2</span> <span class="o">=</span> <span class="n">name</span> <span class="o">==</span> <span class="n">info</span><span class="p">.</span><span class="n">name</span><span class="p">;</span>
+<a name="line-58"></a> <span class="kt">bool</span> <span class="n">b3</span> <span class="o">=</span> <span class="n">folder</span> <span class="o">==</span> <span class="n">info</span><span class="p">.</span><span class="n">folder</span><span class="p">;</span>
+<a name="line-59"></a> <span class="kt">bool</span> <span class="n">b4</span> <span class="o">=</span> <span class="n">mime</span> <span class="o">==</span> <span class="n">info</span><span class="p">.</span><span class="n">mime</span><span class="p">;</span>
+<a name="line-60"></a> <span class="kt">bool</span> <span class="n">b5</span> <span class="o">=</span> <span class="n">id</span> <span class="o">==</span> <span class="n">info</span><span class="p">.</span><span class="n">id</span><span class="p">;</span>
+<a name="line-61"></a> <span class="kt">bool</span> <span class="n">b6</span> <span class="o">=</span> <span class="n">photoInfo</span> <span class="o">==</span> <span class="n">info</span><span class="p">.</span><span class="n">photoInfo</span><span class="p">;</span>
+<a name="line-62"></a>
+<a name="line-63"></a> <span class="k">return</span> <span class="p">(</span><span class="n">b1</span> <span class="o">&amp;&amp;</span> <span class="n">b2</span> <span class="o">&amp;&amp;</span> <span class="n">b3</span> <span class="o">&amp;&amp;</span> <span class="n">b4</span> <span class="o">&amp;&amp;</span> <span class="n">b5</span> <span class="o">&amp;&amp;</span> <span class="n">b6</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="kt">bool</span> <span class="n">ShowfotoItemInfo</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">ShowfotoItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-67"></a><span class="p">{</span>
+<a name="line-68"></a> <span class="k">return</span> <span class="o">!</span><span class="k">operator</span><span class="o">==</span><span class="p">(</span><span class="n">info</span><span class="p">);</span>
+<a name="line-69"></a><span class="p">}</span>
+<a name="line-70"></a>
+<a name="line-71"></a><span class="n">QDataStream</span><span class="o">&amp;</span> <span class="k">operator</span><span class="o">&lt;&lt;</span><span class="p">(</span><span class="n">QDataStream</span><span class="o">&amp;</span> <span class="n">ds</span><span class="p">,</span> <span class="k">const</span> <span class="n">ShowfotoItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">)</span>
+<a name="line-72"></a><span class="p">{</span>
+<a name="line-73"></a> <span class="n">ds</span> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">.</span><span class="n">name</span><span class="p">;</span>
+<a name="line-74"></a> <span class="n">ds</span> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">.</span><span class="n">folder</span><span class="p">;</span>
+<a name="line-75"></a> <span class="n">ds</span> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">.</span><span class="n">mime</span><span class="p">;</span>
+<a name="line-76"></a> <span class="n">ds</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-77"></a> <span class="n">ds</span> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">.</span><span class="n">id</span><span class="p">;</span>
+<a name="line-78"></a> <span class="n">ds</span> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">.</span><span class="n">photoInfo</span><span class="p">;</span>
<a name="line-79"></a>
-<a name="line-80"></a> <span class="n">virtual</span> <span class="kt">void</span> <span class="n">clearRects</span><span class="p">();</span>
-<a name="line-81"></a><span class="p">};</span>
+<a name="line-80"></a> <span class="k">return</span> <span class="n">ds</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="c1">// --- ShowfotoThumbnailDelegate ----------------------------------------------------</span>
-<a name="line-84"></a>
-<a name="line-85"></a><span class="n">class</span> <span class="n">Q_DECL_HIDDEN</span> <span class="nl">ShowfotoThumbnailDelegatePrivate</span> <span class="p">:</span> <span class="n">public</span> <span class="n">ShowfotoDelegate</span><span class="o">::</span><span class="n">ShowfotoDelegatePrivate</span>
-<a name="line-86"></a><span class="p">{</span>
-<a name="line-87"></a><span class="nl">public</span><span class="p">:</span>
-<a name="line-88"></a>
-<a name="line-89"></a> <span class="n">ShowfotoThumbnailDelegatePrivate</span><span class="p">()</span>
-<a name="line-90"></a> <span class="p">{</span>
-<a name="line-91"></a><span class="hll"> <span class="n">flow</span> <span class="o">=</span> <span class="n">QListView</span><span class="o">::</span><span class="n">LeftToRight</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'flow' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;flow&apos; a value by passing the value to the constructor in the initialization list.</div></div>
-</span><a name="line-92"></a>
-<a name="line-93"></a> <span class="c1">// switch off drawing of frames</span>
-<a name="line-94"></a> <span class="n">drawMouseOverFrame</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-95"></a> <span class="n">drawFocusFrame</span> <span class="o">=</span> <span class="nb">false</span><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">void</span> <span class="n">init</span><span class="p">(</span><span class="n">ShowfotoThumbnailDelegate</span><span class="o">*</span> <span class="k">const</span> <span class="n">q</span><span class="p">);</span>
-<a name="line-99"></a>
-<a name="line-100"></a><span class="nl">public</span><span class="p">:</span>
-<a name="line-101"></a>
-<a name="line-102"></a> <span class="n">QListView</span><span class="o">::</span><span class="n">Flow</span> <span class="n">flow</span><span class="p">;</span>
-<a name="line-103"></a> <span class="n">QRect</span> <span class="n">viewSize</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">// --- ShowfotoNormalDelegate ----------------------------------------------------</span>
+<a name="line-83"></a><span class="n">QDataStream</span><span class="o">&amp;</span> <span class="k">operator</span><span class="o">&gt;&gt;</span><span class="p">(</span><span class="n">QDataStream</span><span class="o">&amp;</span> <span class="n">ds</span><span class="p">,</span> <span class="n">ShowfotoItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">)</span>
+<a name="line-84"></a><span class="p">{</span>
+<a name="line-85"></a> <span class="n">ds</span> <span class="o">&gt;&gt;</span> <span class="n">info</span><span class="p">.</span><span class="n">name</span><span class="p">;</span>
+<a name="line-86"></a> <span class="n">ds</span> <span class="o">&gt;&gt;</span> <span class="n">info</span><span class="p">.</span><span class="n">folder</span><span class="p">;</span>
+<a name="line-87"></a> <span class="n">ds</span> <span class="o">&gt;&gt;</span> <span class="n">info</span><span class="p">.</span><span class="n">mime</span><span class="p">;</span>
+<a name="line-88"></a> <span class="n">ds</span> <span class="o">&gt;&gt;</span> <span class="n">info</span><span class="p">.</span><span class="n">size</span><span class="p">;</span>
+<a name="line-89"></a> <span class="n">ds</span> <span class="o">&gt;&gt;</span> <span class="n">info</span><span class="p">.</span><span class="n">id</span><span class="p">;</span>
+<a name="line-90"></a> <span class="n">ds</span> <span class="o">&gt;&gt;</span> <span class="n">info</span><span class="p">.</span><span class="n">photoInfo</span><span class="p">;</span>
+<a name="line-91"></a>
+<a name="line-92"></a> <span class="k">return</span> <span class="n">ds</span><span class="p">;</span>
+<a name="line-93"></a><span class="p">}</span>
+<a name="line-94"></a>
+<a name="line-95"></a><span class="n">QDebug</span> <span class="k">operator</span><span class="o">&lt;&lt;</span><span class="p">(</span><span class="n">QDebug</span> <span class="n">dbg</span><span class="p">,</span> <span class="k">const</span> <span class="n">ShowfotoItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">)</span>
+<a name="line-96"></a><span class="p">{</span>
+<a name="line-97"></a> <span class="n">dbg</span><span class="p">.</span><span class="n">nospace</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;ShowfotoItemInfo::size: &quot;</span>
+<a name="line-98"></a> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">.</span><span class="n">size</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span>
+<a name="line-99"></a> <span class="n">dbg</span><span class="p">.</span><span class="n">nospace</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;ShowfotoItemInfo::name: &quot;</span>
+<a name="line-100"></a> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">.</span><span class="n">name</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span>
+<a name="line-101"></a> <span class="n">dbg</span><span class="p">.</span><span class="n">nospace</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;ShowfotoitemInfo::folder: &quot;</span>
+<a name="line-102"></a> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">.</span><span class="n">folder</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span>
+<a name="line-103"></a> <span class="n">dbg</span><span class="p">.</span><span class="n">nospace</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;ShowfotoItemInfo::mime: &quot;</span>
+<a name="line-104"></a> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">.</span><span class="n">mime</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span>
+<a name="line-105"></a> <span class="n">dbg</span><span class="p">.</span><span class="n">nospace</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;ShowfotoItemInfo::id: &quot;</span>
+<a name="line-106"></a> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">.</span><span class="n">id</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span>
<a name="line-107"></a>
-<a name="line-108"></a><span class="n">class</span> <span class="n">Q_DECL_HIDDEN</span> <span class="nl">ShowfotoNormalDelegatePrivate</span> <span class="p">:</span> <span class="n">public</span> <span class="n">ShowfotoDelegate</span><span class="o">::</span><span class="n">ShowfotoDelegatePrivate</span>
-<a name="line-109"></a><span class="p">{</span>
-<a name="line-110"></a><span class="nl">public</span><span class="p">:</span>
-<a name="line-111"></a>
-<a name="line-112"></a> <span class="n">ShowfotoNormalDelegatePrivate</span><span class="p">()</span>
-<a name="line-113"></a> <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="kt">void</span> <span class="n">init</span><span class="p">(</span><span class="n">ShowfotoNormalDelegate</span><span class="o">*</span> <span class="k">const</span> <span class="n">q</span><span class="p">,</span> <span class="n">ShowfotoThumbnailBar</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="p">};</span>
-<a name="line-118"></a>
-<a name="line-119"></a><span class="p">}</span> <span class="c1">// namespace Showfoto</span>
-<a name="line-120"></a>
-<a name="line-121"></a><span class="cp">#endif </span><span class="c1">// SHOW_FOTO_DELEGATE_P_H</span>
+<a name="line-108"></a> <span class="k">return</span> <span class="n">dbg</span><span class="p">.</span><span class="n">space</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="p">}</span> <span class="c1">// namespace Showfoto</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/47.html b/static/reports/cppcheck/master/47.html
index cb6596cec..7359396f2 100644
--- a/static/reports/cppcheck/master/47.html
+++ b/static/reports/cppcheck/master/47.html
@@ -1,367 +1,659 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/showfoto/thumbbar/showfotoiteminfo.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/showfoto/thumbbar/showfotoitemsortsettings.cpp </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> showfotoiteminfo.cpp</p>
-<a href='47.html#line-35'> useInitializationList 35</a><a href='47.html#line-36'> useInitializationList 36</a>
+ <p id="filename"><a href="index.html">Defects:</a> showfotoitemsortsettings.cpp</p>
+<a href='47.html#line-37'> useInitializationList 37</a><a href='47.html#line-40'> useInitializationList 40</a><a href='47.html#line-41'> useInitializationList 41</a><a href='47.html#line-42'> useInitializationList 42</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</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
+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</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 : 2013-07-1</span>
-<a name="line-7"></a><span class="cm"> * Description : Showfoto item info container</span>
+<a name="line-6"></a><span class="cm"> * Date : 29-07-2013</span>
+<a name="line-7"></a><span class="cm"> * Description : Sort settings for showfoto item infos</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2013 by Mohamed_Anwer &lt;m_dot_anwer at gmx 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;showfotoiteminfo.h&quot;</span><span class="cp"></span>
+<a name="line-24"></a><span class="cp">#include</span> <span class="cpf">&quot;showfotoitemsortsettings.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;QDataStream&gt;</span><span class="cp"></span>
+<a name="line-28"></a><span class="cp">#include</span> <span class="cpf">&lt;QRectF&gt;</span><span class="cp"></span>
<a name="line-29"></a>
<a name="line-30"></a><span class="k">namespace</span> <span class="n">ShowFoto</span>
<a name="line-31"></a><span class="p">{</span>
<a name="line-32"></a>
-<a name="line-33"></a><span class="n">ShowfotoItemInfo</span><span class="o">::</span><span class="n">ShowfotoItemInfo</span><span class="p">()</span>
+<a name="line-33"></a><span class="n">ShowfotoItemSortSettings</span><span class="o">::</span><span class="n">ShowfotoItemSortSettings</span><span class="p">()</span>
<a name="line-34"></a><span class="p">{</span>
-<a name="line-35"></a><span class="hll"> <span class="n">size</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'size' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;size&apos; a value by passing the value to the constructor in the initialization list.</div></div>
-</span><a name="line-36"></a><span class="hll"> <span class="n">id</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'id' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;id&apos; a value by passing the value to the constructor in the initialization list.</div></div>
-</span><a name="line-37"></a> <span class="n">width</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-38"></a> <span class="n">height</span> <span class="o">=</span> <span class="mi">0</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">ShowfotoItemInfo</span><span class="o">::~</span><span class="n">ShowfotoItemInfo</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-35"></a> <span class="n">categorizationMode</span> <span class="o">=</span> <span class="n">NoCategories</span><span class="p">;</span>
+<a name="line-36"></a> <span class="n">categorizationSortOrder</span> <span class="o">=</span> <span class="n">DefaultOrder</span><span class="p">;</span>
+<a name="line-37"></a><span class="hll"> <span class="n">categorizationCaseSensitivity</span> <span class="o">=</span> <span class="n">Qt</span><span class="o">::</span><span class="n">CaseSensitive</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'categorizationCaseSensitivity' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;categorizationCaseSensitivity&apos; a value by passing the value to the constructor in the initialization list.</div></div>
+</span><a name="line-38"></a> <span class="n">sortRole</span> <span class="o">=</span> <span class="n">SortByFileName</span><span class="p">;</span>
+<a name="line-39"></a> <span class="n">sortOrder</span> <span class="o">=</span> <span class="n">DefaultOrder</span><span class="p">;</span>
+<a name="line-40"></a><span class="hll"> <span class="n">sortCaseSensitivity</span> <span class="o">=</span> <span class="n">Qt</span><span class="o">::</span><span class="n">CaseSensitive</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'sortCaseSensitivity' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;sortCaseSensitivity&apos; a value by passing the value to the constructor in the initialization list.</div></div>
+</span><a name="line-41"></a><span class="hll"> <span class="n">currentCategorizationSortOrder</span> <span class="o">=</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AscendingOrder</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'currentCategorizationSortOrder' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;currentCategorizationSortOrder&apos; a value by passing the value to the constructor in the initialization list.</div></div>
+</span><a name="line-42"></a><span class="hll"> <span class="n">currentSortOrder</span> <span class="o">=</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AscendingOrder</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'currentSortOrder' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;currentSortOrder&apos; a value by passing the value to the constructor in the initialization list.</div></div>
+</span><a name="line-43"></a><span class="p">}</span>
<a name="line-44"></a>
-<a name="line-45"></a><span class="kt">bool</span> <span class="n">ShowfotoItemInfo</span><span class="o">::</span><span class="n">isNull</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-45"></a><span class="n">ShowfotoItemSortSettings</span><span class="o">::~</span><span class="n">ShowfotoItemSortSettings</span><span class="p">()</span>
<a name="line-46"></a><span class="p">{</span>
-<a name="line-47"></a> <span class="k">return</span> <span class="p">(</span><span class="n">size</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
-<a name="line-48"></a> <span class="p">(</span><span class="n">id</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
-<a name="line-49"></a> <span class="n">name</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">&amp;&amp;</span>
-<a name="line-50"></a> <span class="n">folder</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">&amp;&amp;</span>
-<a name="line-51"></a> <span class="n">mime</span><span class="p">.</span><span class="n">isNull</span><span class="p">();</span>
-<a name="line-52"></a><span class="p">}</span>
-<a name="line-53"></a>
-<a name="line-54"></a><span class="kt">bool</span> <span class="n">ShowfotoItemInfo</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">ShowfotoItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-55"></a><span class="p">{</span>
-<a name="line-56"></a> <span class="kt">bool</span> <span class="n">b1</span> <span class="o">=</span> <span class="n">size</span> <span class="o">==</span> <span class="n">info</span><span class="p">.</span><span class="n">size</span><span class="p">;</span>
-<a name="line-57"></a> <span class="kt">bool</span> <span class="n">b2</span> <span class="o">=</span> <span class="n">name</span> <span class="o">==</span> <span class="n">info</span><span class="p">.</span><span class="n">name</span><span class="p">;</span>
-<a name="line-58"></a> <span class="kt">bool</span> <span class="n">b3</span> <span class="o">=</span> <span class="n">folder</span> <span class="o">==</span> <span class="n">info</span><span class="p">.</span><span class="n">folder</span><span class="p">;</span>
-<a name="line-59"></a> <span class="kt">bool</span> <span class="n">b4</span> <span class="o">=</span> <span class="n">mime</span> <span class="o">==</span> <span class="n">info</span><span class="p">.</span><span class="n">mime</span><span class="p">;</span>
-<a name="line-60"></a> <span class="kt">bool</span> <span class="n">b5</span> <span class="o">=</span> <span class="n">id</span> <span class="o">==</span> <span class="n">info</span><span class="p">.</span><span class="n">id</span><span class="p">;</span>
-<a name="line-61"></a> <span class="kt">bool</span> <span class="n">b6</span> <span class="o">=</span> <span class="n">photoInfo</span> <span class="o">==</span> <span class="n">info</span><span class="p">.</span><span class="n">photoInfo</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="kt">bool</span> <span class="n">ShowfotoItemSortSettings</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">ShowfotoItemSortSettings</span><span class="o">&amp;</span> <span class="n">other</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-50"></a><span class="p">{</span>
+<a name="line-51"></a> <span class="k">return</span> <span class="p">(</span><span class="n">categorizationMode</span> <span class="o">==</span> <span class="n">other</span><span class="p">.</span><span class="n">categorizationMode</span> <span class="o">&amp;&amp;</span>
+<a name="line-52"></a> <span class="n">categorizationSortOrder</span> <span class="o">==</span> <span class="n">other</span><span class="p">.</span><span class="n">categorizationSortOrder</span> <span class="o">&amp;&amp;</span>
+<a name="line-53"></a> <span class="n">categorizationCaseSensitivity</span> <span class="o">==</span> <span class="n">other</span><span class="p">.</span><span class="n">categorizationCaseSensitivity</span> <span class="o">&amp;&amp;</span>
+<a name="line-54"></a> <span class="n">sortRole</span> <span class="o">==</span> <span class="n">other</span><span class="p">.</span><span class="n">sortRole</span> <span class="o">&amp;&amp;</span>
+<a name="line-55"></a> <span class="n">sortOrder</span> <span class="o">==</span> <span class="n">other</span><span class="p">.</span><span class="n">sortOrder</span> <span class="o">&amp;&amp;</span>
+<a name="line-56"></a> <span class="n">sortCaseSensitivity</span> <span class="o">==</span> <span class="n">other</span><span class="p">.</span><span class="n">sortCaseSensitivity</span><span class="p">);</span>
+<a name="line-57"></a><span class="p">}</span>
+<a name="line-58"></a>
+<a name="line-59"></a><span class="kt">void</span> <span class="n">ShowfotoItemSortSettings</span><span class="o">::</span><span class="n">setCategorizationMode</span><span class="p">(</span><span class="n">CategorizationMode</span> <span class="n">mode</span><span class="p">)</span>
+<a name="line-60"></a><span class="p">{</span>
+<a name="line-61"></a> <span class="n">categorizationMode</span> <span class="o">=</span> <span class="n">mode</span><span class="p">;</span>
<a name="line-62"></a>
-<a name="line-63"></a> <span class="k">return</span> <span class="p">(</span><span class="n">b1</span> <span class="o">&amp;&amp;</span> <span class="n">b2</span> <span class="o">&amp;&amp;</span> <span class="n">b3</span> <span class="o">&amp;&amp;</span> <span class="n">b4</span> <span class="o">&amp;&amp;</span> <span class="n">b5</span> <span class="o">&amp;&amp;</span> <span class="n">b6</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="kt">bool</span> <span class="n">ShowfotoItemInfo</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">ShowfotoItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-67"></a><span class="p">{</span>
-<a name="line-68"></a> <span class="k">return</span> <span class="o">!</span><span class="k">operator</span><span class="o">==</span><span class="p">(</span><span class="n">info</span><span class="p">);</span>
-<a name="line-69"></a><span class="p">}</span>
-<a name="line-70"></a>
-<a name="line-71"></a><span class="n">QDataStream</span><span class="o">&amp;</span> <span class="k">operator</span><span class="o">&lt;&lt;</span><span class="p">(</span><span class="n">QDataStream</span><span class="o">&amp;</span> <span class="n">ds</span><span class="p">,</span> <span class="k">const</span> <span class="n">ShowfotoItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">)</span>
-<a name="line-72"></a><span class="p">{</span>
-<a name="line-73"></a> <span class="n">ds</span> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">.</span><span class="n">name</span><span class="p">;</span>
-<a name="line-74"></a> <span class="n">ds</span> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">.</span><span class="n">folder</span><span class="p">;</span>
-<a name="line-75"></a> <span class="n">ds</span> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">.</span><span class="n">mime</span><span class="p">;</span>
-<a name="line-76"></a> <span class="n">ds</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-77"></a> <span class="n">ds</span> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">.</span><span class="n">id</span><span class="p">;</span>
-<a name="line-78"></a> <span class="n">ds</span> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">.</span><span class="n">photoInfo</span><span class="p">;</span>
-<a name="line-79"></a>
-<a name="line-80"></a> <span class="k">return</span> <span class="n">ds</span><span class="p">;</span>
+<a name="line-63"></a> <span class="k">if</span> <span class="p">(</span><span class="n">categorizationSortOrder</span> <span class="o">==</span> <span class="n">DefaultOrder</span><span class="p">)</span>
+<a name="line-64"></a> <span class="p">{</span>
+<a name="line-65"></a> <span class="n">currentCategorizationSortOrder</span> <span class="o">=</span> <span class="n">defaultSortOrderForCategorizationMode</span><span class="p">(</span><span class="n">categorizationMode</span><span class="p">);</span>
+<a name="line-66"></a> <span class="p">}</span>
+<a name="line-67"></a><span class="p">}</span>
+<a name="line-68"></a>
+<a name="line-69"></a><span class="kt">void</span> <span class="n">ShowfotoItemSortSettings</span><span class="o">::</span><span class="n">setCategorizationSortOrder</span><span class="p">(</span><span class="n">SortOrder</span> <span class="n">order</span><span class="p">)</span>
+<a name="line-70"></a><span class="p">{</span>
+<a name="line-71"></a> <span class="n">categorizationSortOrder</span> <span class="o">=</span> <span class="n">order</span><span class="p">;</span>
+<a name="line-72"></a>
+<a name="line-73"></a> <span class="k">if</span> <span class="p">(</span><span class="n">categorizationSortOrder</span> <span class="o">==</span> <span class="n">DefaultOrder</span><span class="p">)</span>
+<a name="line-74"></a> <span class="p">{</span>
+<a name="line-75"></a> <span class="n">currentCategorizationSortOrder</span> <span class="o">=</span> <span class="n">defaultSortOrderForCategorizationMode</span><span class="p">(</span><span class="n">categorizationMode</span><span class="p">);</span>
+<a name="line-76"></a> <span class="p">}</span>
+<a name="line-77"></a> <span class="k">else</span>
+<a name="line-78"></a> <span class="p">{</span>
+<a name="line-79"></a> <span class="n">currentCategorizationSortOrder</span> <span class="o">=</span> <span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">SortOrder</span><span class="p">)</span><span class="n">categorizationSortOrder</span><span class="p">;</span>
+<a name="line-80"></a> <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">QDataStream</span><span class="o">&amp;</span> <span class="k">operator</span><span class="o">&gt;&gt;</span><span class="p">(</span><span class="n">QDataStream</span><span class="o">&amp;</span> <span class="n">ds</span><span class="p">,</span> <span class="n">ShowfotoItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">)</span>
+<a name="line-83"></a><span class="kt">void</span> <span class="n">ShowfotoItemSortSettings</span><span class="o">::</span><span class="n">setSortRole</span><span class="p">(</span><span class="n">SortRole</span> <span class="n">role</span><span class="p">)</span>
<a name="line-84"></a><span class="p">{</span>
-<a name="line-85"></a> <span class="n">ds</span> <span class="o">&gt;&gt;</span> <span class="n">info</span><span class="p">.</span><span class="n">name</span><span class="p">;</span>
-<a name="line-86"></a> <span class="n">ds</span> <span class="o">&gt;&gt;</span> <span class="n">info</span><span class="p">.</span><span class="n">folder</span><span class="p">;</span>
-<a name="line-87"></a> <span class="n">ds</span> <span class="o">&gt;&gt;</span> <span class="n">info</span><span class="p">.</span><span class="n">mime</span><span class="p">;</span>
-<a name="line-88"></a> <span class="n">ds</span> <span class="o">&gt;&gt;</span> <span class="n">info</span><span class="p">.</span><span class="n">size</span><span class="p">;</span>
-<a name="line-89"></a> <span class="n">ds</span> <span class="o">&gt;&gt;</span> <span class="n">info</span><span class="p">.</span><span class="n">id</span><span class="p">;</span>
-<a name="line-90"></a> <span class="n">ds</span> <span class="o">&gt;&gt;</span> <span class="n">info</span><span class="p">.</span><span class="n">photoInfo</span><span class="p">;</span>
-<a name="line-91"></a>
-<a name="line-92"></a> <span class="k">return</span> <span class="n">ds</span><span class="p">;</span>
-<a name="line-93"></a><span class="p">}</span>
-<a name="line-94"></a>
-<a name="line-95"></a><span class="n">QDebug</span> <span class="k">operator</span><span class="o">&lt;&lt;</span><span class="p">(</span><span class="n">QDebug</span> <span class="n">dbg</span><span class="p">,</span> <span class="k">const</span> <span class="n">ShowfotoItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">)</span>
-<a name="line-96"></a><span class="p">{</span>
-<a name="line-97"></a> <span class="n">dbg</span><span class="p">.</span><span class="n">nospace</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;ShowfotoItemInfo::size: &quot;</span>
-<a name="line-98"></a> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">.</span><span class="n">size</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span>
-<a name="line-99"></a> <span class="n">dbg</span><span class="p">.</span><span class="n">nospace</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;ShowfotoItemInfo::name: &quot;</span>
-<a name="line-100"></a> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">.</span><span class="n">name</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span>
-<a name="line-101"></a> <span class="n">dbg</span><span class="p">.</span><span class="n">nospace</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;ShowfotoitemInfo::folder: &quot;</span>
-<a name="line-102"></a> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">.</span><span class="n">folder</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span>
-<a name="line-103"></a> <span class="n">dbg</span><span class="p">.</span><span class="n">nospace</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;ShowfotoItemInfo::mime: &quot;</span>
-<a name="line-104"></a> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">.</span><span class="n">mime</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span>
-<a name="line-105"></a> <span class="n">dbg</span><span class="p">.</span><span class="n">nospace</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;ShowfotoItemInfo::id: &quot;</span>
-<a name="line-106"></a> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">.</span><span class="n">id</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span> <span class="o">&lt;&lt;</span> <span class="n">endl</span><span class="p">;</span>
-<a name="line-107"></a>
-<a name="line-108"></a> <span class="k">return</span> <span class="n">dbg</span><span class="p">.</span><span class="n">space</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="p">}</span> <span class="c1">// namespace Showfoto</span>
+<a name="line-85"></a> <span class="n">sortRole</span> <span class="o">=</span> <span class="n">role</span><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">sortOrder</span> <span class="o">==</span> <span class="n">DefaultOrder</span><span class="p">)</span>
+<a name="line-88"></a> <span class="p">{</span>
+<a name="line-89"></a> <span class="n">currentSortOrder</span> <span class="o">=</span> <span class="n">defaultSortOrderForSortRole</span><span class="p">(</span><span class="n">sortRole</span><span class="p">);</span>
+<a name="line-90"></a> <span class="p">}</span>
+<a name="line-91"></a><span class="p">}</span>
+<a name="line-92"></a>
+<a name="line-93"></a><span class="kt">void</span> <span class="n">ShowfotoItemSortSettings</span><span class="o">::</span><span class="n">setSortOrder</span><span class="p">(</span><span class="n">SortOrder</span> <span class="n">order</span><span class="p">)</span>
+<a name="line-94"></a><span class="p">{</span>
+<a name="line-95"></a> <span class="n">sortOrder</span> <span class="o">=</span> <span class="n">order</span><span class="p">;</span>
+<a name="line-96"></a>
+<a name="line-97"></a> <span class="k">if</span> <span class="p">(</span><span class="n">sortOrder</span> <span class="o">==</span> <span class="n">DefaultOrder</span><span class="p">)</span>
+<a name="line-98"></a> <span class="p">{</span>
+<a name="line-99"></a> <span class="n">currentSortOrder</span> <span class="o">=</span> <span class="n">defaultSortOrderForSortRole</span><span class="p">(</span><span class="n">sortRole</span><span class="p">);</span>
+<a name="line-100"></a> <span class="p">}</span>
+<a name="line-101"></a> <span class="k">else</span>
+<a name="line-102"></a> <span class="p">{</span>
+<a name="line-103"></a> <span class="n">currentSortOrder</span> <span class="o">=</span> <span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">SortOrder</span><span class="p">)</span><span class="n">order</span><span class="p">;</span>
+<a name="line-104"></a> <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">Qt</span><span class="o">::</span><span class="n">SortOrder</span> <span class="n">ShowfotoItemSortSettings</span><span class="o">::</span><span class="n">defaultSortOrderForCategorizationMode</span><span class="p">(</span><span class="n">CategorizationMode</span> <span class="n">mode</span><span class="p">)</span>
+<a name="line-108"></a><span class="p">{</span>
+<a name="line-109"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">mode</span><span class="p">)</span>
+<a name="line-110"></a> <span class="p">{</span>
+<a name="line-111"></a> <span class="k">case</span> <span class="nl">NoCategories</span><span class="p">:</span>
+<a name="line-112"></a> <span class="k">case</span> <span class="nl">CategoryByFolder</span><span class="p">:</span>
+<a name="line-113"></a> <span class="k">case</span> <span class="nl">CategoryByFormat</span><span class="p">:</span>
+<a name="line-114"></a> <span class="k">default</span><span class="o">:</span>
+<a name="line-115"></a> <span class="k">return</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AscendingOrder</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="n">Qt</span><span class="o">::</span><span class="n">SortOrder</span> <span class="n">ShowfotoItemSortSettings</span><span class="o">::</span><span class="n">defaultSortOrderForSortRole</span><span class="p">(</span><span class="n">SortRole</span> <span class="n">role</span><span class="p">)</span>
+<a name="line-120"></a><span class="p">{</span>
+<a name="line-121"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">role</span><span class="p">)</span>
+<a name="line-122"></a> <span class="p">{</span>
+<a name="line-123"></a> <span class="k">case</span> <span class="nl">SortByFileName</span><span class="p">:</span>
+<a name="line-124"></a> <span class="k">case</span> <span class="nl">SortByFileSize</span><span class="p">:</span>
+<a name="line-125"></a> <span class="k">return</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DescendingOrder</span><span class="p">;</span>
+<a name="line-126"></a> <span class="k">case</span> <span class="nl">SortByCreationDate</span><span class="p">:</span>
+<a name="line-127"></a> <span class="k">return</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AscendingOrder</span><span class="p">;</span>
+<a name="line-128"></a> <span class="k">default</span><span class="o">:</span>
+<a name="line-129"></a> <span class="k">return</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AscendingOrder</span><span class="p">;</span>
+<a name="line-130"></a> <span class="p">}</span>
+<a name="line-131"></a><span class="p">}</span>
+<a name="line-132"></a>
+<a name="line-133"></a><span class="kt">int</span> <span class="n">ShowfotoItemSortSettings</span><span class="o">::</span><span class="n">compareCategories</span><span class="p">(</span><span class="k">const</span> <span class="n">ShowfotoItemInfo</span><span class="o">&amp;</span> <span class="n">left</span><span class="p">,</span> <span class="k">const</span> <span class="n">ShowfotoItemInfo</span><span class="o">&amp;</span> <span class="n">right</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-134"></a><span class="p">{</span>
+<a name="line-135"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">categorizationMode</span><span class="p">)</span>
+<a name="line-136"></a> <span class="p">{</span>
+<a name="line-137"></a> <span class="k">case</span> <span class="nl">NoCategories</span><span class="p">:</span>
+<a name="line-138"></a> <span class="k">case</span> <span class="nl">CategoryByFolder</span><span class="p">:</span>
+<a name="line-139"></a> <span class="k">return</span> <span class="n">naturalCompare</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">folder</span><span class="p">,</span> <span class="n">right</span><span class="p">.</span><span class="n">folder</span><span class="p">,</span> <span class="n">currentCategorizationSortOrder</span><span class="p">,</span> <span class="n">categorizationCaseSensitivity</span><span class="p">);</span>
+<a name="line-140"></a> <span class="k">case</span> <span class="nl">CategoryByFormat</span><span class="p">:</span>
+<a name="line-141"></a> <span class="k">return</span> <span class="n">naturalCompare</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">mime</span><span class="p">,</span> <span class="n">right</span><span class="p">.</span><span class="n">mime</span><span class="p">,</span> <span class="n">currentCategorizationSortOrder</span><span class="p">,</span> <span class="n">categorizationCaseSensitivity</span><span class="p">);</span>
+<a name="line-142"></a> <span class="k">default</span><span class="o">:</span>
+<a name="line-143"></a> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-144"></a> <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="kt">bool</span> <span class="n">ShowfotoItemSortSettings</span><span class="o">::</span><span class="n">lessThan</span><span class="p">(</span><span class="k">const</span> <span class="n">ShowfotoItemInfo</span><span class="o">&amp;</span> <span class="n">left</span><span class="p">,</span> <span class="k">const</span> <span class="n">ShowfotoItemInfo</span><span class="o">&amp;</span> <span class="n">right</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="kt">int</span> <span class="n">result</span> <span class="o">=</span> <span class="n">compare</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">sortRole</span><span class="p">);</span>
+<a name="line-150"></a>
+<a name="line-151"></a> <span class="k">if</span> <span class="p">(</span><span class="n">result</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+<a name="line-152"></a> <span class="p">{</span>
+<a name="line-153"></a> <span class="k">return</span> <span class="n">result</span> <span class="o">&lt;</span> <span class="mi">0</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="k">if</span> <span class="p">(</span><span class="n">left</span> <span class="o">==</span> <span class="n">right</span><span class="p">)</span>
+<a name="line-157"></a> <span class="p">{</span>
+<a name="line-158"></a> <span class="k">return</span> <span class="nb">false</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="k">if</span> <span class="p">((</span><span class="n">result</span> <span class="o">=</span> <span class="n">compare</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">SortByFileName</span><span class="p">))</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+<a name="line-162"></a> <span class="p">{</span>
+<a name="line-163"></a> <span class="k">return</span> <span class="n">result</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-164"></a> <span class="p">}</span>
+<a name="line-165"></a>
+<a name="line-166"></a> <span class="k">if</span> <span class="p">((</span><span class="n">result</span> <span class="o">=</span> <span class="n">compare</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">SortByCreationDate</span><span class="p">))</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">return</span> <span class="n">result</span> <span class="o">&lt;</span> <span class="mi">0</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="k">return</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-172"></a><span class="p">}</span>
+<a name="line-173"></a>
+<a name="line-174"></a><span class="kt">int</span> <span class="n">ShowfotoItemSortSettings</span><span class="o">::</span><span class="n">compare</span><span class="p">(</span><span class="k">const</span> <span class="n">ShowfotoItemInfo</span><span class="o">&amp;</span> <span class="n">left</span><span class="p">,</span> <span class="k">const</span> <span class="n">ShowfotoItemInfo</span><span class="o">&amp;</span> <span class="n">right</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-175"></a><span class="p">{</span>
+<a name="line-176"></a> <span class="k">return</span> <span class="n">compare</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">sortRole</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">int</span> <span class="n">ShowfotoItemSortSettings</span><span class="o">::</span><span class="n">compare</span><span class="p">(</span><span class="k">const</span> <span class="n">ShowfotoItemInfo</span><span class="o">&amp;</span> <span class="n">left</span><span class="p">,</span> <span class="k">const</span> <span class="n">ShowfotoItemInfo</span><span class="o">&amp;</span> <span class="n">right</span><span class="p">,</span> <span class="n">SortRole</span> <span class="n">role</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-180"></a><span class="p">{</span>
+<a name="line-181"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">role</span><span class="p">)</span>
+<a name="line-182"></a> <span class="p">{</span>
+<a name="line-183"></a> <span class="k">case</span> <span class="nl">SortByFileName</span><span class="p">:</span>
+<a name="line-184"></a> <span class="k">return</span> <span class="n">naturalCompare</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">name</span><span class="p">,</span> <span class="n">right</span><span class="p">.</span><span class="n">name</span><span class="p">,</span> <span class="n">currentSortOrder</span><span class="p">,</span> <span class="n">sortCaseSensitivity</span><span class="p">);</span>
+<a name="line-185"></a> <span class="k">case</span> <span class="nl">SortByFileSize</span><span class="p">:</span>
+<a name="line-186"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">size</span><span class="p">,</span> <span class="n">right</span><span class="p">.</span><span class="n">size</span><span class="p">,</span> <span class="n">currentSortOrder</span><span class="p">);</span>
+<a name="line-187"></a> <span class="c1">//FIXME: Change it to creation date instead of modification date.</span>
+<a name="line-188"></a> <span class="c1">//TODO : complete the needed functions</span>
+<a name="line-189"></a> <span class="k">case</span> <span class="nl">SortByCreationDate</span><span class="p">:</span>
+<a name="line-190"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">ctime</span><span class="p">,</span> <span class="n">right</span><span class="p">.</span><span class="n">ctime</span><span class="p">,</span> <span class="n">currentSortOrder</span><span class="p">);</span>
+<a name="line-191"></a> <span class="k">default</span><span class="o">:</span>
+<a name="line-192"></a> <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<a name="line-193"></a> <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="kt">bool</span> <span class="n">ShowfotoItemSortSettings</span><span class="o">::</span><span class="n">lessThan</span><span class="p">(</span><span class="k">const</span> <span class="n">QVariant</span><span class="o">&amp;</span> <span class="n">left</span><span class="p">,</span> <span class="k">const</span> <span class="n">QVariant</span><span class="o">&amp;</span> <span class="n">right</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-197"></a><span class="p">{</span>
+<a name="line-198"></a> <span class="k">if</span> <span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">type</span><span class="p">()</span> <span class="o">!=</span> <span class="n">right</span><span class="p">.</span><span class="n">type</span><span class="p">())</span>
+<a name="line-199"></a> <span class="p">{</span>
+<a name="line-200"></a> <span class="k">return</span> <span class="nb">false</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="k">switch</span> <span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">type</span><span class="p">())</span>
+<a name="line-204"></a> <span class="p">{</span>
+<a name="line-205"></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-206"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">toInt</span><span class="p">(),</span> <span class="n">right</span><span class="p">.</span><span class="n">toInt</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">);</span>
+<a name="line-207"></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-208"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">toUInt</span><span class="p">(),</span> <span class="n">right</span><span class="p">.</span><span class="n">toUInt</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">);</span>
+<a name="line-209"></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-210"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">toLongLong</span><span class="p">(),</span> <span class="n">right</span><span class="p">.</span><span class="n">toLongLong</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">);</span>
+<a name="line-211"></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-212"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">toULongLong</span><span class="p">(),</span> <span class="n">right</span><span class="p">.</span><span class="n">toULongLong</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">);</span>
+<a name="line-213"></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-214"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">toDouble</span><span class="p">(),</span> <span class="n">right</span><span class="p">.</span><span class="n">toDouble</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">);</span>
+<a name="line-215"></a><span class="c1">// case QVariant::Date:</span>
+<a name="line-216"></a><span class="c1">// return compareByOrder(left.toDate(), right.toDate(), currentSortOrder);</span>
+<a name="line-217"></a><span class="c1">// case QVariant::DateTime:</span>
+<a name="line-218"></a><span class="c1">// return compareByOrder(left.toDateTime(), right.toDateTime(), currentSortOrder);</span>
+<a name="line-219"></a><span class="c1">// case QVariant::Time:</span>
+<a name="line-220"></a><span class="c1">// return compareByOrder(left.toTime(), right.toTime(), currentSortOrder);</span>
+<a name="line-221"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">Rect</span><span class="p">:</span>
+<a name="line-222"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">RectF</span><span class="p">:</span>
+<a name="line-223"></a> <span class="p">{</span>
+<a name="line-224"></a> <span class="n">QRectF</span> <span class="n">rectLeft</span> <span class="o">=</span> <span class="n">left</span><span class="p">.</span><span class="n">toRectF</span><span class="p">();</span>
+<a name="line-225"></a> <span class="n">QRectF</span> <span class="n">rectRight</span> <span class="o">=</span> <span class="n">right</span><span class="p">.</span><span class="n">toRectF</span><span class="p">();</span>
+<a name="line-226"></a> <span class="kt">int</span> <span class="n">result</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">result</span> <span class="o">=</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">rectLeft</span><span class="p">.</span><span class="n">top</span><span class="p">(),</span> <span class="n">rectRight</span><span class="p">.</span><span class="n">top</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">))</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+<a name="line-229"></a> <span class="p">{</span>
+<a name="line-230"></a> <span class="k">return</span> <span class="n">result</span> <span class="o">&lt;</span> <span class="mi">0</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">if</span> <span class="p">((</span><span class="n">result</span> <span class="o">=</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">rectLeft</span><span class="p">.</span><span class="n">left</span><span class="p">(),</span> <span class="n">rectRight</span><span class="p">.</span><span class="n">left</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">))</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
+<a name="line-234"></a> <span class="p">{</span>
+<a name="line-235"></a> <span class="k">return</span> <span class="n">result</span> <span class="o">&lt;</span> <span class="mi">0</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">QSizeF</span> <span class="n">sizeLeft</span> <span class="o">=</span> <span class="n">rectLeft</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
+<a name="line-239"></a> <span class="n">QSizeF</span> <span class="n">sizeRight</span> <span class="o">=</span> <span class="n">rectRight</span><span class="p">.</span><span class="n">size</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">result</span> <span class="o">=</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">sizeLeft</span><span class="p">.</span><span class="n">width</span><span class="p">()</span><span class="o">*</span><span class="n">sizeLeft</span><span class="p">.</span><span class="n">height</span><span class="p">(),</span> <span class="n">sizeRight</span><span class="p">.</span><span class="n">width</span><span class="p">()</span><span class="o">*</span><span class="n">sizeRight</span><span class="p">.</span><span class="n">height</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">))</span> <span class="o">!=</span> <span class="mi">0</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="n">result</span> <span class="o">&lt;</span> <span class="mi">0</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="cp">#if __GNUC__ &gt;= 7 </span><span class="c1">// krazy:exclude=cpp</span>
+<a name="line-247"></a> <span class="p">[[</span><span class="n">fallthrough</span><span class="p">]];</span>
+<a name="line-248"></a><span class="cp">#endif</span>
+<a name="line-249"></a> <span class="p">}</span>
+<a name="line-250"></a> <span class="k">default</span><span class="o">:</span>
+<a name="line-251"></a> <span class="p">{</span>
+<a name="line-252"></a> <span class="k">return</span> <span class="n">naturalCompare</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">toString</span><span class="p">(),</span> <span class="n">right</span><span class="p">.</span><span class="n">toString</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">,</span> <span class="n">sortCaseSensitivity</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><span class="p">}</span>
+<a name="line-256"></a>
+<a name="line-257"></a><span class="p">}</span> <span class="c1">// namespace Showfoto</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/48.html b/static/reports/cppcheck/master/48.html
index 3c4a6df63..f202bfa63 100644
--- a/static/reports/cppcheck/master/48.html
+++ b/static/reports/cppcheck/master/48.html
@@ -1,659 +1,387 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/showfoto/thumbbar/showfotoitemsortsettings.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/showfoto/thumbbar/showfotodelegate_p.h </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> showfotoitemsortsettings.cpp</p>
-<a href='48.html#line-37'> useInitializationList 37</a><a href='48.html#line-40'> useInitializationList 40</a><a href='48.html#line-41'> useInitializationList 41</a><a href='48.html#line-42'> useInitializationList 42</a>
+ <p id="filename"><a href="index.html">Defects:</a> showfotodelegate_p.h</p>
+<a href='48.html#line-91'> useInitializationList 91</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</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 : 29-07-2013</span>
-<a name="line-7"></a><span class="cm"> * Description : Sort settings for showfoto item infos</span>
+<a name="line-6"></a><span class="cm"> * Date : 2013-08-01</span>
+<a name="line-7"></a><span class="cm"> * Description : Qt model view for Showfoto item - the delegate Private</span>
<a name="line-8"></a><span class="cm"> *</span>
-<a name="line-9"></a><span class="cm"> * Copyright (C) 2013 by Mohamed_Anwer &lt;m_dot_anwer at gmx 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;showfotoitemsortsettings.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-9"></a><span class="cm"> * Copyright (C) 2013 by Mohamed_Anwer &lt;m_dot_anwer at gmx dot com&gt;</span>
+<a name="line-10"></a><span class="cm"> * Copyright (C) 2013-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)</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 SHOW_FOTO_DELEGATE_P_H</span>
+<a name="line-26"></a><span class="cp">#define SHOW_FOTO_DELEGATE_P_H</span>
<a name="line-27"></a>
-<a name="line-28"></a><span class="cp">#include</span> <span class="cpf">&lt;QRectF&gt;</span><span class="cp"></span>
+<a name="line-28"></a><span class="c1">// Qt includes</span>
<a name="line-29"></a>
-<a name="line-30"></a><span class="k">namespace</span> <span class="n">ShowFoto</span>
-<a name="line-31"></a><span class="p">{</span>
+<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QRect&gt;</span><span class="cp"></span>
+<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QCache&gt;</span><span class="cp"></span>
<a name="line-32"></a>
-<a name="line-33"></a><span class="n">ShowfotoItemSortSettings</span><span class="o">::</span><span class="n">ShowfotoItemSortSettings</span><span class="p">()</span>
-<a name="line-34"></a><span class="p">{</span>
-<a name="line-35"></a> <span class="n">categorizationMode</span> <span class="o">=</span> <span class="n">NoCategories</span><span class="p">;</span>
-<a name="line-36"></a> <span class="n">categorizationSortOrder</span> <span class="o">=</span> <span class="n">DefaultOrder</span><span class="p">;</span>
-<a name="line-37"></a><span class="hll"> <span class="n">categorizationCaseSensitivity</span> <span class="o">=</span> <span class="n">Qt</span><span class="o">::</span><span class="n">CaseSensitive</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'categorizationCaseSensitivity' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;categorizationCaseSensitivity&apos; a value by passing the value to the constructor in the initialization list.</div></div>
-</span><a name="line-38"></a> <span class="n">sortRole</span> <span class="o">=</span> <span class="n">SortByFileName</span><span class="p">;</span>
-<a name="line-39"></a> <span class="n">sortOrder</span> <span class="o">=</span> <span class="n">DefaultOrder</span><span class="p">;</span>
-<a name="line-40"></a><span class="hll"> <span class="n">sortCaseSensitivity</span> <span class="o">=</span> <span class="n">Qt</span><span class="o">::</span><span class="n">CaseSensitive</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'sortCaseSensitivity' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;sortCaseSensitivity&apos; a value by passing the value to the constructor in the initialization list.</div></div>
-</span><a name="line-41"></a><span class="hll"> <span class="n">currentCategorizationSortOrder</span> <span class="o">=</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AscendingOrder</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'currentCategorizationSortOrder' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;currentCategorizationSortOrder&apos; a value by passing the value to the constructor in the initialization list.</div></div>
-</span><a name="line-42"></a><span class="hll"> <span class="n">currentSortOrder</span> <span class="o">=</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AscendingOrder</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'currentSortOrder' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;currentSortOrder&apos; a value by passing the value to the constructor in the initialization list.</div></div>
-</span><a name="line-43"></a><span class="p">}</span>
-<a name="line-44"></a>
-<a name="line-45"></a><span class="n">ShowfotoItemSortSettings</span><span class="o">::~</span><span class="n">ShowfotoItemSortSettings</span><span class="p">()</span>
-<a name="line-46"></a><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="kt">bool</span> <span class="n">ShowfotoItemSortSettings</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">ShowfotoItemSortSettings</span><span class="o">&amp;</span> <span class="n">other</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-50"></a><span class="p">{</span>
-<a name="line-51"></a> <span class="k">return</span> <span class="p">(</span><span class="n">categorizationMode</span> <span class="o">==</span> <span class="n">other</span><span class="p">.</span><span class="n">categorizationMode</span> <span class="o">&amp;&amp;</span>
-<a name="line-52"></a> <span class="n">categorizationSortOrder</span> <span class="o">==</span> <span class="n">other</span><span class="p">.</span><span class="n">categorizationSortOrder</span> <span class="o">&amp;&amp;</span>
-<a name="line-53"></a> <span class="n">categorizationCaseSensitivity</span> <span class="o">==</span> <span class="n">other</span><span class="p">.</span><span class="n">categorizationCaseSensitivity</span> <span class="o">&amp;&amp;</span>
-<a name="line-54"></a> <span class="n">sortRole</span> <span class="o">==</span> <span class="n">other</span><span class="p">.</span><span class="n">sortRole</span> <span class="o">&amp;&amp;</span>
-<a name="line-55"></a> <span class="n">sortOrder</span> <span class="o">==</span> <span class="n">other</span><span class="p">.</span><span class="n">sortOrder</span> <span class="o">&amp;&amp;</span>
-<a name="line-56"></a> <span class="n">sortCaseSensitivity</span> <span class="o">==</span> <span class="n">other</span><span class="p">.</span><span class="n">sortCaseSensitivity</span><span class="p">);</span>
-<a name="line-57"></a><span class="p">}</span>
-<a name="line-58"></a>
-<a name="line-59"></a><span class="kt">void</span> <span class="n">ShowfotoItemSortSettings</span><span class="o">::</span><span class="n">setCategorizationMode</span><span class="p">(</span><span class="n">CategorizationMode</span> <span class="n">mode</span><span class="p">)</span>
-<a name="line-60"></a><span class="p">{</span>
-<a name="line-61"></a> <span class="n">categorizationMode</span> <span class="o">=</span> <span class="n">mode</span><span class="p">;</span>
-<a name="line-62"></a>
-<a name="line-63"></a> <span class="k">if</span> <span class="p">(</span><span class="n">categorizationSortOrder</span> <span class="o">==</span> <span class="n">DefaultOrder</span><span class="p">)</span>
-<a name="line-64"></a> <span class="p">{</span>
-<a name="line-65"></a> <span class="n">currentCategorizationSortOrder</span> <span class="o">=</span> <span class="n">defaultSortOrderForCategorizationMode</span><span class="p">(</span><span class="n">categorizationMode</span><span class="p">);</span>
-<a name="line-66"></a> <span class="p">}</span>
-<a name="line-67"></a><span class="p">}</span>
+<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;showfotothumbnailbar.h&quot;</span><span class="cp"></span>
+<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&quot;itemviewshowfotodelegate_p.h&quot;</span><span class="cp"></span>
+<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&quot;showfotodelegate.h&quot;</span><span class="cp"></span>
+<a name="line-38"></a>
+<a name="line-39"></a><span class="n">namespace</span> <span class="n">ShowFoto</span>
+<a name="line-40"></a><span class="p">{</span>
+<a name="line-41"></a>
+<a name="line-42"></a><span class="n">class</span> <span class="n">Q_DECL_HIDDEN</span> <span class="n">ShowfotoDelegate</span><span class="o">::</span><span class="nl">ShowfotoDelegatePrivate</span> <span class="p">:</span> <span class="n">public</span> <span class="n">ItemViewShowfotoDelegatePrivate</span>
+<a name="line-43"></a><span class="p">{</span>
+<a name="line-44"></a><span class="nl">public</span><span class="p">:</span>
+<a name="line-45"></a>
+<a name="line-46"></a> <span class="n">ShowfotoDelegatePrivate</span><span class="p">()</span>
+<a name="line-47"></a> <span class="p">{</span>
+<a name="line-48"></a> <span class="n">contentWidth</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-49"></a> <span class="n">drawImageFormat</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-50"></a> <span class="n">drawMouseOverFrame</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-51"></a> <span class="n">drawFocusFrame</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-52"></a> <span class="n">currentModel</span> <span class="o">=</span> <span class="n">nullptr</span><span class="p">;</span>
+<a name="line-53"></a> <span class="n">currentView</span> <span class="o">=</span> <span class="n">nullptr</span><span class="p">;</span>
+<a name="line-54"></a>
+<a name="line-55"></a> <span class="n">actualPixmapRectCache</span><span class="p">.</span><span class="n">setMaxCost</span><span class="p">(</span><span class="mi">250</span><span class="p">);</span>
+<a name="line-56"></a> <span class="p">}</span>
+<a name="line-57"></a>
+<a name="line-58"></a> <span class="kt">int</span> <span class="n">contentWidth</span><span class="p">;</span>
+<a name="line-59"></a>
+<a name="line-60"></a> <span class="n">QRect</span> <span class="n">dateRect</span><span class="p">;</span>
+<a name="line-61"></a> <span class="n">QRect</span> <span class="n">pixmapRect</span><span class="p">;</span>
+<a name="line-62"></a> <span class="n">QRect</span> <span class="n">nameRect</span><span class="p">;</span>
+<a name="line-63"></a> <span class="n">QRect</span> <span class="n">resolutionRect</span><span class="p">;</span>
+<a name="line-64"></a> <span class="n">QRect</span> <span class="n">sizeRect</span><span class="p">;</span>
+<a name="line-65"></a> <span class="n">QRect</span> <span class="n">imageInformationRect</span><span class="p">;</span>
+<a name="line-66"></a> <span class="n">QRect</span> <span class="n">groupRect</span><span class="p">;</span>
+<a name="line-67"></a> <span class="n">QRect</span> <span class="n">coordinatesRect</span><span class="p">;</span>
<a name="line-68"></a>
-<a name="line-69"></a><span class="kt">void</span> <span class="n">ShowfotoItemSortSettings</span><span class="o">::</span><span class="n">setCategorizationSortOrder</span><span class="p">(</span><span class="n">SortOrder</span> <span class="n">order</span><span class="p">)</span>
-<a name="line-70"></a><span class="p">{</span>
-<a name="line-71"></a> <span class="n">categorizationSortOrder</span> <span class="o">=</span> <span class="n">order</span><span class="p">;</span>
+<a name="line-69"></a> <span class="kt">bool</span> <span class="n">drawImageFormat</span><span class="p">;</span>
+<a name="line-70"></a> <span class="kt">bool</span> <span class="n">drawFocusFrame</span><span class="p">;</span>
+<a name="line-71"></a> <span class="kt">bool</span> <span class="n">drawMouseOverFrame</span><span class="p">;</span>
<a name="line-72"></a>
-<a name="line-73"></a> <span class="k">if</span> <span class="p">(</span><span class="n">categorizationSortOrder</span> <span class="o">==</span> <span class="n">DefaultOrder</span><span class="p">)</span>
-<a name="line-74"></a> <span class="p">{</span>
-<a name="line-75"></a> <span class="n">currentCategorizationSortOrder</span> <span class="o">=</span> <span class="n">defaultSortOrderForCategorizationMode</span><span class="p">(</span><span class="n">categorizationMode</span><span class="p">);</span>
-<a name="line-76"></a> <span class="p">}</span>
-<a name="line-77"></a> <span class="k">else</span>
-<a name="line-78"></a> <span class="p">{</span>
-<a name="line-79"></a> <span class="n">currentCategorizationSortOrder</span> <span class="o">=</span> <span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">SortOrder</span><span class="p">)</span><span class="n">categorizationSortOrder</span><span class="p">;</span>
-<a name="line-80"></a> <span class="p">}</span>
-<a name="line-81"></a><span class="p">}</span>
+<a name="line-73"></a> <span class="n">QCache</span><span class="o">&lt;</span><span class="kt">int</span><span class="p">,</span> <span class="n">QRect</span><span class="o">&gt;</span> <span class="n">actualPixmapRectCache</span><span class="p">;</span>
+<a name="line-74"></a>
+<a name="line-75"></a> <span class="n">ShowfotoThumbnailBar</span><span class="o">*</span> <span class="n">currentView</span><span class="p">;</span>
+<a name="line-76"></a> <span class="n">QAbstractItemModel</span><span class="o">*</span> <span class="n">currentModel</span><span class="p">;</span>
+<a name="line-77"></a>
+<a name="line-78"></a><span class="nl">public</span><span class="p">:</span>
+<a name="line-79"></a>
+<a name="line-80"></a> <span class="n">virtual</span> <span class="kt">void</span> <span class="n">clearRects</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="kt">void</span> <span class="n">ShowfotoItemSortSettings</span><span class="o">::</span><span class="n">setSortRole</span><span class="p">(</span><span class="n">SortRole</span> <span class="n">role</span><span class="p">)</span>
-<a name="line-84"></a><span class="p">{</span>
-<a name="line-85"></a> <span class="n">sortRole</span> <span class="o">=</span> <span class="n">role</span><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">sortOrder</span> <span class="o">==</span> <span class="n">DefaultOrder</span><span class="p">)</span>
-<a name="line-88"></a> <span class="p">{</span>
-<a name="line-89"></a> <span class="n">currentSortOrder</span> <span class="o">=</span> <span class="n">defaultSortOrderForSortRole</span><span class="p">(</span><span class="n">sortRole</span><span class="p">);</span>
-<a name="line-90"></a> <span class="p">}</span>
-<a name="line-91"></a><span class="p">}</span>
-<a name="line-92"></a>
-<a name="line-93"></a><span class="kt">void</span> <span class="n">ShowfotoItemSortSettings</span><span class="o">::</span><span class="n">setSortOrder</span><span class="p">(</span><span class="n">SortOrder</span> <span class="n">order</span><span class="p">)</span>
-<a name="line-94"></a><span class="p">{</span>
-<a name="line-95"></a> <span class="n">sortOrder</span> <span class="o">=</span> <span class="n">order</span><span class="p">;</span>
-<a name="line-96"></a>
-<a name="line-97"></a> <span class="k">if</span> <span class="p">(</span><span class="n">sortOrder</span> <span class="o">==</span> <span class="n">DefaultOrder</span><span class="p">)</span>
-<a name="line-98"></a> <span class="p">{</span>
-<a name="line-99"></a> <span class="n">currentSortOrder</span> <span class="o">=</span> <span class="n">defaultSortOrderForSortRole</span><span class="p">(</span><span class="n">sortRole</span><span class="p">);</span>
-<a name="line-100"></a> <span class="p">}</span>
-<a name="line-101"></a> <span class="k">else</span>
-<a name="line-102"></a> <span class="p">{</span>
-<a name="line-103"></a> <span class="n">currentSortOrder</span> <span class="o">=</span> <span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">SortOrder</span><span class="p">)</span><span class="n">order</span><span class="p">;</span>
-<a name="line-104"></a> <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">Qt</span><span class="o">::</span><span class="n">SortOrder</span> <span class="n">ShowfotoItemSortSettings</span><span class="o">::</span><span class="n">defaultSortOrderForCategorizationMode</span><span class="p">(</span><span class="n">CategorizationMode</span> <span class="n">mode</span><span class="p">)</span>
-<a name="line-108"></a><span class="p">{</span>
-<a name="line-109"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">mode</span><span class="p">)</span>
-<a name="line-110"></a> <span class="p">{</span>
-<a name="line-111"></a> <span class="k">case</span> <span class="nl">NoCategories</span><span class="p">:</span>
-<a name="line-112"></a> <span class="k">case</span> <span class="nl">CategoryByFolder</span><span class="p">:</span>
-<a name="line-113"></a> <span class="k">case</span> <span class="nl">CategoryByFormat</span><span class="p">:</span>
-<a name="line-114"></a> <span class="k">default</span><span class="o">:</span>
-<a name="line-115"></a> <span class="k">return</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AscendingOrder</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-83"></a><span class="c1">// --- ShowfotoThumbnailDelegate ----------------------------------------------------</span>
+<a name="line-84"></a>
+<a name="line-85"></a><span class="n">class</span> <span class="n">Q_DECL_HIDDEN</span> <span class="nl">ShowfotoThumbnailDelegatePrivate</span> <span class="p">:</span> <span class="n">public</span> <span class="n">ShowfotoDelegate</span><span class="o">::</span><span class="n">ShowfotoDelegatePrivate</span>
+<a name="line-86"></a><span class="p">{</span>
+<a name="line-87"></a><span class="nl">public</span><span class="p">:</span>
+<a name="line-88"></a>
+<a name="line-89"></a> <span class="n">ShowfotoThumbnailDelegatePrivate</span><span class="p">()</span>
+<a name="line-90"></a> <span class="p">{</span>
+<a name="line-91"></a><span class="hll"> <span class="n">flow</span> <span class="o">=</span> <span class="n">QListView</span><span class="o">::</span><span class="n">LeftToRight</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'flow' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;flow&apos; a value by passing the value to the constructor in the initialization list.</div></div>
+</span><a name="line-92"></a>
+<a name="line-93"></a> <span class="c1">// switch off drawing of frames</span>
+<a name="line-94"></a> <span class="n">drawMouseOverFrame</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-95"></a> <span class="n">drawFocusFrame</span> <span class="o">=</span> <span class="nb">false</span><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">void</span> <span class="n">init</span><span class="p">(</span><span class="n">ShowfotoThumbnailDelegate</span><span class="o">*</span> <span class="k">const</span> <span class="n">q</span><span class="p">);</span>
+<a name="line-99"></a>
+<a name="line-100"></a><span class="nl">public</span><span class="p">:</span>
+<a name="line-101"></a>
+<a name="line-102"></a> <span class="n">QListView</span><span class="o">::</span><span class="n">Flow</span> <span class="n">flow</span><span class="p">;</span>
+<a name="line-103"></a> <span class="n">QRect</span> <span class="n">viewSize</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">// --- ShowfotoNormalDelegate ----------------------------------------------------</span>
+<a name="line-107"></a>
+<a name="line-108"></a><span class="n">class</span> <span class="n">Q_DECL_HIDDEN</span> <span class="nl">ShowfotoNormalDelegatePrivate</span> <span class="p">:</span> <span class="n">public</span> <span class="n">ShowfotoDelegate</span><span class="o">::</span><span class="n">ShowfotoDelegatePrivate</span>
+<a name="line-109"></a><span class="p">{</span>
+<a name="line-110"></a><span class="nl">public</span><span class="p">:</span>
+<a name="line-111"></a>
+<a name="line-112"></a> <span class="n">ShowfotoNormalDelegatePrivate</span><span class="p">()</span>
+<a name="line-113"></a> <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="kt">void</span> <span class="n">init</span><span class="p">(</span><span class="n">ShowfotoNormalDelegate</span><span class="o">*</span> <span class="k">const</span> <span class="n">q</span><span class="p">,</span> <span class="n">ShowfotoThumbnailBar</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="p">};</span>
<a name="line-118"></a>
-<a name="line-119"></a><span class="n">Qt</span><span class="o">::</span><span class="n">SortOrder</span> <span class="n">ShowfotoItemSortSettings</span><span class="o">::</span><span class="n">defaultSortOrderForSortRole</span><span class="p">(</span><span class="n">SortRole</span> <span class="n">role</span><span class="p">)</span>
-<a name="line-120"></a><span class="p">{</span>
-<a name="line-121"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">role</span><span class="p">)</span>
-<a name="line-122"></a> <span class="p">{</span>
-<a name="line-123"></a> <span class="k">case</span> <span class="nl">SortByFileName</span><span class="p">:</span>
-<a name="line-124"></a> <span class="k">case</span> <span class="nl">SortByFileSize</span><span class="p">:</span>
-<a name="line-125"></a> <span class="k">return</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DescendingOrder</span><span class="p">;</span>
-<a name="line-126"></a> <span class="k">case</span> <span class="nl">SortByCreationDate</span><span class="p">:</span>
-<a name="line-127"></a> <span class="k">return</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AscendingOrder</span><span class="p">;</span>
-<a name="line-128"></a> <span class="k">default</span><span class="o">:</span>
-<a name="line-129"></a> <span class="k">return</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AscendingOrder</span><span class="p">;</span>
-<a name="line-130"></a> <span class="p">}</span>
-<a name="line-131"></a><span class="p">}</span>
-<a name="line-132"></a>
-<a name="line-133"></a><span class="kt">int</span> <span class="n">ShowfotoItemSortSettings</span><span class="o">::</span><span class="n">compareCategories</span><span class="p">(</span><span class="k">const</span> <span class="n">ShowfotoItemInfo</span><span class="o">&amp;</span> <span class="n">left</span><span class="p">,</span> <span class="k">const</span> <span class="n">ShowfotoItemInfo</span><span class="o">&amp;</span> <span class="n">right</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-134"></a><span class="p">{</span>
-<a name="line-135"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">categorizationMode</span><span class="p">)</span>
-<a name="line-136"></a> <span class="p">{</span>
-<a name="line-137"></a> <span class="k">case</span> <span class="nl">NoCategories</span><span class="p">:</span>
-<a name="line-138"></a> <span class="k">case</span> <span class="nl">CategoryByFolder</span><span class="p">:</span>
-<a name="line-139"></a> <span class="k">return</span> <span class="n">naturalCompare</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">folder</span><span class="p">,</span> <span class="n">right</span><span class="p">.</span><span class="n">folder</span><span class="p">,</span> <span class="n">currentCategorizationSortOrder</span><span class="p">,</span> <span class="n">categorizationCaseSensitivity</span><span class="p">);</span>
-<a name="line-140"></a> <span class="k">case</span> <span class="nl">CategoryByFormat</span><span class="p">:</span>
-<a name="line-141"></a> <span class="k">return</span> <span class="n">naturalCompare</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">mime</span><span class="p">,</span> <span class="n">right</span><span class="p">.</span><span class="n">mime</span><span class="p">,</span> <span class="n">currentCategorizationSortOrder</span><span class="p">,</span> <span class="n">categorizationCaseSensitivity</span><span class="p">);</span>
-<a name="line-142"></a> <span class="k">default</span><span class="o">:</span>
-<a name="line-143"></a> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-144"></a> <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="kt">bool</span> <span class="n">ShowfotoItemSortSettings</span><span class="o">::</span><span class="n">lessThan</span><span class="p">(</span><span class="k">const</span> <span class="n">ShowfotoItemInfo</span><span class="o">&amp;</span> <span class="n">left</span><span class="p">,</span> <span class="k">const</span> <span class="n">ShowfotoItemInfo</span><span class="o">&amp;</span> <span class="n">right</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="kt">int</span> <span class="n">result</span> <span class="o">=</span> <span class="n">compare</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">sortRole</span><span class="p">);</span>
-<a name="line-150"></a>
-<a name="line-151"></a> <span class="k">if</span> <span class="p">(</span><span class="n">result</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-152"></a> <span class="p">{</span>
-<a name="line-153"></a> <span class="k">return</span> <span class="n">result</span> <span class="o">&lt;</span> <span class="mi">0</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="k">if</span> <span class="p">(</span><span class="n">left</span> <span class="o">==</span> <span class="n">right</span><span class="p">)</span>
-<a name="line-157"></a> <span class="p">{</span>
-<a name="line-158"></a> <span class="k">return</span> <span class="nb">false</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="k">if</span> <span class="p">((</span><span class="n">result</span> <span class="o">=</span> <span class="n">compare</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">SortByFileName</span><span class="p">))</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-162"></a> <span class="p">{</span>
-<a name="line-163"></a> <span class="k">return</span> <span class="n">result</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-164"></a> <span class="p">}</span>
-<a name="line-165"></a>
-<a name="line-166"></a> <span class="k">if</span> <span class="p">((</span><span class="n">result</span> <span class="o">=</span> <span class="n">compare</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">SortByCreationDate</span><span class="p">))</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">return</span> <span class="n">result</span> <span class="o">&lt;</span> <span class="mi">0</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="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-172"></a><span class="p">}</span>
-<a name="line-173"></a>
-<a name="line-174"></a><span class="kt">int</span> <span class="n">ShowfotoItemSortSettings</span><span class="o">::</span><span class="n">compare</span><span class="p">(</span><span class="k">const</span> <span class="n">ShowfotoItemInfo</span><span class="o">&amp;</span> <span class="n">left</span><span class="p">,</span> <span class="k">const</span> <span class="n">ShowfotoItemInfo</span><span class="o">&amp;</span> <span class="n">right</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-175"></a><span class="p">{</span>
-<a name="line-176"></a> <span class="k">return</span> <span class="n">compare</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">sortRole</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">int</span> <span class="n">ShowfotoItemSortSettings</span><span class="o">::</span><span class="n">compare</span><span class="p">(</span><span class="k">const</span> <span class="n">ShowfotoItemInfo</span><span class="o">&amp;</span> <span class="n">left</span><span class="p">,</span> <span class="k">const</span> <span class="n">ShowfotoItemInfo</span><span class="o">&amp;</span> <span class="n">right</span><span class="p">,</span> <span class="n">SortRole</span> <span class="n">role</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-180"></a><span class="p">{</span>
-<a name="line-181"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">role</span><span class="p">)</span>
-<a name="line-182"></a> <span class="p">{</span>
-<a name="line-183"></a> <span class="k">case</span> <span class="nl">SortByFileName</span><span class="p">:</span>
-<a name="line-184"></a> <span class="k">return</span> <span class="n">naturalCompare</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">name</span><span class="p">,</span> <span class="n">right</span><span class="p">.</span><span class="n">name</span><span class="p">,</span> <span class="n">currentSortOrder</span><span class="p">,</span> <span class="n">sortCaseSensitivity</span><span class="p">);</span>
-<a name="line-185"></a> <span class="k">case</span> <span class="nl">SortByFileSize</span><span class="p">:</span>
-<a name="line-186"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">size</span><span class="p">,</span> <span class="n">right</span><span class="p">.</span><span class="n">size</span><span class="p">,</span> <span class="n">currentSortOrder</span><span class="p">);</span>
-<a name="line-187"></a> <span class="c1">//FIXME: Change it to creation date instead of modification date.</span>
-<a name="line-188"></a> <span class="c1">//TODO : complete the needed functions</span>
-<a name="line-189"></a> <span class="k">case</span> <span class="nl">SortByCreationDate</span><span class="p">:</span>
-<a name="line-190"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">ctime</span><span class="p">,</span> <span class="n">right</span><span class="p">.</span><span class="n">ctime</span><span class="p">,</span> <span class="n">currentSortOrder</span><span class="p">);</span>
-<a name="line-191"></a> <span class="k">default</span><span class="o">:</span>
-<a name="line-192"></a> <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
-<a name="line-193"></a> <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="kt">bool</span> <span class="n">ShowfotoItemSortSettings</span><span class="o">::</span><span class="n">lessThan</span><span class="p">(</span><span class="k">const</span> <span class="n">QVariant</span><span class="o">&amp;</span> <span class="n">left</span><span class="p">,</span> <span class="k">const</span> <span class="n">QVariant</span><span class="o">&amp;</span> <span class="n">right</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-197"></a><span class="p">{</span>
-<a name="line-198"></a> <span class="k">if</span> <span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">type</span><span class="p">()</span> <span class="o">!=</span> <span class="n">right</span><span class="p">.</span><span class="n">type</span><span class="p">())</span>
-<a name="line-199"></a> <span class="p">{</span>
-<a name="line-200"></a> <span class="k">return</span> <span class="nb">false</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="k">switch</span> <span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">type</span><span class="p">())</span>
-<a name="line-204"></a> <span class="p">{</span>
-<a name="line-205"></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-206"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">toInt</span><span class="p">(),</span> <span class="n">right</span><span class="p">.</span><span class="n">toInt</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">);</span>
-<a name="line-207"></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-208"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">toUInt</span><span class="p">(),</span> <span class="n">right</span><span class="p">.</span><span class="n">toUInt</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">);</span>
-<a name="line-209"></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-210"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">toLongLong</span><span class="p">(),</span> <span class="n">right</span><span class="p">.</span><span class="n">toLongLong</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">);</span>
-<a name="line-211"></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-212"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">toULongLong</span><span class="p">(),</span> <span class="n">right</span><span class="p">.</span><span class="n">toULongLong</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">);</span>
-<a name="line-213"></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-214"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">toDouble</span><span class="p">(),</span> <span class="n">right</span><span class="p">.</span><span class="n">toDouble</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">);</span>
-<a name="line-215"></a><span class="c1">// case QVariant::Date:</span>
-<a name="line-216"></a><span class="c1">// return compareByOrder(left.toDate(), right.toDate(), currentSortOrder);</span>
-<a name="line-217"></a><span class="c1">// case QVariant::DateTime:</span>
-<a name="line-218"></a><span class="c1">// return compareByOrder(left.toDateTime(), right.toDateTime(), currentSortOrder);</span>
-<a name="line-219"></a><span class="c1">// case QVariant::Time:</span>
-<a name="line-220"></a><span class="c1">// return compareByOrder(left.toTime(), right.toTime(), currentSortOrder);</span>
-<a name="line-221"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">Rect</span><span class="p">:</span>
-<a name="line-222"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">RectF</span><span class="p">:</span>
-<a name="line-223"></a> <span class="p">{</span>
-<a name="line-224"></a> <span class="n">QRectF</span> <span class="n">rectLeft</span> <span class="o">=</span> <span class="n">left</span><span class="p">.</span><span class="n">toRectF</span><span class="p">();</span>
-<a name="line-225"></a> <span class="n">QRectF</span> <span class="n">rectRight</span> <span class="o">=</span> <span class="n">right</span><span class="p">.</span><span class="n">toRectF</span><span class="p">();</span>
-<a name="line-226"></a> <span class="kt">int</span> <span class="n">result</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">result</span> <span class="o">=</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">rectLeft</span><span class="p">.</span><span class="n">top</span><span class="p">(),</span> <span class="n">rectRight</span><span class="p">.</span><span class="n">top</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">))</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-229"></a> <span class="p">{</span>
-<a name="line-230"></a> <span class="k">return</span> <span class="n">result</span> <span class="o">&lt;</span> <span class="mi">0</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">if</span> <span class="p">((</span><span class="n">result</span> <span class="o">=</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">rectLeft</span><span class="p">.</span><span class="n">left</span><span class="p">(),</span> <span class="n">rectRight</span><span class="p">.</span><span class="n">left</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">))</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-234"></a> <span class="p">{</span>
-<a name="line-235"></a> <span class="k">return</span> <span class="n">result</span> <span class="o">&lt;</span> <span class="mi">0</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">QSizeF</span> <span class="n">sizeLeft</span> <span class="o">=</span> <span class="n">rectLeft</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
-<a name="line-239"></a> <span class="n">QSizeF</span> <span class="n">sizeRight</span> <span class="o">=</span> <span class="n">rectRight</span><span class="p">.</span><span class="n">size</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">result</span> <span class="o">=</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">sizeLeft</span><span class="p">.</span><span class="n">width</span><span class="p">()</span><span class="o">*</span><span class="n">sizeLeft</span><span class="p">.</span><span class="n">height</span><span class="p">(),</span> <span class="n">sizeRight</span><span class="p">.</span><span class="n">width</span><span class="p">()</span><span class="o">*</span><span class="n">sizeRight</span><span class="p">.</span><span class="n">height</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">))</span> <span class="o">!=</span> <span class="mi">0</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="n">result</span> <span class="o">&lt;</span> <span class="mi">0</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="cp">#if __GNUC__ &gt;= 7 </span><span class="c1">// krazy:exclude=cpp</span>
-<a name="line-247"></a> <span class="p">[[</span><span class="n">fallthrough</span><span class="p">]];</span>
-<a name="line-248"></a><span class="cp">#endif</span>
-<a name="line-249"></a> <span class="p">}</span>
-<a name="line-250"></a> <span class="k">default</span><span class="o">:</span>
-<a name="line-251"></a> <span class="p">{</span>
-<a name="line-252"></a> <span class="k">return</span> <span class="n">naturalCompare</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">toString</span><span class="p">(),</span> <span class="n">right</span><span class="p">.</span><span class="n">toString</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">,</span> <span class="n">sortCaseSensitivity</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><span class="p">}</span>
-<a name="line-256"></a>
-<a name="line-257"></a><span class="p">}</span> <span class="c1">// namespace Showfoto</span>
+<a name="line-119"></a><span class="p">}</span> <span class="c1">// namespace Showfoto</span>
+<a name="line-120"></a>
+<a name="line-121"></a><span class="cp">#endif </span><span class="c1">// SHOW_FOTO_DELEGATE_P_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/49.html b/static/reports/cppcheck/master/49.html
index 620432ace..31c4fed4b 100644
--- a/static/reports/cppcheck/master/49.html
+++ b/static/reports/cppcheck/master/49.html
@@ -1,1767 +1,1767 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/tests/albummodel/albummodeltest.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/tests/albummodel/albummodeltest.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> albummodeltest.cpp</p>
<a href='49.html#line-208'> shadowVar 208</a><a href='49.html#line-208'> shadowVar 208</a><a href='49.html#line-208'> shadowVar 208</a><a href='49.html#line-208'> shadowVar 208</a><a href='49.html#line-208'> shadowVar 208</a><a href='49.html#line-208'> shadowVar 208</a><a href='49.html#line-208'> shadowVar 208</a><a href='49.html#line-208'> shadowVar 208</a><a href='49.html#line-208'> shadowVar 208</a><a href='49.html#line-208'> shadowVar 208</a><a href='49.html#line-219'> shadowVar 219</a><a href='49.html#line-220'> shadowVar 220</a><a href='49.html#line-222'> shadowVar 222</a><a href='49.html#line-224'> shadowVar 224</a><a href='49.html#line-238'> shadowVar 238</a><a href='49.html#line-239'> shadowVar 239</a><a href='49.html#line-241'> shadowVar 241</a><a href='49.html#line-242'> shadowVar 242</a><a href='49.html#line-244'> shadowVar 244</a><a href='49.html#line-246'> shadowVar 246</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</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-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/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="cm">/**</span>
<a name="line-78"></a><span class="cm"> * TODO: this test case needs to be removed, since it depends on database,</span>
<a name="line-79"></a><span class="cm"> * threading etc, therefore it is not predictable and very hard to fix</span>
<a name="line-80"></a><span class="cm"> */</span>
<a name="line-81"></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-82"></a><span class="p">{</span>
<a name="line-83"></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-84"></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-85"></a>
<a name="line-86"></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-87"></a> <span class="p">{</span>
<a name="line-88"></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-89"></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-90"></a> <span class="p">}</span>
<a name="line-91"></a>
<a name="line-92"></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-93"></a>
<a name="line-94"></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-95"></a>
<a name="line-96"></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-97"></a>
<a name="line-98"></a> <span class="c1">// use a testing database</span>
<a name="line-99"></a> <span class="n">AlbumManager</span><span class="o">::</span><span class="n">instance</span><span class="p">();</span>
<a name="line-100"></a>
<a name="line-101"></a> <span class="c1">// catch palbum counts for waiting</span>
<a name="line-102"></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-103"></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-104"></a>
<a name="line-105"></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-106"></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-107"></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-108"></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-109"></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-110"></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-111"></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-112"></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-113"></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-114"></a>
<a name="line-115"></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-116"></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-117"></a>
<a name="line-118"></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-119"></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-120"></a>
<a name="line-121"></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-122"></a> <span class="p">{</span>
<a name="line-123"></a> <span class="k">if</span> <span class="p">(</span><span class="n">a</span><span class="p">)</span>
<a name="line-124"></a> <span class="p">{</span>
<a name="line-125"></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-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">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-130"></a><span class="p">}</span>
<a name="line-131"></a>
<a name="line-132"></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-133"></a><span class="p">{</span>
<a name="line-134"></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-135"></a>
<a name="line-136"></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-137"></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-138"></a> <span class="n">ThumbnailLoadThread</span><span class="o">::</span><span class="n">cleanUp</span><span class="p">();</span>
<a name="line-139"></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-140"></a> <span class="n">LoadingCacheInterface</span><span class="o">::</span><span class="n">cleanUp</span><span class="p">();</span>
<a name="line-141"></a>
<a name="line-142"></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-143"></a> <span class="n">dir</span><span class="p">.</span><span class="n">removeRecursively</span><span class="p">();</span>
<a name="line-144"></a>
<a name="line-145"></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-146"></a><span class="p">}</span>
<a name="line-147"></a>
<a name="line-148"></a><span class="c1">// Qt test doesn&#39;t use exceptions, so using assertion macros in methods called</span>
<a name="line-149"></a><span class="c1">// from a test slot doesn&#39;t stop the test method and may result in inconsistent</span>
<a name="line-150"></a><span class="c1">// data or segfaults. Therefore use macros for these functions.</span>
<a name="line-151"></a>
<a name="line-152"></a><span class="cp">#define safeCreatePAlbum(parent, name, result) \</span>
<a name="line-153"></a><span class="cp">{ \</span>
<a name="line-154"></a><span class="cp"> QString error; \</span>
<a name="line-155"></a><span class="cp"> result = AlbumManager::instance()-&gt;createPAlbum(parent, name, name, \</span>
<a name="line-156"></a><span class="cp"> QDate::currentDate(), albumCategory, error); \</span>
<a name="line-157"></a><span class="cp"> QVERIFY2(result, QString::fromUtf8(&quot;Error creating PAlbum for test: %1&quot;).arg(error).toLatin1().constData()); \</span>
<a name="line-158"></a><span class="cp">}</span>
<a name="line-159"></a>
<a name="line-160"></a><span class="cp">#define safeCreateTAlbum(parent, name, result) \</span>
<a name="line-161"></a><span class="cp">{ \</span>
<a name="line-162"></a><span class="cp"> QString error; \</span>
<a name="line-163"></a><span class="cp"> result = AlbumManager::instance()-&gt;createTAlbum(parent, name, QLatin1String(&quot;&quot;), error); \</span>
<a name="line-164"></a><span class="cp"> QVERIFY2(result, QString::fromUtf8(&quot;Error creating TAlbum for test: %1&quot;).arg(error).toLatin1().constData()); \</span>
<a name="line-165"></a><span class="cp">}</span>
<a name="line-166"></a>
<a name="line-167"></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-168"></a><span class="p">{</span>
<a name="line-169"></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-170"></a>
<a name="line-171"></a> <span class="n">palbumCountMap</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-172"></a>
<a name="line-173"></a> <span class="c1">// create a model to check that model work is done correctly while scanning</span>
<a name="line-174"></a> <span class="n">addedIds</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-175"></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-176"></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-177"></a>
<a name="line-178"></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-179"></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-180"></a>
<a name="line-181"></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-182"></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-183"></a>
<a name="line-184"></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-185"></a>
<a name="line-186"></a> <span class="c1">// ensure that this model is empty in the beginning except for the root</span>
<a name="line-187"></a> <span class="c1">// album and the collection that include trash</span>
<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> <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-200"></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-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;root1&quot;</span><span class="p">));</span>
<a name="line-202"></a>
<a name="line-203"></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-204"></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-205"></a>
<a name="line-206"></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-207"></a>
<a name="line-208"></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-209"></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-210"></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-211"></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-212"></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-213"></a>
<a name="line-214"></a> <span class="c1">// Create some more through AlbumManager</span>
<a name="line-215"></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-216"></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-217"></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-218"></a>
<a name="line-219"></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-220"></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-221"></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-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">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-223"></a>
<a name="line-224"></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-225"></a>
<a name="line-226"></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-227"></a>
<a name="line-228"></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-229"></a> <span class="p">{</span>
<a name="line-230"></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-231"></a> <span class="p">}</span>
<a name="line-232"></a>
<a name="line-233"></a> <span class="c1">// tags</span>
<a name="line-234"></a>
<a name="line-235"></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-236"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">rootTag</span><span class="p">);</span>
<a name="line-237"></a>
<a name="line-238"></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-239"></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-240"></a>
<a name="line-241"></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-242"></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-243"></a>
<a name="line-244"></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-245"></a>
<a name="line-246"></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-247"></a>
<a name="line-248"></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-249"></a>
<a name="line-250"></a> <span class="c1">// add some images for having date albums</span>
<a name="line-251"></a>
<a name="line-252"></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-253"></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-254"></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-255"></a>
<a name="line-256"></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-257"></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-258"></a>
<a name="line-259"></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-260"></a> <span class="p">{</span>
<a name="line-261"></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-262"></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-263"></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-264"></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-265"></a> <span class="p">}</span>
<a name="line-266"></a>
<a name="line-267"></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-268"></a>
<a name="line-269"></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-270"></a> <span class="p">{</span>
<a name="line-271"></a> <span class="n">ensureItemCounts</span><span class="p">();</span>
<a name="line-272"></a> <span class="p">}</span>
<a name="line-273"></a>
<a name="line-274"></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-275"></a>
<a name="line-276"></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-277"></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-278"></a> <span class="c1">// ensure that there is a root date album</span>
<a name="line-279"></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-280"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">rootFromAlbumManager</span><span class="p">);</span>
<a name="line-281"></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-282"></a>
<a name="line-283"></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-284"></a> <span class="p">{</span>
<a name="line-285"></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-286"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">dAlbum</span><span class="p">);</span>
<a name="line-287"></a>
<a name="line-288"></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-289"></a> <span class="p">{</span>
<a name="line-290"></a> <span class="n">rootFromList</span> <span class="o">=</span> <span class="n">dAlbum</span><span class="p">;</span>
<a name="line-291"></a> <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="n">QVERIFY</span><span class="p">(</span><span class="n">rootFromList</span><span class="p">);</span>
<a name="line-295"></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-296"></a><span class="p">}</span>
<a name="line-297"></a>
<a name="line-298"></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-299"></a><span class="p">{</span>
<a name="line-300"></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-301"></a>
<a name="line-302"></a> <span class="c1">// verify that the start album model got all these changes</span>
<a name="line-303"></a>
<a name="line-304"></a> <span class="c1">// one root</span>
<a name="line-305"></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-306"></a> <span class="c1">// one collection</span>
<a name="line-307"></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-308"></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-309"></a> <span class="c1">// two albums in the collection</span>
<a name="line-310"></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-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="n">collectionIndex</span><span class="p">),</span> <span class="mi">3</span><span class="p">);</span>
<a name="line-312"></a> <span class="c1">// this is should be enough for now</span>
<a name="line-313"></a>
<a name="line-314"></a> <span class="c1">// We must have received an added notation for everything except album root</span>
<a name="line-315"></a> <span class="c1">// and collection</span>
<a name="line-316"></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-317"></a><span class="p">}</span>
<a name="line-318"></a>
<a name="line-319"></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-320"></a><span class="p">{</span>
<a name="line-321"></a> <span class="c1">// trigger listing job</span>
<a name="line-322"></a> <span class="n">QEventLoop</span> <span class="n">dAlbumLoop</span><span class="p">;</span>
<a name="line-323"></a>
<a name="line-324"></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-325"></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-326"></a>
<a name="line-327"></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-328"></a> <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="s">&quot;Waiting for AlbumManager and the IOSlave to create DAlbums...&quot;</span><span class="p">;</span>
<a name="line-329"></a> <span class="n">dAlbumLoop</span><span class="p">.</span><span class="n">exec</span><span class="p">();</span>
<a name="line-330"></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-331"></a>
<a name="line-332"></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-333"></a> <span class="p">{</span>
<a name="line-334"></a> <span class="n">QEventLoop</span> <span class="n">pAlbumLoop</span><span class="p">;</span>
<a name="line-335"></a>
<a name="line-336"></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-337"></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-338"></a>
<a name="line-339"></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-340"></a> <span class="n">pAlbumLoop</span><span class="p">.</span><span class="n">exec</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;Got new PAlbum count map&quot;</span><span class="p">;</span>
<a name="line-342"></a> <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">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-346"></a><span class="p">{</span>
<a name="line-347"></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-348"></a>
<a name="line-349"></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-350"></a> <span class="p">{</span>
<a name="line-351"></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-352"></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-353"></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-354"></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-355"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">album</span><span class="p">);</span>
<a name="line-356"></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-357"></a> <span class="o">&lt;&lt;</span> <span class="n">id</span>
<a name="line-358"></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-359"></a> <span class="n">addedIds</span> <span class="o">&lt;&lt;</span> <span class="n">id</span><span class="p">;</span>
<a name="line-360"></a> <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="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-364"></a><span class="p">{</span>
<a name="line-365"></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="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="o">++</span><span class="n">row</span><span class="p">)</span>
<a name="line-366"></a> <span class="p">{</span>
<a name="line-367"></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-368"></a>
<a name="line-369"></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-370"></a> <span class="p">{</span>
<a name="line-371"></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-372"></a> <span class="k">continue</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="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-376"></a>
<a name="line-377"></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-378"></a> <span class="p">{</span>
<a name="line-379"></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-380"></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-381"></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-382"></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-383"></a> <span class="p">}</span>
<a name="line-384"></a> <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">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-388"></a><span class="p">{</span>
<a name="line-389"></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-390"></a> <span class="n">dir</span><span class="p">.</span><span class="n">removeRecursively</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="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-394"></a><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="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-396"></a> <span class="n">palbumCountMap</span> <span class="o">=</span> <span class="n">map</span><span class="p">;</span>
<a name="line-397"></a><span class="p">}</span>
<a name="line-398"></a>
<a name="line-399"></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-400"></a><span class="p">{</span>
<a name="line-401"></a> <span class="k">if</span> <span class="p">(</span><span class="n">startModel</span><span class="p">)</span>
<a name="line-402"></a> <span class="p">{</span>
<a name="line-403"></a> <span class="n">disconnect</span><span class="p">(</span><span class="n">startModel</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="k">delete</span> <span class="n">startModel</span><span class="p">;</span>
<a name="line-407"></a> <span class="n">addedIds</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-408"></a>
<a name="line-409"></a> <span class="c1">// remove all test data</span>
<a name="line-410"></a>
<a name="line-411"></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-412"></a>
<a name="line-413"></a> <span class="c1">// remove all palbums&#39; directories</span>
<a name="line-414"></a> <span class="n">deletePAlbum</span><span class="p">(</span><span class="n">palbumRoot0</span><span class="p">);</span>
<a name="line-415"></a> <span class="n">deletePAlbum</span><span class="p">(</span><span class="n">palbumRoot1</span><span class="p">);</span>
<a name="line-416"></a> <span class="n">deletePAlbum</span><span class="p">(</span><span class="n">palbumRoot2</span><span class="p">);</span>
<a name="line-417"></a>
<a name="line-418"></a> <span class="c1">// take over changes to database</span>
<a name="line-419"></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-420"></a>
<a name="line-421"></a> <span class="c1">// reread from database</span>
<a name="line-422"></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-423"></a>
<a name="line-424"></a> <span class="c1">// root + one collection</span>
<a name="line-425"></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-426"></a>
<a name="line-427"></a> <span class="c1">// remove all tags</span>
<a name="line-428"></a>
<a name="line-429"></a> <span class="n">QString</span> <span class="n">error</span><span class="p">;</span>
<a name="line-430"></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-431"></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-432"></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-433"></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-434"></a>
<a name="line-435"></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-436"></a><span class="p">}</span>
<a name="line-437"></a>
<a name="line-438"></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-439"></a><span class="p">{</span>
<a name="line-440"></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-441"></a>
<a name="line-442"></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-443"></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-444"></a> <span class="k">delete</span> <span class="n">test</span><span class="p">;</span>
<a name="line-445"></a> <span class="k">delete</span> <span class="n">albumModel</span><span class="p">;</span>
<a name="line-446"></a>
<a name="line-447"></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-448"></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-449"></a> <span class="k">delete</span> <span class="n">test</span><span class="p">;</span>
<a name="line-450"></a> <span class="k">delete</span> <span class="n">albumModel</span><span class="p">;</span>
<a name="line-451"></a><span class="p">}</span>
<a name="line-452"></a>
<a name="line-453"></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-454"></a><span class="p">{</span>
<a name="line-455"></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-456"></a>
<a name="line-457"></a> <span class="n">AlbumModel</span> <span class="n">albumModel</span><span class="p">;</span>
<a name="line-458"></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-459"></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-460"></a>
<a name="line-461"></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-462"></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-463"></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-464"></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-465"></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-466"></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-467"></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-468"></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-469"></a>
<a name="line-470"></a> <span class="c1">// ensure that all albums except the root album have a count attached</span>
<a name="line-471"></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-472"></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-473"></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-474"></a>
<a name="line-475"></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-476"></a> <span class="p">{</span>
<a name="line-477"></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-478"></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-479"></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-480"></a>
<a name="line-481"></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-482"></a> <span class="p">{</span>
<a name="line-483"></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-484"></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-485"></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-486"></a> <span class="p">}</span>
<a name="line-487"></a>
<a name="line-488"></a> <span class="p">}</span>
<a name="line-489"></a>
<a name="line-490"></a> <span class="c1">// now disable showing the count</span>
<a name="line-491"></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-492"></a>
<a name="line-493"></a> <span class="c1">// ensure that no album has a count attached</span>
<a name="line-494"></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-495"></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-496"></a>
<a name="line-497"></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-498"></a> <span class="p">{</span>
<a name="line-499"></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-500"></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-501"></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-502"></a>
<a name="line-503"></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-504"></a> <span class="p">{</span>
<a name="line-505"></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-506"></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-507"></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-508"></a> <span class="p">}</span>
<a name="line-509"></a> <span class="p">}</span>
<a name="line-510"></a><span class="p">}</span>
<a name="line-511"></a>
<a name="line-512"></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-513"></a><span class="p">{</span>
<a name="line-514"></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-515"></a>
<a name="line-516"></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-517"></a> <span class="n">ensureItemCounts</span><span class="p">();</span>
<a name="line-518"></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-519"></a> <span class="k">delete</span> <span class="n">test</span><span class="p">;</span>
<a name="line-520"></a> <span class="k">delete</span> <span class="n">albumModel</span><span class="p">;</span>
<a name="line-521"></a><span class="p">}</span>
<a name="line-522"></a>
<a name="line-523"></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-524"></a><span class="p">{</span>
<a name="line-525"></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-526"></a>
<a name="line-527"></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-528"></a> <span class="n">ensureItemCounts</span><span class="p">();</span>
<a name="line-529"></a>
<a name="line-530"></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-531"></a>
<a name="line-532"></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-533"></a> <span class="p">{</span>
<a name="line-534"></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-535"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">dAlbum</span><span class="p">);</span>
<a name="line-536"></a>
<a name="line-537"></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-538"></a>
<a name="line-539"></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-540"></a>
<a name="line-541"></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-542"></a> <span class="p">{</span>
<a name="line-543"></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-544"></a> <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">dAlbum</span><span class="o">-&gt;</span><span class="n">isRoot</span><span class="p">())</span>
<a name="line-547"></a> <span class="p">{</span>
<a name="line-548"></a> <span class="c1">// root album</span>
<a name="line-549"></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-550"></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-551"></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-552"></a> <span class="p">}</span>
<a name="line-553"></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-554"></a> <span class="p">{</span>
<a name="line-555"></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-556"></a> <span class="p">}</span>
<a name="line-557"></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-558"></a> <span class="p">{</span>
<a name="line-559"></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-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">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-562"></a> <span class="p">{</span>
<a name="line-563"></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-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">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-566"></a> <span class="p">{</span>
<a name="line-567"></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-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">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-570"></a> <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">0</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">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-574"></a> <span class="p">{</span>
<a name="line-575"></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-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">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-578"></a> <span class="p">{</span>
<a name="line-579"></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-580"></a> <span class="p">}</span>
<a name="line-581"></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-582"></a> <span class="p">{</span>
<a name="line-583"></a> <span class="c1">// Ignore these albums for order testing</span>
<a name="line-584"></a> <span class="p">}</span>
<a name="line-585"></a> <span class="k">else</span>
<a name="line-586"></a> <span class="p">{</span>
<a name="line-587"></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-588"></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-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">delete</span> <span class="n">albumModel</span><span class="p">;</span>
<a name="line-593"></a><span class="p">}</span>
<a name="line-594"></a>
<a name="line-595"></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-596"></a><span class="p">{</span>
<a name="line-597"></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-598"></a>
<a name="line-599"></a> <span class="n">DateAlbumModel</span> <span class="n">dateAlbumModel</span><span class="p">;</span>
<a name="line-600"></a> <span class="n">AlbumFilterModel</span> <span class="n">albumModel</span><span class="p">;</span>
<a name="line-601"></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-602"></a>
<a name="line-603"></a> <span class="c1">// first check ascending order</span>
<a name="line-604"></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-605"></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-606"></a>
<a name="line-607"></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-608"></a> <span class="p">{</span>
<a name="line-609"></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-610"></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-611"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">yearAlbum</span><span class="p">);</span>
<a name="line-612"></a>
<a name="line-613"></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-614"></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-615"></a>
<a name="line-616"></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-617"></a>
<a name="line-618"></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-619"></a> <span class="p">{</span>
<a name="line-620"></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-621"></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-622"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">monthAlbum</span><span class="p">);</span>
<a name="line-623"></a>
<a name="line-624"></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-625"></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-626"></a> <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="c1">// then check descending order</span>
<a name="line-630"></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-631"></a> <span class="n">previousYear</span> <span class="o">=</span> <span class="mi">1000000</span><span class="p">;</span>
<a name="line-632"></a>
<a name="line-633"></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-634"></a> <span class="p">{</span>
<a name="line-635"></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-636"></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-637"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">yearAlbum</span><span class="p">);</span>
<a name="line-638"></a>
<a name="line-639"></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-640"></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-641"></a>
<a name="line-642"></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-643"></a>
<a name="line-644"></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-645"></a> <span class="p">{</span>
<a name="line-646"></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-647"></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-648"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">monthAlbum</span><span class="p">);</span>
<a name="line-649"></a>
<a name="line-650"></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-651"></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-652"></a> <span class="p">}</span>
<a name="line-653"></a> <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="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">testDAlbumCount</span><span class="p">()</span>
<a name="line-657"></a><span class="p">{</span>
<a name="line-658"></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-659"></a>
<a name="line-660"></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-661"></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-662"></a> <span class="n">ensureItemCounts</span><span class="p">();</span>
<a name="line-663"></a>
<a name="line-664"></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-665"></a>
<a name="line-666"></a> <span class="c1">// check year albums</span>
<a name="line-667"></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-668"></a> <span class="p">{</span>
<a name="line-669"></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-670"></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-671"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">yearDAlbum</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">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-674"></a>
<a name="line-675"></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-676"></a> <span class="p">{</span>
<a name="line-677"></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-678"></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-679"></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-680"></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-681"></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-682"></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-683"></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-684"></a>
<a name="line-685"></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-686"></a> <span class="p">{</span>
<a name="line-687"></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-688"></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-689"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">);</span>
<a name="line-690"></a>
<a name="line-691"></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-692"></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-693"></a>
<a name="line-694"></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-695"></a> <span class="p">{</span>
<a name="line-696"></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-697"></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-698"></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-699"></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-700"></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-701"></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-702"></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-703"></a> <span class="p">}</span>
<a name="line-704"></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-705"></a> <span class="p">{</span>
<a name="line-706"></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-707"></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-708"></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-709"></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-710"></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-711"></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-712"></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-713"></a> <span class="p">}</span>
<a name="line-714"></a> <span class="k">else</span>
<a name="line-715"></a> <span class="p">{</span>
<a name="line-716"></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-717"></a> <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> <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-721"></a> <span class="p">{</span>
<a name="line-722"></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-723"></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-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">yearDAlbum</span><span class="p">),</span> <span class="n">imagesInYear</span><span class="p">);</span>
<a name="line-725"></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-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">yearDAlbum</span><span class="p">),</span> <span class="mi">0</span><span class="p">);</span>
<a name="line-727"></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-728"></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-729"></a>
<a name="line-730"></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-731"></a> <span class="p">{</span>
<a name="line-732"></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-733"></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-734"></a> <span class="n">QVERIFY</span><span class="p">(</span><span class="n">monthDAlbum</span><span class="p">);</span>
<a name="line-735"></a>
<a name="line-736"></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-737"></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-738"></a>
<a name="line-739"></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-740"></a> <span class="p">{</span>
<a name="line-741"></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-742"></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-743"></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-744"></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-745"></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-746"></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-747"></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-748"></a> <span class="p">}</span>
<a name="line-749"></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-750"></a> <span class="p">{</span>
<a name="line-751"></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-752"></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-753"></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-754"></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-755"></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-756"></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-757"></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-758"></a> <span class="p">}</span>
<a name="line-759"></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-760"></a> <span class="p">{</span>
<a name="line-761"></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-762"></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-763"></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-764"></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-765"></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-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="p">}</span>
<a name="line-769"></a> <span class="k">else</span>
<a name="line-770"></a> <span class="p">{</span>
<a name="line-771"></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-772"></a> <span class="p">}</span>
<a name="line-773"></a> <span class="p">}</span>
<a name="line-774"></a> <span class="p">}</span>
<a name="line-775"></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-776"></a> <span class="p">{</span>
<a name="line-777"></a> <span class="c1">// Nothing to do here, ignore the albums for ordering tests</span>
<a name="line-778"></a> <span class="p">}</span>
<a name="line-779"></a> <span class="k">else</span>
<a name="line-780"></a> <span class="p">{</span>
<a name="line-781"></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-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">delete</span> <span class="n">albumModel</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="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">testTAlbumModel</span><span class="p">()</span>
<a name="line-789"></a><span class="p">{</span>
<a name="line-790"></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-791"></a>
<a name="line-792"></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-793"></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-794"></a> <span class="k">delete</span> <span class="n">test</span><span class="p">;</span>
<a name="line-795"></a> <span class="k">delete</span> <span class="n">albumModel</span><span class="p">;</span>
<a name="line-796"></a>
<a name="line-797"></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-798"></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-799"></a> <span class="k">delete</span> <span class="n">test</span><span class="p">;</span>
<a name="line-800"></a> <span class="k">delete</span> <span class="n">albumModel</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="kt">void</span> <span class="n">AlbumModelTest</span><span class="o">::</span><span class="n">testSAlbumModel</span><span class="p">()</span>
<a name="line-804"></a><span class="p">{</span>
<a name="line-805"></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-806"></a>
<a name="line-807"></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-808"></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-809"></a> <span class="k">delete</span> <span class="n">test</span><span class="p">;</span>
<a name="line-810"></a> <span class="k">delete</span> <span class="n">albumModel</span><span class="p">;</span>
<a name="line-811"></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/5.html b/static/reports/cppcheck/master/5.html
index 832cc4584..27d229104 100644
--- a/static/reports/cppcheck/master/5.html
+++ b/static/reports/cppcheck/master/5.html
@@ -1,1575 +1,1575 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/metadata/metadataedit/iptc/iptcorigin.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../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='5.html#line-435'> shadowVar 435</a><a href='5.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/50.html b/static/reports/cppcheck/master/50.html
index 6a4d5c966..ed4ba48d4 100644
--- a/static/reports/cppcheck/master/50.html
+++ b/static/reports/cppcheck/master/50.html
@@ -1,387 +1,387 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/tests/geolocation/editor/test_simpletreemodel.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/tests/geolocation/editor/test_simpletreemodel.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> test_simpletreemodel.cpp</p>
<a href='50.html#line-69'> shadowVar 69</a><a href='50.html#line-69'> shadowVar 69</a><a href='50.html#line-71'> shadowVar 71</a><a href='50.html#line-71'> shadowVar 71</a><a href='50.html#line-96'> shadowVar 96</a><a href='50.html#line-98'> shadowVar 98</a><a href='50.html#line-108'> shadowVar 108</a><a href='50.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</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-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-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-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="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>
</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/51.html b/static/reports/cppcheck/master/51.html
index 9777e9500..70da15a82 100644
--- a/static/reports/cppcheck/master/51.html
+++ b/static/reports/cppcheck/master/51.html
@@ -1,1457 +1,1457 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/utilities/fuzzysearch/sketchwidget.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/utilities/fuzzysearch/sketchwidget.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> sketchwidget.cpp</p>
<a href='51.html#line-208'> knownConditionTrueFalse 208</a><a href='51.html#line-208'> knownConditionTrueFalse 208</a><a href='51.html#line-215'> knownConditionTrueFalse 215</a><a href='51.html#line-226'> knownConditionTrueFalse 226</a><a href='51.html#line-233'> knownConditionTrueFalse 233</a><a href='51.html#line-243'> knownConditionTrueFalse 243</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</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-05-19</span>
<a name="line-7"></a><span class="cm"> * Description : a widget to draw sketch.</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) 2008-2010 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">#include</span> <span class="cpf">&quot;sketchwidget.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;QCursor&gt;</span><span class="cp"></span>
<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QMap&gt;</span><span class="cp"></span>
<a name="line-31"></a><span class="cp">#include</span> <span class="cpf">&lt;QPainter&gt;</span><span class="cp"></span>
<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&lt;QPainterPath&gt;</span><span class="cp"></span>
<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&lt;QColor&gt;</span><span class="cp"></span>
<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;QPixmap&gt;</span><span class="cp"></span>
<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&lt;QPoint&gt;</span><span class="cp"></span>
<a name="line-36"></a><span class="cp">#include</span> <span class="cpf">&lt;QMouseEvent&gt;</span><span class="cp"></span>
<a name="line-37"></a><span class="cp">#include</span> <span class="cpf">&lt;QTime&gt;</span><span class="cp"></span>
<a name="line-38"></a>
<a name="line-39"></a><span class="c1">// KDE includes</span>
<a name="line-40"></a>
<a name="line-41"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&gt;</span><span class="cp"></span>
<a name="line-42"></a>
<a name="line-43"></a><span class="k">namespace</span> <span class="n">Digikam</span>
<a name="line-44"></a><span class="p">{</span>
<a name="line-45"></a>
<a name="line-46"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">DrawEvent</span>
<a name="line-47"></a><span class="p">{</span>
<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">DrawEvent</span><span class="p">()</span>
<a name="line-51"></a> <span class="o">:</span> <span class="n">penWidth</span><span class="p">(</span><span class="mi">10</span><span class="p">),</span>
<a name="line-52"></a> <span class="n">penColor</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">black</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">DrawEvent</span><span class="p">(</span><span class="kt">int</span> <span class="n">width</span><span class="p">,</span> <span class="k">const</span> <span class="n">QColor</span><span class="o">&amp;</span> <span class="n">color</span><span class="p">)</span>
<a name="line-57"></a> <span class="o">:</span> <span class="n">penWidth</span><span class="p">(</span><span class="n">width</span><span class="p">),</span>
<a name="line-58"></a> <span class="n">penColor</span><span class="p">(</span><span class="n">color</span><span class="p">)</span>
<a name="line-59"></a> <span class="p">{</span>
<a name="line-60"></a> <span class="p">}</span>
<a name="line-61"></a>
<a name="line-62"></a> <span class="kt">void</span> <span class="n">lineTo</span><span class="p">(</span><span class="k">const</span> <span class="n">QPoint</span><span class="o">&amp;</span> <span class="n">pos</span><span class="p">)</span>
<a name="line-63"></a> <span class="p">{</span>
<a name="line-64"></a> <span class="n">path</span><span class="p">.</span><span class="n">lineTo</span><span class="p">(</span><span class="n">pos</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">public</span><span class="o">:</span>
<a name="line-68"></a>
<a name="line-69"></a> <span class="kt">int</span> <span class="n">penWidth</span><span class="p">;</span>
<a name="line-70"></a> <span class="n">QColor</span> <span class="n">penColor</span><span class="p">;</span>
<a name="line-71"></a> <span class="n">QPainterPath</span> <span class="n">path</span><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="c1">// ------------------------------------------------------------------------------</span>
<a name="line-75"></a>
<a name="line-76"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">SketchWidget</span><span class="o">::</span><span class="n">Private</span>
<a name="line-77"></a><span class="p">{</span>
<a name="line-78"></a><span class="k">public</span><span class="o">:</span>
<a name="line-79"></a>
<a name="line-80"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
<a name="line-81"></a> <span class="o">:</span> <span class="n">isClear</span><span class="p">(</span><span class="nb">true</span><span class="p">),</span>
<a name="line-82"></a> <span class="n">drawing</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
<a name="line-83"></a> <span class="n">penWidth</span><span class="p">(</span><span class="mi">10</span><span class="p">),</span>
<a name="line-84"></a> <span class="n">eventIndex</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span>
<a name="line-85"></a> <span class="n">penColor</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">black</span><span class="p">),</span>
<a name="line-86"></a> <span class="n">pixmap</span><span class="p">(</span><span class="n">QPixmap</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span> <span class="mi">256</span><span class="p">))</span>
<a name="line-87"></a> <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="kt">void</span> <span class="n">startDrawEvent</span><span class="p">(</span><span class="k">const</span> <span class="n">QPoint</span><span class="o">&amp;</span> <span class="n">pos</span><span class="p">)</span>
<a name="line-91"></a> <span class="p">{</span>
<a name="line-92"></a> <span class="c1">// Remove all draw events from history map which are upper than current index.</span>
<a name="line-93"></a> <span class="c1">// If user redo actions and make new draw events, theses one will be queued at</span>
<a name="line-94"></a> <span class="c1">// end of history and will replace removed items.</span>
<a name="line-95"></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">drawEventList</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="n">i</span> <span class="o">&gt;</span> <span class="n">eventIndex</span> <span class="p">;</span> <span class="o">--</span><span class="n">i</span><span class="p">)</span>
<a name="line-96"></a> <span class="p">{</span>
<a name="line-97"></a> <span class="n">drawEventList</span><span class="p">.</span><span class="n">removeAt</span><span class="p">(</span><span class="n">i</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">drawEventCreationTime</span> <span class="o">=</span> <span class="n">QTime</span><span class="o">::</span><span class="n">currentTime</span><span class="p">();</span>
<a name="line-101"></a> <span class="n">DrawEvent</span> <span class="nf">event</span><span class="p">(</span><span class="n">penWidth</span><span class="p">,</span> <span class="n">penColor</span><span class="p">);</span>
<a name="line-102"></a> <span class="n">event</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">moveTo</span><span class="p">(</span><span class="n">pos</span><span class="p">);</span>
<a name="line-103"></a> <span class="n">drawEventList</span> <span class="o">&lt;&lt;</span> <span class="n">event</span><span class="p">;</span>
<a name="line-104"></a>
<a name="line-105"></a> <span class="n">eventIndex</span> <span class="o">=</span> <span class="n">drawEventList</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-106"></a> <span class="p">}</span>
<a name="line-107"></a>
<a name="line-108"></a> <span class="n">DrawEvent</span><span class="o">&amp;</span> <span class="n">currentDrawEvent</span><span class="p">()</span>
<a name="line-109"></a> <span class="p">{</span>
<a name="line-110"></a> <span class="n">QTime</span> <span class="n">currentTime</span> <span class="o">=</span> <span class="n">QTime</span><span class="o">::</span><span class="n">currentTime</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="n">drawEventCreationTime</span><span class="p">.</span><span class="n">isNull</span><span class="p">()</span> <span class="o">||</span> <span class="n">drawEventCreationTime</span><span class="p">.</span><span class="n">msecsTo</span><span class="p">(</span><span class="n">currentTime</span><span class="p">)</span> <span class="o">&gt;</span> <span class="mi">1000</span><span class="p">)</span>
<a name="line-113"></a> <span class="p">{</span>
<a name="line-114"></a> <span class="n">drawEventCreationTime</span> <span class="o">=</span> <span class="n">currentTime</span><span class="p">;</span>
<a name="line-115"></a> <span class="n">DrawEvent</span> <span class="nf">event</span><span class="p">(</span><span class="n">penWidth</span><span class="p">,</span> <span class="n">penColor</span><span class="p">);</span>
<a name="line-116"></a> <span class="n">event</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">moveTo</span><span class="p">(</span><span class="n">drawEventList</span><span class="p">.</span><span class="n">last</span><span class="p">().</span><span class="n">path</span><span class="p">.</span><span class="n">currentPosition</span><span class="p">());</span>
<a name="line-117"></a> <span class="n">drawEventList</span> <span class="o">&lt;&lt;</span> <span class="n">event</span><span class="p">;</span>
<a name="line-118"></a> <span class="o">++</span><span class="n">eventIndex</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="k">return</span> <span class="n">drawEventList</span><span class="p">.</span><span class="n">last</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="kt">void</span> <span class="n">ensureNewDrawEvent</span><span class="p">()</span>
<a name="line-125"></a> <span class="p">{</span>
<a name="line-126"></a> <span class="n">drawEventCreationTime</span> <span class="o">=</span> <span class="n">QTime</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="k">public</span><span class="o">:</span>
<a name="line-130"></a>
<a name="line-131"></a> <span class="kt">bool</span> <span class="n">isClear</span><span class="p">;</span>
<a name="line-132"></a> <span class="kt">bool</span> <span class="n">drawing</span><span class="p">;</span>
<a name="line-133"></a>
<a name="line-134"></a> <span class="kt">int</span> <span class="n">penWidth</span><span class="p">;</span>
<a name="line-135"></a> <span class="kt">int</span> <span class="n">eventIndex</span><span class="p">;</span>
<a name="line-136"></a>
<a name="line-137"></a> <span class="n">QColor</span> <span class="n">penColor</span><span class="p">;</span>
<a name="line-138"></a>
<a name="line-139"></a> <span class="n">QPixmap</span> <span class="n">pixmap</span><span class="p">;</span>
<a name="line-140"></a>
<a name="line-141"></a> <span class="n">QPoint</span> <span class="n">lastPoint</span><span class="p">;</span>
<a name="line-142"></a> <span class="n">QTime</span> <span class="n">drawEventCreationTime</span><span class="p">;</span>
<a name="line-143"></a>
<a name="line-144"></a> <span class="n">QCursor</span> <span class="n">drawCursor</span><span class="p">;</span>
<a name="line-145"></a>
<a name="line-146"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">DrawEvent</span><span class="o">&gt;</span> <span class="n">drawEventList</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">SketchWidget</span><span class="o">::</span><span class="n">SketchWidget</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-150"></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-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">setWhatsThis</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;You simply draw here a rough sketch of what you want to find &quot;</span>
<a name="line-154"></a> <span class="s">&quot;and digiKam will displays the best matches in thumbnail view.&quot;</span><span class="p">));</span>
<a name="line-155"></a>
<a name="line-156"></a> <span class="n">setAttribute</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">WA_StaticContents</span><span class="p">);</span>
<a name="line-157"></a> <span class="n">setMouseTracking</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-158"></a> <span class="n">setFixedSize</span><span class="p">(</span><span class="mi">256</span><span class="p">,</span> <span class="mi">256</span><span class="p">);</span>
<a name="line-159"></a> <span class="n">setFocusPolicy</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">StrongFocus</span><span class="p">);</span>
<a name="line-160"></a> <span class="n">slotClear</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">SketchWidget</span><span class="o">::~</span><span class="n">SketchWidget</span><span class="p">()</span>
<a name="line-164"></a><span class="p">{</span>
<a name="line-165"></a> <span class="k">delete</span> <span class="n">d</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">void</span> <span class="n">SketchWidget</span><span class="o">::</span><span class="n">slotClear</span><span class="p">()</span>
<a name="line-169"></a><span class="p">{</span>
<a name="line-170"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">isClear</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-171"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">eventIndex</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<a name="line-172"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">pixmap</span><span class="p">.</span><span class="n">fill</span><span class="p">(</span><span class="n">qRgb</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">));</span>
<a name="line-173"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">drawEventList</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-174"></a> <span class="n">update</span><span class="p">();</span>
<a name="line-175"></a> <span class="n">emit</span> <span class="nf">signalUndoRedoStateChanged</span><span class="p">(</span><span class="nb">false</span><span class="p">,</span> <span class="nb">false</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="kt">bool</span> <span class="n">SketchWidget</span><span class="o">::</span><span class="n">isClear</span><span class="p">()</span> <span class="k">const</span>
<a name="line-179"></a><span class="p">{</span>
<a name="line-180"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">isClear</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="kt">void</span> <span class="n">SketchWidget</span><span class="o">::</span><span class="n">setPenColor</span><span class="p">(</span><span class="k">const</span> <span class="n">QColor</span><span class="o">&amp;</span> <span class="n">newColor</span><span class="p">)</span>
<a name="line-184"></a><span class="p">{</span>
<a name="line-185"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">penColor</span> <span class="o">=</span> <span class="n">newColor</span><span class="p">;</span>
<a name="line-186"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">ensureNewDrawEvent</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">QColor</span> <span class="n">SketchWidget</span><span class="o">::</span><span class="n">penColor</span><span class="p">()</span> <span class="k">const</span>
<a name="line-190"></a><span class="p">{</span>
<a name="line-191"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">penColor</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">SketchWidget</span><span class="o">::</span><span class="n">setPenWidth</span><span class="p">(</span><span class="kt">int</span> <span class="n">newWidth</span><span class="p">)</span>
<a name="line-195"></a><span class="p">{</span>
<a name="line-196"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">penWidth</span> <span class="o">=</span> <span class="n">newWidth</span><span class="p">;</span>
<a name="line-197"></a> <span class="n">updateDrawCursor</span><span class="p">();</span>
<a name="line-198"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">ensureNewDrawEvent</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="kt">int</span> <span class="n">SketchWidget</span><span class="o">::</span><span class="n">penWidth</span><span class="p">()</span> <span class="k">const</span>
<a name="line-202"></a><span class="p">{</span>
<a name="line-203"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">penWidth</span><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="kt">void</span> <span class="n">SketchWidget</span><span class="o">::</span><span class="n">slotUndo</span><span class="p">()</span>
<a name="line-207"></a><span class="p">{</span>
<a name="line-208"></a><span class="hll"> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">eventIndex</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class='error2'>&lt;--- Assuming condition 'd->eventIndex==-1' is false</span><span class='error2'>&lt;--- Assuming condition 'd->eventIndex==-1' is false</span>
</span><a name="line-209"></a> <span class="p">{</span>
<a name="line-210"></a> <span class="k">return</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">d</span><span class="o">-&gt;</span><span class="n">eventIndex</span><span class="o">--</span><span class="p">;</span>
<a name="line-214"></a>
<a name="line-215"></a><span class="hll"> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">eventIndex</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class='error2'>&lt;--- Condition 'd->eventIndex==-1' is always false</span>
</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">isClear</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-218"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">pixmap</span><span class="p">.</span><span class="n">fill</span><span class="p">(</span><span class="n">qRgb</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">));</span>
<a name="line-219"></a> <span class="n">update</span><span class="p">();</span>
<a name="line-220"></a> <span class="n">emit</span> <span class="nf">signalUndoRedoStateChanged</span><span class="p">(</span><span class="nb">false</span><span class="p">,</span> <span class="nb">true</span><span class="p">);</span>
<a name="line-221"></a> <span class="p">}</span>
<a name="line-222"></a> <span class="k">else</span>
<a name="line-223"></a> <span class="p">{</span>
<a name="line-224"></a> <span class="n">replayEvents</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">eventIndex</span><span class="p">);</span>
<a name="line-225"></a> <span class="n">emit</span> <span class="nf">signalSketchChanged</span><span class="p">(</span><span class="n">sketchImage</span><span class="p">());</span>
<a name="line-226"></a><span class="hll"> <span class="n">emit</span> <span class="nf">signalUndoRedoStateChanged</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">eventIndex</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span><span class='error2'>&lt;--- Condition 'd->eventIndex!=-1' is always true</span>
</span><a name="line-227"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">eventIndex</span> <span class="o">!=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">drawEventList</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-228"></a> <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">SketchWidget</span><span class="o">::</span><span class="n">slotRedo</span><span class="p">()</span>
<a name="line-232"></a><span class="p">{</span>
<a name="line-233"></a><span class="hll"> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">eventIndex</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">drawEventList</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='error2'>&lt;--- Assuming condition 'd->eventIndex==d->drawEventList.count()-1' is false</span>
</span><a name="line-234"></a> <span class="p">{</span>
<a name="line-235"></a> <span class="k">return</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">d</span><span class="o">-&gt;</span><span class="n">eventIndex</span><span class="o">++</span><span class="p">;</span>
<a name="line-239"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">isClear</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-240"></a> <span class="n">replayEvents</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">eventIndex</span><span class="p">);</span>
<a name="line-241"></a> <span class="n">emit</span> <span class="nf">signalSketchChanged</span><span class="p">(</span><span class="n">sketchImage</span><span class="p">());</span>
<a name="line-242"></a> <span class="n">emit</span> <span class="nf">signalUndoRedoStateChanged</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">eventIndex</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span>
<a name="line-243"></a><span class="hll"> <span class="n">d</span><span class="o">-&gt;</span><span class="n">eventIndex</span> <span class="o">!=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">drawEventList</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='error2'>&lt;--- Condition 'd->eventIndex!=d->drawEventList.count()-1' is always true</span>
</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">SketchWidget</span><span class="o">::</span><span class="n">replayEvents</span><span class="p">(</span><span class="kt">int</span> <span class="n">index</span><span class="p">)</span>
<a name="line-247"></a><span class="p">{</span>
<a name="line-248"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">pixmap</span><span class="p">.</span><span class="n">fill</span><span class="p">(</span><span class="n">qRgb</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">));</span>
<a name="line-249"></a>
<a name="line-250"></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">index</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-251"></a> <span class="p">{</span>
<a name="line-252"></a> <span class="k">const</span> <span class="n">DrawEvent</span><span class="o">&amp;</span> <span class="n">drawEvent</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">drawEventList</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-253"></a> <span class="n">drawPath</span><span class="p">(</span><span class="n">drawEvent</span><span class="p">.</span><span class="n">penWidth</span><span class="p">,</span> <span class="n">drawEvent</span><span class="p">.</span><span class="n">penColor</span><span class="p">,</span> <span class="n">drawEvent</span><span class="p">.</span><span class="n">path</span><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="n">update</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="kt">void</span> <span class="n">SketchWidget</span><span class="o">::</span><span class="n">sketchImageToXML</span><span class="p">(</span><span class="n">QXmlStreamWriter</span><span class="o">&amp;</span> <span class="n">writer</span><span class="p">)</span>
<a name="line-260"></a><span class="p">{</span>
<a name="line-261"></a> <span class="n">writer</span><span class="p">.</span><span class="n">writeStartElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;SketchImage&quot;</span><span class="p">));</span>
<a name="line-262"></a>
<a name="line-263"></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">eventIndex</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
<a name="line-264"></a> <span class="p">{</span>
<a name="line-265"></a> <span class="k">const</span> <span class="n">DrawEvent</span><span class="o">&amp;</span> <span class="n">event</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">drawEventList</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-266"></a>
<a name="line-267"></a> <span class="c1">// Write the pen size and color</span>
<a name="line-268"></a> <span class="n">writer</span><span class="p">.</span><span class="n">writeStartElement</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>
<a name="line-269"></a> <span class="n">writer</span><span class="p">.</span><span class="n">writeAttribute</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> <span class="n">QString</span><span class="o">::</span><span class="n">number</span><span class="p">(</span><span class="n">event</span><span class="p">.</span><span class="n">penWidth</span><span class="p">));</span>
<a name="line-270"></a> <span class="n">writer</span><span class="p">.</span><span class="n">writeAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Color&quot;</span><span class="p">),</span> <span class="n">event</span><span class="p">.</span><span class="n">penColor</span><span class="p">.</span><span class="n">name</span><span class="p">());</span>
<a name="line-271"></a>
<a name="line-272"></a> <span class="c1">// Write the lines contained in the QPainterPath</span>
<a name="line-273"></a>
<a name="line-274"></a> <span class="c1">// Initial position is 0,0</span>
<a name="line-275"></a> <span class="n">QPointF</span> <span class="nf">pos</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-276"></a>
<a name="line-277"></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">event</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">elementCount</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-278"></a> <span class="p">{</span>
<a name="line-279"></a> <span class="k">const</span> <span class="n">QPainterPath</span><span class="o">::</span><span class="n">Element</span><span class="o">&amp;</span> <span class="n">element</span> <span class="o">=</span> <span class="n">event</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">elementAt</span><span class="p">(</span><span class="n">j</span><span class="p">);</span>
<a name="line-280"></a>
<a name="line-281"></a> <span class="c1">// Store begin and end point of a line, so no need to write moveTo elements to XML</span>
<a name="line-282"></a> <span class="k">if</span> <span class="p">(</span><span class="n">element</span><span class="p">.</span><span class="n">isLineTo</span><span class="p">())</span>
<a name="line-283"></a> <span class="p">{</span>
<a name="line-284"></a> <span class="n">QPoint</span> <span class="n">begin</span> <span class="o">=</span> <span class="n">pos</span><span class="p">.</span><span class="n">toPoint</span><span class="p">();</span>
<a name="line-285"></a> <span class="n">QPoint</span> <span class="n">end</span> <span class="o">=</span> <span class="p">((</span><span class="n">QPointF</span><span class="p">)</span><span class="n">element</span><span class="p">).</span><span class="n">toPoint</span><span class="p">();</span>
<a name="line-286"></a> <span class="n">writer</span><span class="p">.</span><span class="n">writeStartElement</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Line&quot;</span><span class="p">));</span>
<a name="line-287"></a> <span class="n">writer</span><span class="p">.</span><span class="n">writeAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;x1&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">begin</span><span class="p">.</span><span class="n">x</span><span class="p">()));</span>
<a name="line-288"></a> <span class="n">writer</span><span class="p">.</span><span class="n">writeAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;y1&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">begin</span><span class="p">.</span><span class="n">y</span><span class="p">()));</span>
<a name="line-289"></a> <span class="n">writer</span><span class="p">.</span><span class="n">writeAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;x2&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">end</span><span class="p">.</span><span class="n">x</span><span class="p">()));</span>
<a name="line-290"></a> <span class="n">writer</span><span class="p">.</span><span class="n">writeAttribute</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;y2&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">end</span><span class="p">.</span><span class="n">y</span><span class="p">()));</span>
<a name="line-291"></a> <span class="n">writer</span><span class="p">.</span><span class="n">writeEndElement</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="c1">// Keep track of current position after this element</span>
<a name="line-295"></a> <span class="c1">// The starting point of the next element is the end point of this element</span>
<a name="line-296"></a> <span class="c1">// This handles both lineTo and moveTo elements</span>
<a name="line-297"></a> <span class="n">pos</span> <span class="o">=</span> <span class="n">element</span><span class="p">;</span>
<a name="line-298"></a> <span class="p">}</span>
<a name="line-299"></a>
<a name="line-300"></a> <span class="n">writer</span><span class="p">.</span><span class="n">writeEndElement</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="n">writer</span><span class="p">.</span><span class="n">writeEndElement</span><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">QString</span> <span class="n">SketchWidget</span><span class="o">::</span><span class="n">sketchImageToXML</span><span class="p">()</span>
<a name="line-307"></a><span class="p">{</span>
<a name="line-308"></a> <span class="n">QString</span> <span class="n">xml</span><span class="p">;</span>
<a name="line-309"></a> <span class="n">QXmlStreamWriter</span> <span class="nf">writer</span><span class="p">(</span><span class="o">&amp;</span><span class="n">xml</span><span class="p">);</span>
<a name="line-310"></a> <span class="n">writer</span><span class="p">.</span><span class="n">writeStartDocument</span><span class="p">();</span>
<a name="line-311"></a> <span class="n">sketchImageToXML</span><span class="p">(</span><span class="n">writer</span><span class="p">);</span>
<a name="line-312"></a> <span class="n">writer</span><span class="p">.</span><span class="n">writeEndDocument</span><span class="p">();</span>
<a name="line-313"></a> <span class="k">return</span> <span class="n">xml</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="kt">bool</span> <span class="n">SketchWidget</span><span class="o">::</span><span class="n">setSketchImageFromXML</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">xml</span><span class="p">)</span>
<a name="line-317"></a><span class="p">{</span>
<a name="line-318"></a> <span class="n">QXmlStreamReader</span> <span class="n">reader</span><span class="p">(</span><span class="n">xml</span><span class="p">);</span>
<a name="line-319"></a> <span class="n">QXmlStreamReader</span><span class="o">::</span><span class="n">TokenType</span> <span class="n">element</span><span class="p">;</span>
<a name="line-320"></a>
<a name="line-321"></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>
<a name="line-322"></a> <span class="p">{</span>
<a name="line-323"></a> <span class="n">element</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-324"></a>
<a name="line-325"></a> <span class="k">if</span> <span class="p">(</span><span class="n">element</span> <span class="o">==</span> <span class="n">QXmlStreamReader</span><span class="o">::</span><span class="n">StartElement</span> <span class="o">&amp;&amp;</span>
<a name="line-326"></a> <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;SketchImage&quot;</span><span class="p">))</span>
<a name="line-327"></a> <span class="p">{</span>
<a name="line-328"></a> <span class="k">return</span> <span class="n">setSketchImageFromXML</span><span class="p">(</span><span class="n">reader</span><span class="p">);</span>
<a name="line-329"></a> <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">return</span> <span class="nb">false</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">SketchWidget</span><span class="o">::</span><span class="n">setSketchImageFromXML</span><span class="p">(</span><span class="n">QXmlStreamReader</span><span class="o">&amp;</span> <span class="n">reader</span><span class="p">)</span>
<a name="line-336"></a><span class="p">{</span>
<a name="line-337"></a> <span class="n">QXmlStreamReader</span><span class="o">::</span><span class="n">TokenType</span> <span class="n">element</span><span class="p">;</span>
<a name="line-338"></a>
<a name="line-339"></a> <span class="c1">// We assume that the reader is positioned at the start element for our XML</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">reader</span><span class="p">.</span><span class="n">isStartElement</span><span class="p">()</span> <span class="o">||</span>
<a name="line-342"></a> <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;SketchImage&quot;</span><span class="p">))</span>
<a name="line-343"></a> <span class="p">{</span>
<a name="line-344"></a> <span class="k">return</span> <span class="nb">false</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="n">d</span><span class="o">-&gt;</span><span class="n">isClear</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-348"></a>
<a name="line-349"></a> <span class="c1">// rebuild list of drawing chunks</span>
<a name="line-350"></a>
<a name="line-351"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">drawEventList</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-352"></a>
<a name="line-353"></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>
<a name="line-354"></a> <span class="p">{</span>
<a name="line-355"></a> <span class="n">element</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-356"></a>
<a name="line-357"></a> <span class="k">if</span> <span class="p">(</span><span class="n">element</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-358"></a> <span class="p">{</span>
<a name="line-359"></a> <span class="c1">// every chunk (DrawEvent) is stored as a vector path</span>
<a name="line-360"></a>
<a name="line-361"></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;Path&quot;</span><span class="p">))</span>
<a name="line-362"></a> <span class="p">{</span>
<a name="line-363"></a> <span class="n">addPath</span><span class="p">(</span><span class="n">reader</span><span class="p">);</span> <span class="c1">// recurse</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> <span class="k">if</span> <span class="p">(</span><span class="n">element</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-367"></a> <span class="p">{</span>
<a name="line-368"></a> <span class="c1">// we have finished</span>
<a name="line-369"></a>
<a name="line-370"></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;SketchImage&quot;</span><span class="p">))</span>
<a name="line-371"></a> <span class="p">{</span>
<a name="line-372"></a> <span class="k">break</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">// set current event to the last event</span>
<a name="line-378"></a>
<a name="line-379"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">eventIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">drawEventList</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-380"></a>
<a name="line-381"></a> <span class="c1">// apply events to our pixmap</span>
<a name="line-382"></a>
<a name="line-383"></a> <span class="n">replayEvents</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">eventIndex</span><span class="p">);</span>
<a name="line-384"></a> <span class="n">emit</span> <span class="nf">signalUndoRedoStateChanged</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">eventIndex</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-385"></a>
<a name="line-386"></a> <span class="k">return</span> <span class="nb">true</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="kt">void</span> <span class="n">SketchWidget</span><span class="o">::</span><span class="n">addPath</span><span class="p">(</span><span class="n">QXmlStreamReader</span><span class="o">&amp;</span> <span class="n">reader</span><span class="p">)</span>
<a name="line-390"></a><span class="p">{</span>
<a name="line-391"></a> <span class="n">QXmlStreamReader</span><span class="o">::</span><span class="n">TokenType</span> <span class="n">element</span><span class="p">;</span>
<a name="line-392"></a>
<a name="line-393"></a> <span class="n">DrawEvent</span> <span class="n">event</span><span class="p">;</span>
<a name="line-394"></a>
<a name="line-395"></a> <span class="c1">// Retrieve pen color and size</span>
<a name="line-396"></a>
<a name="line-397"></a> <span class="n">QStringRef</span> <span class="n">size</span> <span class="o">=</span> <span class="n">reader</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;Size&quot;</span><span class="p">));</span>
<a name="line-398"></a> <span class="n">QStringRef</span> <span class="n">color</span> <span class="o">=</span> <span class="n">reader</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;Color&quot;</span><span class="p">));</span>
<a name="line-399"></a>
<a name="line-400"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">size</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-401"></a> <span class="p">{</span>
<a name="line-402"></a> <span class="n">event</span><span class="p">.</span><span class="n">penWidth</span> <span class="o">=</span> <span class="n">size</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-403"></a> <span class="p">}</span>
<a name="line-404"></a>
<a name="line-405"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">color</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-406"></a> <span class="p">{</span>
<a name="line-407"></a> <span class="n">event</span><span class="p">.</span><span class="n">penColor</span><span class="p">.</span><span class="n">setNamedColor</span><span class="p">(</span><span class="n">color</span><span class="p">.</span><span class="n">toString</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">QPointF</span> <span class="n">begin</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">end</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-411"></a>
<a name="line-412"></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>
<a name="line-413"></a> <span class="p">{</span>
<a name="line-414"></a> <span class="n">element</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-415"></a>
<a name="line-416"></a> <span class="k">if</span> <span class="p">(</span><span class="n">element</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-417"></a> <span class="p">{</span>
<a name="line-418"></a> <span class="c1">// The line element has four attributes, x1,y1,x2,y2</span>
<a name="line-419"></a>
<a name="line-420"></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;Line&quot;</span><span class="p">))</span>
<a name="line-421"></a> <span class="p">{</span>
<a name="line-422"></a> <span class="n">QStringRef</span> <span class="n">x1</span> <span class="o">=</span> <span class="n">reader</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;x1&quot;</span><span class="p">));</span>
<a name="line-423"></a> <span class="n">QStringRef</span> <span class="n">y1</span> <span class="o">=</span> <span class="n">reader</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;y1&quot;</span><span class="p">));</span>
<a name="line-424"></a> <span class="n">QStringRef</span> <span class="n">x2</span> <span class="o">=</span> <span class="n">reader</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;x2&quot;</span><span class="p">));</span>
<a name="line-425"></a> <span class="n">QStringRef</span> <span class="n">y2</span> <span class="o">=</span> <span class="n">reader</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;y2&quot;</span><span class="p">));</span>
<a name="line-426"></a>
<a name="line-427"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">x1</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">y1</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-428"></a> <span class="p">{</span>
<a name="line-429"></a> <span class="n">begin</span><span class="p">.</span><span class="n">setX</span><span class="p">(</span><span class="n">x1</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-430"></a> <span class="n">begin</span><span class="p">.</span><span class="n">setY</span><span class="p">(</span><span class="n">y1</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-431"></a> <span class="p">}</span>
<a name="line-432"></a> <span class="k">else</span>
<a name="line-433"></a> <span class="p">{</span>
<a name="line-434"></a> <span class="n">begin</span> <span class="o">=</span> <span class="n">end</span><span class="p">;</span>
<a name="line-435"></a> <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">x2</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="n">y2</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="n">end</span><span class="p">.</span><span class="n">setX</span><span class="p">(</span><span class="n">x2</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-440"></a> <span class="n">end</span><span class="p">.</span><span class="n">setY</span><span class="p">(</span><span class="n">y2</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-441"></a> <span class="p">}</span>
<a name="line-442"></a>
<a name="line-443"></a> <span class="c1">// move to starting point</span>
<a name="line-444"></a>
<a name="line-445"></a> <span class="n">event</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">moveTo</span><span class="p">(</span><span class="n">begin</span><span class="p">);</span>
<a name="line-446"></a>
<a name="line-447"></a> <span class="c1">// draw line</span>
<a name="line-448"></a>
<a name="line-449"></a> <span class="n">event</span><span class="p">.</span><span class="n">path</span><span class="p">.</span><span class="n">lineTo</span><span class="p">(</span><span class="n">end</span><span class="p">);</span>
<a name="line-450"></a> <span class="p">}</span>
<a name="line-451"></a> <span class="p">}</span>
<a name="line-452"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">element</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-453"></a> <span class="p">{</span>
<a name="line-454"></a> <span class="c1">// we have finished</span>
<a name="line-455"></a>
<a name="line-456"></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;Path&quot;</span><span class="p">))</span>
<a name="line-457"></a> <span class="p">{</span>
<a name="line-458"></a> <span class="k">break</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> <span class="p">}</span>
<a name="line-462"></a>
<a name="line-463"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">drawEventList</span> <span class="o">&lt;&lt;</span> <span class="n">event</span><span class="p">;</span>
<a name="line-464"></a><span class="p">}</span>
<a name="line-465"></a>
<a name="line-466"></a><span class="n">QImage</span> <span class="n">SketchWidget</span><span class="o">::</span><span class="n">sketchImage</span><span class="p">()</span> <span class="k">const</span>
<a name="line-467"></a><span class="p">{</span>
<a name="line-468"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">pixmap</span><span class="p">.</span><span class="n">toImage</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="kt">void</span> <span class="n">SketchWidget</span><span class="o">::</span><span class="n">setSketchImage</span><span class="p">(</span><span class="k">const</span> <span class="n">QImage</span><span class="o">&amp;</span> <span class="n">image</span><span class="p">)</span>
<a name="line-472"></a><span class="p">{</span>
<a name="line-473"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">isClear</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-474"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">pixmap</span> <span class="o">=</span> <span class="n">QPixmap</span><span class="o">::</span><span class="n">fromImage</span><span class="p">(</span><span class="n">image</span><span class="p">);</span>
<a name="line-475"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">eventIndex</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
<a name="line-476"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">drawEventList</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
<a name="line-477"></a> <span class="n">emit</span> <span class="nf">signalUndoRedoStateChanged</span><span class="p">(</span><span class="nb">false</span><span class="p">,</span> <span class="nb">false</span><span class="p">);</span>
<a name="line-478"></a> <span class="n">update</span><span class="p">();</span>
<a name="line-479"></a><span class="p">}</span>
<a name="line-480"></a>
<a name="line-481"></a><span class="kt">void</span> <span class="n">SketchWidget</span><span class="o">::</span><span class="n">mousePressEvent</span><span class="p">(</span><span class="n">QMouseEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">)</span>
<a name="line-482"></a><span class="p">{</span>
<a name="line-483"></a> <span class="k">if</span> <span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">button</span><span class="p">()</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">LeftButton</span><span class="p">)</span>
<a name="line-484"></a> <span class="p">{</span>
<a name="line-485"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">isClear</span><span class="p">)</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">pixmap</span><span class="p">.</span><span class="n">fill</span><span class="p">(</span><span class="n">qRgb</span><span class="p">(</span><span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">,</span> <span class="mi">255</span><span class="p">));</span>
<a name="line-488"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">isClear</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-489"></a> <span class="n">update</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="c1">// sample color</span>
<a name="line-493"></a> <span class="k">if</span> <span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">modifiers</span><span class="p">()</span> <span class="o">&amp;</span> <span class="n">Qt</span><span class="o">::</span><span class="n">CTRL</span><span class="p">)</span>
<a name="line-494"></a> <span class="p">{</span>
<a name="line-495"></a> <span class="n">QImage</span> <span class="n">img</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">pixmap</span><span class="p">.</span><span class="n">toImage</span><span class="p">();</span>
<a name="line-496"></a> <span class="n">emit</span> <span class="nf">signalPenColorChanged</span><span class="p">((</span><span class="n">img</span><span class="p">.</span><span class="n">pixel</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-497"></a> <span class="k">return</span><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="n">d</span><span class="o">-&gt;</span><span class="n">lastPoint</span> <span class="o">=</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">pos</span><span class="p">();</span>
<a name="line-501"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">drawing</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-502"></a> <span class="n">setCursor</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">drawCursor</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">startDrawEvent</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-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="kt">void</span> <span class="n">SketchWidget</span><span class="o">::</span><span class="n">mouseMoveEvent</span><span class="p">(</span><span class="n">QMouseEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">)</span>
<a name="line-509"></a><span class="p">{</span>
<a name="line-510"></a> <span class="k">if</span> <span class="p">(</span><span class="n">rect</span><span class="p">().</span><span class="n">contains</span><span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">x</span><span class="p">(),</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">y</span><span class="p">()))</span>
<a name="line-511"></a> <span class="p">{</span>
<a name="line-512"></a> <span class="n">setFocus</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">d</span><span class="o">-&gt;</span><span class="n">drawing</span> <span class="o">||</span> <span class="o">!</span><span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">modifiers</span><span class="p">()</span> <span class="o">&amp;</span> <span class="n">Qt</span><span class="o">::</span><span class="n">CTRL</span><span class="p">))</span>
<a name="line-515"></a> <span class="p">{</span>
<a name="line-516"></a> <span class="n">setCursor</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">drawCursor</span><span class="p">);</span>
<a name="line-517"></a> <span class="p">}</span>
<a name="line-518"></a> <span class="k">else</span>
<a name="line-519"></a> <span class="p">{</span>
<a name="line-520"></a> <span class="n">setCursor</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">CrossCursor</span><span class="p">);</span>
<a name="line-521"></a> <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">e</span><span class="o">-&gt;</span><span class="n">buttons</span><span class="p">()</span> <span class="o">&amp;</span> <span class="n">Qt</span><span class="o">::</span><span class="n">LeftButton</span><span class="p">))</span>
<a name="line-524"></a> <span class="p">{</span>
<a name="line-525"></a> <span class="n">QPoint</span> <span class="n">currentPos</span> <span class="o">=</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">pos</span><span class="p">();</span>
<a name="line-526"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentDrawEvent</span><span class="p">().</span><span class="n">lineTo</span><span class="p">(</span><span class="n">currentPos</span><span class="p">);</span>
<a name="line-527"></a> <span class="n">drawLineTo</span><span class="p">(</span><span class="n">currentPos</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="k">else</span>
<a name="line-531"></a> <span class="p">{</span>
<a name="line-532"></a> <span class="n">unsetCursor</span><span class="p">();</span>
<a name="line-533"></a> <span class="n">clearFocus</span><span class="p">();</span>
<a name="line-534"></a> <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="kt">void</span> <span class="n">SketchWidget</span><span class="o">::</span><span class="n">wheelEvent</span><span class="p">(</span><span class="n">QWheelEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">)</span>
<a name="line-538"></a><span class="p">{</span>
<a name="line-539"></a> <span class="k">if</span> <span class="p">(</span><span class="n">rect</span><span class="p">().</span><span class="n">contains</span><span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">x</span><span class="p">(),</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">y</span><span class="p">()))</span>
<a name="line-540"></a> <span class="p">{</span>
<a name="line-541"></a> <span class="kt">int</span> <span class="n">size</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">penWidth</span><span class="p">;</span>
<a name="line-542"></a> <span class="kt">int</span> <span class="n">decr</span> <span class="o">=</span> <span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">modifiers</span><span class="p">()</span> <span class="o">&amp;</span> <span class="n">Qt</span><span class="o">::</span><span class="n">SHIFT</span><span class="p">)</span> <span class="o">?</span> <span class="mi">1</span> <span class="o">:</span> <span class="mi">10</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">e</span><span class="o">-&gt;</span><span class="n">delta</span><span class="p">()</span> <span class="o">&gt;</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">size</span> <span class="o">+=</span> <span class="n">decr</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">size</span> <span class="o">-=</span> <span class="n">decr</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">emit</span> <span class="n">signalPenSizeChanged</span><span class="p">(</span><span class="n">size</span><span class="p">);</span>
<a name="line-554"></a> <span class="n">setCursor</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">drawCursor</span><span class="p">);</span>
<a name="line-555"></a> <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="kt">void</span> <span class="n">SketchWidget</span><span class="o">::</span><span class="n">mouseReleaseEvent</span><span class="p">(</span><span class="n">QMouseEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">)</span>
<a name="line-559"></a><span class="p">{</span>
<a name="line-560"></a> <span class="k">if</span> <span class="p">((</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">button</span><span class="p">()</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">LeftButton</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">drawing</span><span class="p">)</span>
<a name="line-561"></a> <span class="p">{</span>
<a name="line-562"></a> <span class="n">QPoint</span> <span class="n">currentPos</span> <span class="o">=</span> <span class="n">e</span><span class="o">-&gt;</span><span class="n">pos</span><span class="p">();</span>
<a name="line-563"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">currentDrawEvent</span><span class="p">().</span><span class="n">lineTo</span><span class="p">(</span><span class="n">currentPos</span><span class="p">);</span>
<a name="line-564"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">drawing</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-565"></a> <span class="n">emit</span> <span class="nf">signalSketchChanged</span><span class="p">(</span><span class="n">sketchImage</span><span class="p">());</span>
<a name="line-566"></a> <span class="n">emit</span> <span class="nf">signalUndoRedoStateChanged</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-567"></a> <span class="p">}</span>
<a name="line-568"></a><span class="p">}</span>
<a name="line-569"></a>
<a name="line-570"></a><span class="kt">void</span> <span class="n">SketchWidget</span><span class="o">::</span><span class="n">keyPressEvent</span><span class="p">(</span><span class="n">QKeyEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">)</span>
<a name="line-571"></a><span class="p">{</span>
<a name="line-572"></a> <span class="n">QWidget</span><span class="o">::</span><span class="n">keyPressEvent</span><span class="p">(</span><span class="n">e</span><span class="p">);</span>
<a name="line-573"></a>
<a name="line-574"></a> <span class="k">if</span> <span class="p">(</span><span class="n">e</span><span class="o">-&gt;</span><span class="n">modifiers</span><span class="p">()</span> <span class="o">==</span> <span class="n">Qt</span><span class="o">::</span><span class="n">CTRL</span><span class="p">)</span>
<a name="line-575"></a> <span class="p">{</span>
<a name="line-576"></a> <span class="n">setCursor</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">CrossCursor</span><span class="p">);</span>
<a name="line-577"></a> <span class="p">}</span>
<a name="line-578"></a><span class="p">}</span>
<a name="line-579"></a>
<a name="line-580"></a><span class="kt">void</span> <span class="n">SketchWidget</span><span class="o">::</span><span class="n">keyReleaseEvent</span><span class="p">(</span><span class="n">QKeyEvent</span><span class="o">*</span> <span class="n">e</span><span class="p">)</span>
<a name="line-581"></a><span class="p">{</span>
<a name="line-582"></a> <span class="n">QWidget</span><span class="o">::</span><span class="n">keyReleaseEvent</span><span class="p">(</span><span class="n">e</span><span class="p">);</span>
<a name="line-583"></a>
<a name="line-584"></a> <span class="k">if</span> <span class="p">(</span><span class="n">e</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_Control</span><span class="p">)</span>
<a name="line-585"></a> <span class="p">{</span>
<a name="line-586"></a> <span class="n">setCursor</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">drawCursor</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>
<a name="line-590"></a><span class="kt">void</span> <span class="n">SketchWidget</span><span class="o">::</span><span class="n">paintEvent</span><span class="p">(</span><span class="n">QPaintEvent</span><span class="o">*</span><span class="p">)</span>
<a name="line-591"></a><span class="p">{</span>
<a name="line-592"></a> <span class="n">QPainter</span> <span class="n">p</span><span class="p">(</span><span class="k">this</span><span class="p">);</span>
<a name="line-593"></a>
<a name="line-594"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">isClear</span><span class="p">)</span>
<a name="line-595"></a> <span class="p">{</span>
<a name="line-596"></a> <span class="n">p</span><span class="p">.</span><span class="n">drawText</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">width</span><span class="p">(),</span> <span class="n">height</span><span class="p">(),</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AlignCenter</span><span class="p">,</span>
<a name="line-597"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Draw a sketch here</span><span class="se">\n</span><span class="s">to perform a</span><span class="se">\n</span><span class="s">Fuzzy search&quot;</span><span class="p">));</span>
<a name="line-598"></a> <span class="p">}</span>
<a name="line-599"></a> <span class="k">else</span>
<a name="line-600"></a> <span class="p">{</span>
<a name="line-601"></a> <span class="n">p</span><span class="p">.</span><span class="n">drawPixmap</span><span class="p">(</span><span class="n">QPoint</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">d</span><span class="o">-&gt;</span><span class="n">pixmap</span><span class="p">);</span>
<a name="line-602"></a> <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">SketchWidget</span><span class="o">::</span><span class="n">drawLineTo</span><span class="p">(</span><span class="k">const</span> <span class="n">QPoint</span><span class="o">&amp;</span> <span class="n">endPoint</span><span class="p">)</span>
<a name="line-606"></a><span class="p">{</span>
<a name="line-607"></a> <span class="n">drawLineTo</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">penWidth</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">penColor</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">lastPoint</span><span class="p">,</span> <span class="n">endPoint</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">SketchWidget</span><span class="o">::</span><span class="n">drawLineTo</span><span class="p">(</span><span class="kt">int</span> <span class="n">width</span><span class="p">,</span> <span class="k">const</span> <span class="n">QColor</span><span class="o">&amp;</span> <span class="n">color</span><span class="p">,</span> <span class="k">const</span> <span class="n">QPoint</span><span class="o">&amp;</span> <span class="n">start</span><span class="p">,</span> <span class="k">const</span> <span class="n">QPoint</span><span class="o">&amp;</span> <span class="n">end</span><span class="p">)</span>
<a name="line-611"></a><span class="p">{</span>
<a name="line-612"></a> <span class="n">QPainter</span> <span class="n">painter</span><span class="p">(</span><span class="o">&amp;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">pixmap</span><span class="p">);</span>
<a name="line-613"></a> <span class="n">painter</span><span class="p">.</span><span class="n">setPen</span><span class="p">(</span><span class="n">QPen</span><span class="p">(</span><span class="n">color</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">SolidLine</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">RoundCap</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">RoundJoin</span><span class="p">));</span>
<a name="line-614"></a> <span class="n">painter</span><span class="p">.</span><span class="n">drawLine</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-615"></a>
<a name="line-616"></a> <span class="kt">int</span> <span class="n">rad</span> <span class="o">=</span> <span class="p">(</span><span class="n">width</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-617"></a>
<a name="line-618"></a> <span class="n">update</span><span class="p">(</span><span class="n">QRect</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="n">end</span><span class="p">).</span><span class="n">normalized</span><span class="p">().</span><span class="n">adjusted</span><span class="p">(</span><span class="o">-</span><span class="n">rad</span><span class="p">,</span> <span class="o">-</span><span class="n">rad</span><span class="p">,</span> <span class="o">+</span><span class="n">rad</span><span class="p">,</span> <span class="o">+</span><span class="n">rad</span><span class="p">));</span>
<a name="line-619"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">lastPoint</span> <span class="o">=</span> <span class="n">end</span><span class="p">;</span>
<a name="line-620"></a><span class="p">}</span>
<a name="line-621"></a>
<a name="line-622"></a><span class="kt">void</span> <span class="n">SketchWidget</span><span class="o">::</span><span class="n">drawPath</span><span class="p">(</span><span class="kt">int</span> <span class="n">width</span><span class="p">,</span> <span class="k">const</span> <span class="n">QColor</span><span class="o">&amp;</span> <span class="n">color</span><span class="p">,</span> <span class="k">const</span> <span class="n">QPainterPath</span><span class="o">&amp;</span> <span class="n">path</span><span class="p">)</span>
<a name="line-623"></a><span class="p">{</span>
<a name="line-624"></a> <span class="n">QPainter</span> <span class="n">painter</span><span class="p">(</span><span class="o">&amp;</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">pixmap</span><span class="p">);</span>
<a name="line-625"></a> <span class="n">painter</span><span class="p">.</span><span class="n">setPen</span><span class="p">(</span><span class="n">QPen</span><span class="p">(</span><span class="n">color</span><span class="p">,</span> <span class="n">width</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">SolidLine</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">RoundCap</span><span class="p">,</span> <span class="n">Qt</span><span class="o">::</span><span class="n">RoundJoin</span><span class="p">));</span>
<a name="line-626"></a> <span class="n">painter</span><span class="p">.</span><span class="n">drawPath</span><span class="p">(</span><span class="n">path</span><span class="p">);</span>
<a name="line-627"></a>
<a name="line-628"></a> <span class="n">update</span><span class="p">(</span><span class="n">path</span><span class="p">.</span><span class="n">boundingRect</span><span class="p">().</span><span class="n">toRect</span><span class="p">());</span>
<a name="line-629"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">lastPoint</span> <span class="o">=</span> <span class="n">path</span><span class="p">.</span><span class="n">currentPosition</span><span class="p">().</span><span class="n">toPoint</span><span class="p">();</span>
<a name="line-630"></a><span class="p">}</span>
<a name="line-631"></a>
<a name="line-632"></a><span class="kt">void</span> <span class="n">SketchWidget</span><span class="o">::</span><span class="n">updateDrawCursor</span><span class="p">()</span>
<a name="line-633"></a><span class="p">{</span>
<a name="line-634"></a> <span class="kt">int</span> <span class="n">size</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">penWidth</span><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">size</span> <span class="o">&gt;</span> <span class="mi">64</span><span class="p">)</span>
<a name="line-637"></a> <span class="p">{</span>
<a name="line-638"></a> <span class="n">size</span> <span class="o">=</span> <span class="mi">64</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">if</span> <span class="p">(</span><span class="n">size</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">)</span>
<a name="line-642"></a> <span class="p">{</span>
<a name="line-643"></a> <span class="n">size</span> <span class="o">=</span> <span class="mi">3</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">QPixmap</span> <span class="n">pix</span><span class="p">(</span><span class="n">size</span><span class="p">,</span> <span class="n">size</span><span class="p">);</span>
<a name="line-647"></a> <span class="n">pix</span><span class="p">.</span><span class="n">fill</span><span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">transparent</span><span class="p">);</span>
<a name="line-648"></a>
<a name="line-649"></a> <span class="n">QPainter</span> <span class="nf">p</span><span class="p">(</span><span class="o">&amp;</span><span class="n">pix</span><span class="p">);</span>
<a name="line-650"></a> <span class="n">p</span><span class="p">.</span><span class="n">setRenderHint</span><span class="p">(</span><span class="n">QPainter</span><span class="o">::</span><span class="n">Antialiasing</span><span class="p">,</span> <span class="nb">true</span><span class="p">);</span>
<a name="line-651"></a> <span class="n">p</span><span class="p">.</span><span class="n">drawEllipse</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">size</span> <span class="o">-</span> <span class="mi">2</span><span class="p">,</span> <span class="n">size</span> <span class="o">-</span> <span class="mi">2</span><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">drawCursor</span> <span class="o">=</span> <span class="n">QCursor</span><span class="p">(</span><span class="n">pix</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="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/52.html b/static/reports/cppcheck/master/52.html
index 09b07326a..68be8a29d 100644
--- a/static/reports/cppcheck/master/52.html
+++ b/static/reports/cppcheck/master/52.html
@@ -1,2327 +1,2327 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/utilities/geolocation/geoiface/items/gpsitemcontainer.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/utilities/geolocation/geoiface/items/gpsitemcontainer.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> gpsitemcontainer.cpp</p>
<a href='52.html#line-835'> shadowVar 835</a><a href='52.html#line-948'> shadowVar 948</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 : 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) 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="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> <span class="n">den</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<a name="line-79"></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-80"></a>
<a name="line-81"></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-82"></a> <span class="p">{</span>
<a name="line-83"></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-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="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-87"></a> <span class="p">{</span>
<a name="line-88"></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-89"></a> <span class="p">}</span>
<a name="line-90"></a>
<a name="line-91"></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-92"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-93"></a> <span class="p">}</span>
<a name="line-94"></a>
<a name="line-95"></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-96"></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-97"></a> <span class="p">{</span>
<a name="line-98"></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-99"></a>
<a name="line-100"></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-101"></a> <span class="p">{</span>
<a name="line-102"></a> <span class="n">success</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-103"></a> <span class="k">break</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="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-107"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-108"></a> <span class="p">}</span>
<a name="line-109"></a>
<a name="line-110"></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-111"></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-112"></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-113"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-114"></a>
<a name="line-115"></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-116"></a> <span class="c1">/// @todo I don&#39;t know a straightforward way to convert a byte array to XMP</span>
<a name="line-117"></a> <span class="n">success</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-118"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-119"></a>
<a name="line-120"></a> <span class="k">default</span><span class="o">:</span>
<a name="line-121"></a> <span class="n">success</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-122"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-123"></a> <span class="p">}</span>
<a name="line-124"></a> <span class="p">}</span>
<a name="line-125"></a>
<a name="line-126"></a> <span class="k">return</span> <span class="n">success</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">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-130"></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-131"></a> <span class="n">m_url</span><span class="p">(</span><span class="n">url</span><span class="p">),</span>
<a name="line-132"></a> <span class="n">m_dateTime</span><span class="p">(),</span>
<a name="line-133"></a> <span class="n">m_dirty</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
<a name="line-134"></a> <span class="n">m_gpsData</span><span class="p">(),</span>
<a name="line-135"></a> <span class="n">m_savedState</span><span class="p">(),</span>
<a name="line-136"></a> <span class="n">m_tagListDirty</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
<a name="line-137"></a> <span class="n">m_tagList</span><span class="p">(),</span>
<a name="line-138"></a> <span class="n">m_savedTagList</span><span class="p">(),</span>
<a name="line-139"></a> <span class="n">m_writeXmpTags</span><span class="p">(</span><span class="nb">true</span><span class="p">)</span>
<a name="line-140"></a><span class="p">{</span>
<a name="line-141"></a><span class="p">}</span>
<a name="line-142"></a>
<a name="line-143"></a><span class="n">GPSItemContainer</span><span class="o">::~</span><span class="n">GPSItemContainer</span><span class="p">()</span>
<a name="line-144"></a><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">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-148"></a><span class="p">{</span>
<a name="line-149"></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-150"></a>
<a name="line-151"></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-152"></a> <span class="p">{</span>
<a name="line-153"></a> <span class="c1">// It is possible that no sidecar file has yet been created.</span>
<a name="line-154"></a> <span class="c1">// If writing to sidecar file is activated, we ignore the loading error of the metadata.</span>
<a name="line-155"></a>
<a name="line-156"></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-157"></a> <span class="p">{</span>
<a name="line-158"></a> <span class="k">return</span> <span class="k">nullptr</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="k">return</span> <span class="n">meta</span><span class="p">.</span><span class="n">take</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="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-166"></a><span class="p">{</span>
<a name="line-167"></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-168"></a> <span class="p">{</span>
<a name="line-169"></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-170"></a>
<a name="line-171"></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-172"></a> <span class="p">{</span>
<a name="line-173"></a> <span class="k">return</span> <span class="mi">1</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="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-177"></a> <span class="p">{</span>
<a name="line-178"></a> <span class="k">return</span> <span class="mi">2</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">dopValue</span> <span class="o">&lt;</span> <span class="mi">10</span><span class="p">)</span>
<a name="line-182"></a> <span class="p">{</span>
<a name="line-183"></a> <span class="k">return</span> <span class="mi">3</span><span class="p">;</span>
<a name="line-184"></a> <span class="p">}</span>
<a name="line-185"></a>
<a name="line-186"></a> <span class="k">return</span> <span class="mi">4</span><span class="p">;</span>
<a name="line-187"></a> <span class="p">}</span>
<a name="line-188"></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-189"></a> <span class="p">{</span>
<a name="line-190"></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-191"></a> <span class="p">{</span>
<a name="line-192"></a> <span class="k">return</span> <span class="mi">4</span><span class="p">;</span>
<a name="line-193"></a> <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">data</span><span class="p">.</span><span class="n">hasNSatellites</span><span class="p">())</span>
<a name="line-196"></a> <span class="p">{</span>
<a name="line-197"></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-198"></a> <span class="p">{</span>
<a name="line-199"></a> <span class="k">return</span> <span class="mi">4</span><span class="p">;</span>
<a name="line-200"></a> <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">// no warning level</span>
<a name="line-204"></a>
<a name="line-205"></a> <span class="k">return</span> <span class="o">-</span><span class="mi">1</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="kt">bool</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">loadImageData</span><span class="p">()</span>
<a name="line-209"></a><span class="p">{</span>
<a name="line-210"></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-211"></a>
<a name="line-212"></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-213"></a> <span class="p">{</span>
<a name="line-214"></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-215"></a> <span class="p">}</span>
<a name="line-216"></a>
<a name="line-217"></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-218"></a> <span class="p">{</span>
<a name="line-219"></a> <span class="c1">// Get date from filesystem.</span>
<a name="line-220"></a>
<a name="line-221"></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-222"></a>
<a name="line-223"></a><span class="cp">#if (QT_VERSION &gt;= QT_VERSION_CHECK(5, 10, 0))</span>
<a name="line-224"></a>
<a name="line-225"></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-226"></a>
<a name="line-227"></a><span class="cp">#else</span>
<a name="line-228"></a>
<a name="line-229"></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-230"></a>
<a name="line-231"></a><span class="cp">#endif</span>
<a name="line-232"></a>
<a name="line-233"></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-234"></a>
<a name="line-235"></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-236"></a> <span class="p">{</span>
<a name="line-237"></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-238"></a> <span class="p">}</span>
<a name="line-239"></a> <span class="k">else</span>
<a name="line-240"></a> <span class="p">{</span>
<a name="line-241"></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-242"></a> <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="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">meta</span><span class="p">)</span>
<a name="line-246"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-247"></a>
<a name="line-248"></a> <span class="c1">// The way we read the coordinates here is problematic</span>
<a name="line-249"></a> <span class="c1">// if the coordinates were in the file initially, but</span>
<a name="line-250"></a> <span class="c1">// the user deleted them in the database. Then we still load</span>
<a name="line-251"></a> <span class="c1">// them from the file. On the other hand, we can not clear</span>
<a name="line-252"></a> <span class="c1">// the coordinates, because then we would loose them if</span>
<a name="line-253"></a> <span class="c1">// they are only stored in the database.</span>
<a name="line-254"></a><span class="cm">/*</span>
<a name="line-255"></a><span class="cm"> m_gpsData.clear();</span>
<a name="line-256"></a><span class="cm">*/</span>
<a name="line-257"></a>
<a name="line-258"></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-259"></a> <span class="p">{</span>
<a name="line-260"></a> <span class="c1">// could not load the coordinates from the interface,</span>
<a name="line-261"></a> <span class="c1">// read them directly from the file</span>
<a name="line-262"></a>
<a name="line-263"></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-264"></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-265"></a>
<a name="line-266"></a> <span class="k">if</span> <span class="p">(</span><span class="n">haveCoordinates</span><span class="p">)</span>
<a name="line-267"></a> <span class="p">{</span>
<a name="line-268"></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-269"></a> <span class="kt">double</span> <span class="n">alt</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">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-272"></a> <span class="p">{</span>
<a name="line-273"></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-274"></a> <span class="p">}</span>
<a name="line-275"></a>
<a name="line-276"></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-277"></a> <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="cm">/**</span>
<a name="line-281"></a><span class="cm"> * @todo It seems that exiv2 provides EXIF entries if XMP sidecar entries exist,</span>
<a name="line-282"></a><span class="cm"> * therefore no need to read XMP as well?</span>
<a name="line-283"></a><span class="cm"> */</span>
<a name="line-284"></a>
<a name="line-285"></a> <span class="c1">// read the remaining GPS information from the file:</span>
<a name="line-286"></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-287"></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-288"></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-289"></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-290"></a>
<a name="line-291"></a> <span class="k">if</span> <span class="p">(</span><span class="n">success</span><span class="p">)</span>
<a name="line-292"></a> <span class="p">{</span>
<a name="line-293"></a> <span class="c1">// be relaxed about 0/0</span>
<a name="line-294"></a>
<a name="line-295"></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-296"></a> <span class="p">{</span>
<a name="line-297"></a> <span class="n">den</span> <span class="o">=</span> <span class="mf">1.0</span><span class="p">;</span>
<a name="line-298"></a> <span class="p">}</span>
<a name="line-299"></a>
<a name="line-300"></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-301"></a> <span class="n">qreal</span> <span class="n">FactorToMetersPerSecond</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">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-304"></a> <span class="p">{</span>
<a name="line-305"></a> <span class="c1">// km/h = 1000 * 3600</span>
<a name="line-306"></a>
<a name="line-307"></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-308"></a> <span class="p">}</span>
<a name="line-309"></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-310"></a> <span class="p">{</span>
<a name="line-311"></a> <span class="c1">// TODO: someone please check that this is the &#39;right&#39; mile</span>
<a name="line-312"></a> <span class="c1">// miles/hour = 1609.344 meters / hour = 1609.344 meters / 3600 seconds</span>
<a name="line-313"></a>
<a name="line-314"></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-315"></a> <span class="p">}</span>
<a name="line-316"></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-317"></a> <span class="p">{</span>
<a name="line-318"></a> <span class="c1">// speed is in knots.</span>
<a name="line-319"></a> <span class="c1">// knot = one nautical mile / hour = 1852 meters / hour = 1852 meters / 3600 seconds</span>
<a name="line-320"></a>
<a name="line-321"></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-322"></a> <span class="p">}</span>
<a name="line-323"></a> <span class="k">else</span>
<a name="line-324"></a> <span class="p">{</span>
<a name="line-325"></a> <span class="n">success</span> <span class="o">=</span> <span class="nb">false</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="k">if</span> <span class="p">(</span><span class="n">success</span><span class="p">)</span>
<a name="line-329"></a> <span class="p">{</span>
<a name="line-330"></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-331"></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-332"></a> <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="c1">// number of satellites</span>
<a name="line-336"></a>
<a name="line-337"></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-338"></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-339"></a>
<a name="line-340"></a> <span class="k">if</span> <span class="p">(</span><span class="n">satellitesOkay</span><span class="p">)</span>
<a name="line-341"></a> <span class="p">{</span>
<a name="line-342"></a> <span class="cm">/**</span>
<a name="line-343"></a><span class="cm"> * @todo Here we only accept a single integer denoting the number of satellites used</span>
<a name="line-344"></a><span class="cm"> * but not detailed information about all satellites.</span>
<a name="line-345"></a><span class="cm"> */</span>
<a name="line-346"></a>
<a name="line-347"></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-348"></a>
<a name="line-349"></a> <span class="k">if</span> <span class="p">(</span><span class="n">satellitesOkay</span><span class="p">)</span>
<a name="line-350"></a> <span class="p">{</span>
<a name="line-351"></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-352"></a> <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="c1">// fix type / measure mode</span>
<a name="line-356"></a>
<a name="line-357"></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-358"></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-359"></a>
<a name="line-360"></a> <span class="k">if</span> <span class="p">(</span><span class="n">measureModeOkay</span><span class="p">)</span>
<a name="line-361"></a> <span class="p">{</span>
<a name="line-362"></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-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">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-367"></a> <span class="p">{</span>
<a name="line-368"></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-369"></a> <span class="p">}</span>
<a name="line-370"></a> <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="c1">// read the DOP value:</span>
<a name="line-374"></a>
<a name="line-375"></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-376"></a>
<a name="line-377"></a> <span class="k">if</span> <span class="p">(</span><span class="n">success</span><span class="p">)</span>
<a name="line-378"></a> <span class="p">{</span>
<a name="line-379"></a> <span class="c1">// be relaxed about 0/0</span>
<a name="line-380"></a>
<a name="line-381"></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-382"></a> <span class="p">{</span>
<a name="line-383"></a> <span class="n">den</span> <span class="o">=</span> <span class="mf">1.0</span><span class="p">;</span>
<a name="line-384"></a> <span class="p">}</span>
<a name="line-385"></a>
<a name="line-386"></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-387"></a>
<a name="line-388"></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-389"></a> <span class="p">}</span>
<a name="line-390"></a>
<a name="line-391"></a> <span class="c1">// mark us as not-dirty, because the data was just loaded:</span>
<a name="line-392"></a>
<a name="line-393"></a> <span class="n">m_dirty</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-394"></a> <span class="n">m_savedState</span> <span class="o">=</span> <span class="n">m_gpsData</span><span class="p">;</span>
<a name="line-395"></a>
<a name="line-396"></a> <span class="n">emitDataChanged</span><span class="p">();</span>
<a name="line-397"></a>
<a name="line-398"></a> <span class="k">return</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="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-402"></a><span class="p">{</span>
<a name="line-403"></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-404"></a> <span class="p">{</span>
<a name="line-405"></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-406"></a> <span class="p">}</span>
<a name="line-407"></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-408"></a> <span class="p">{</span>
<a name="line-409"></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-410"></a> <span class="p">{</span>
<a name="line-411"></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-412"></a> <span class="p">}</span>
<a name="line-413"></a>
<a name="line-414"></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-415"></a> <span class="p">}</span>
<a name="line-416"></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-417"></a> <span class="p">{</span>
<a name="line-418"></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-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">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-421"></a> <span class="p">{</span>
<a name="line-422"></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-423"></a> <span class="p">{</span>
<a name="line-424"></a> <span class="k">return</span> <span class="n">QString</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">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-428"></a> <span class="p">}</span>
<a name="line-429"></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-430"></a> <span class="p">{</span>
<a name="line-431"></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-432"></a> <span class="p">{</span>
<a name="line-433"></a> <span class="k">return</span> <span class="n">QString</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="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-437"></a> <span class="p">}</span>
<a name="line-438"></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-439"></a> <span class="p">{</span>
<a name="line-440"></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-441"></a> <span class="p">{</span>
<a name="line-442"></a> <span class="k">return</span> <span class="n">QString</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="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-446"></a> <span class="p">}</span>
<a name="line-447"></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-448"></a> <span class="p">{</span>
<a name="line-449"></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-450"></a> <span class="p">{</span>
<a name="line-451"></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-452"></a> <span class="p">{</span>
<a name="line-453"></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-454"></a> <span class="p">}</span>
<a name="line-455"></a>
<a name="line-456"></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-457"></a> <span class="p">{</span>
<a name="line-458"></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-459"></a> <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">m_gpsData</span><span class="p">.</span><span class="n">hasNSatellites</span><span class="p">())</span>
<a name="line-462"></a> <span class="p">{</span>
<a name="line-463"></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-464"></a> <span class="p">}</span>
<a name="line-465"></a> <span class="p">}</span>
<a name="line-466"></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-467"></a> <span class="p">{</span>
<a name="line-468"></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-469"></a>
<a name="line-470"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">warningLevel</span><span class="p">)</span>
<a name="line-471"></a> <span class="p">{</span>
<a name="line-472"></a> <span class="k">case</span> <span class="mi">1</span><span class="o">:</span>
<a name="line-473"></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-474"></a>
<a name="line-475"></a> <span class="k">case</span> <span class="mi">2</span><span class="o">:</span>
<a name="line-476"></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-477"></a>
<a name="line-478"></a> <span class="k">case</span> <span class="mi">3</span><span class="o">:</span>
<a name="line-479"></a> <span class="c1">// orange</span>
<a name="line-480"></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-481"></a>
<a name="line-482"></a> <span class="k">case</span> <span class="mi">4</span><span class="o">:</span>
<a name="line-483"></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-484"></a>
<a name="line-485"></a> <span class="k">default</span><span class="o">:</span>
<a name="line-486"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-487"></a> <span class="p">}</span>
<a name="line-488"></a> <span class="p">}</span>
<a name="line-489"></a> <span class="p">}</span>
<a name="line-490"></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-491"></a> <span class="p">{</span>
<a name="line-492"></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-493"></a> <span class="p">{</span>
<a name="line-494"></a> <span class="k">return</span> <span class="n">QString</span><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="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-498"></a> <span class="p">}</span>
<a name="line-499"></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-500"></a> <span class="p">{</span>
<a name="line-501"></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-502"></a> <span class="p">{</span>
<a name="line-503"></a> <span class="k">return</span> <span class="n">QString</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="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-507"></a> <span class="p">}</span>
<a name="line-508"></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-509"></a> <span class="p">{</span>
<a name="line-510"></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-511"></a> <span class="p">{</span>
<a name="line-512"></a> <span class="k">return</span> <span class="n">QString</span><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="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-516"></a> <span class="p">}</span>
<a name="line-517"></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-518"></a> <span class="p">{</span>
<a name="line-519"></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-520"></a> <span class="p">{</span>
<a name="line-521"></a> <span class="k">return</span> <span class="n">QString</span><span class="p">();</span>
<a name="line-522"></a> <span class="p">}</span>
<a name="line-523"></a>
<a name="line-524"></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-525"></a> <span class="p">}</span>
<a name="line-526"></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-527"></a> <span class="p">{</span>
<a name="line-528"></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-529"></a> <span class="p">{</span>
<a name="line-530"></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-531"></a> <span class="p">}</span>
<a name="line-532"></a>
<a name="line-533"></a> <span class="k">return</span> <span class="n">QString</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">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-536"></a> <span class="p">{</span>
<a name="line-537"></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-538"></a> <span class="p">{</span>
<a name="line-539"></a>
<a name="line-540"></a> <span class="n">QString</span> <span class="n">myTagsList</span><span class="p">;</span>
<a name="line-541"></a>
<a name="line-542"></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-543"></a> <span class="p">{</span>
<a name="line-544"></a> <span class="n">QString</span> <span class="n">myTag</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">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-547"></a> <span class="p">{</span>
<a name="line-548"></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-549"></a>
<a name="line-550"></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-551"></a> <span class="p">{</span>
<a name="line-552"></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-553"></a> <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="o">!</span><span class="n">myTagsList</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
<a name="line-557"></a> <span class="p">{</span>
<a name="line-558"></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-559"></a> <span class="p">}</span>
<a name="line-560"></a>
<a name="line-561"></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-562"></a> <span class="p">}</span>
<a name="line-563"></a>
<a name="line-564"></a> <span class="k">return</span> <span class="n">myTagsList</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="k">return</span> <span class="n">QString</span><span class="p">();</span>
<a name="line-568"></a> <span class="p">}</span>
<a name="line-569"></a>
<a name="line-570"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="p">();</span>
<a name="line-571"></a><span class="p">}</span>
<a name="line-572"></a>
<a name="line-573"></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-574"></a><span class="p">{</span>
<a name="line-575"></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-576"></a> <span class="n">m_dirty</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-577"></a> <span class="n">emitDataChanged</span><span class="p">();</span>
<a name="line-578"></a><span class="p">}</span>
<a name="line-579"></a>
<a name="line-580"></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-581"></a><span class="p">{</span>
<a name="line-582"></a> <span class="n">m_model</span> <span class="o">=</span> <span class="n">model</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">emitDataChanged</span><span class="p">()</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">m_model</span><span class="p">)</span>
<a name="line-588"></a> <span class="p">{</span>
<a name="line-589"></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-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="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-594"></a><span class="p">{</span>
<a name="line-595"></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-596"></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-597"></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-598"></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-599"></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-600"></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-601"></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-602"></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-603"></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-604"></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-605"></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-606"></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-607"></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-608"></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-609"></a><span class="p">}</span>
<a name="line-610"></a>
<a name="line-611"></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-612"></a><span class="p">{</span>
<a name="line-613"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">column</span><span class="p">)</span>
<a name="line-614"></a> <span class="p">{</span>
<a name="line-615"></a> <span class="k">case</span> <span class="nl">ColumnThumbnail</span><span class="p">:</span>
<a name="line-616"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-617"></a>
<a name="line-618"></a> <span class="k">case</span> <span class="nl">ColumnFilename</span><span class="p">:</span>
<a name="line-619"></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-620"></a>
<a name="line-621"></a> <span class="k">case</span> <span class="nl">ColumnDateTime</span><span class="p">:</span>
<a name="line-622"></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-623"></a>
<a name="line-624"></a> <span class="k">case</span> <span class="nl">ColumnAltitude</span><span class="p">:</span>
<a name="line-625"></a> <span class="p">{</span>
<a name="line-626"></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-627"></a> <span class="p">{</span>
<a name="line-628"></a> <span class="k">return</span> <span class="nb">false</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">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-632"></a> <span class="p">{</span>
<a name="line-633"></a> <span class="k">return</span> <span class="nb">true</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">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-637"></a> <span class="p">}</span>
<a name="line-638"></a>
<a name="line-639"></a> <span class="k">case</span> <span class="nl">ColumnNSatellites</span><span class="p">:</span>
<a name="line-640"></a> <span class="p">{</span>
<a name="line-641"></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-642"></a> <span class="p">{</span>
<a name="line-643"></a> <span class="k">return</span> <span class="nb">false</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="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-647"></a> <span class="p">{</span>
<a name="line-648"></a> <span class="k">return</span> <span class="nb">true</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">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-652"></a> <span class="p">}</span>
<a name="line-653"></a>
<a name="line-654"></a> <span class="k">case</span> <span class="nl">ColumnAccuracy</span><span class="p">:</span>
<a name="line-655"></a> <span class="p">{</span>
<a name="line-656"></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-657"></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-658"></a>
<a name="line-659"></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-660"></a> <span class="p">{</span>
<a name="line-661"></a> <span class="k">return</span> <span class="nb">false</span><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">otherWarning</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">true</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">myWarning</span> <span class="o">!=</span> <span class="n">otherWarning</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="p">(</span><span class="n">myWarning</span> <span class="o">&lt;</span> <span class="n">otherWarning</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="c1">// TODO: this may not be the best way to sort images with equal warning levels</span>
<a name="line-675"></a> <span class="c1">// but it works for now</span>
<a name="line-676"></a>
<a name="line-677"></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-678"></a> <span class="p">{</span>
<a name="line-679"></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-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">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-683"></a> <span class="p">{</span>
<a name="line-684"></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-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">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-688"></a> <span class="p">{</span>
<a name="line-689"></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-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">&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-693"></a> <span class="p">{</span>
<a name="line-694"></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-695"></a> <span class="p">}</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">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-698"></a> <span class="p">{</span>
<a name="line-699"></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-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">&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-703"></a> <span class="p">{</span>
<a name="line-704"></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-705"></a> <span class="p">}</span>
<a name="line-706"></a>
<a name="line-707"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-708"></a> <span class="p">}</span>
<a name="line-709"></a>
<a name="line-710"></a> <span class="k">case</span> <span class="nl">ColumnDOP</span><span class="p">:</span>
<a name="line-711"></a> <span class="p">{</span>
<a name="line-712"></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-713"></a> <span class="p">{</span>
<a name="line-714"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-715"></a> <span class="p">}</span>
<a name="line-716"></a>
<a name="line-717"></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-718"></a> <span class="p">{</span>
<a name="line-719"></a> <span class="k">return</span> <span class="nb">true</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">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-723"></a> <span class="p">}</span>
<a name="line-724"></a>
<a name="line-725"></a> <span class="k">case</span> <span class="nl">ColumnFixType</span><span class="p">:</span>
<a name="line-726"></a> <span class="p">{</span>
<a name="line-727"></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-728"></a> <span class="p">{</span>
<a name="line-729"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-730"></a> <span class="p">}</span>
<a name="line-731"></a>
<a name="line-732"></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-733"></a> <span class="p">{</span>
<a name="line-734"></a> <span class="k">return</span> <span class="nb">true</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">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-738"></a> <span class="p">}</span>
<a name="line-739"></a>
<a name="line-740"></a> <span class="k">case</span> <span class="nl">ColumnSpeed</span><span class="p">:</span>
<a name="line-741"></a> <span class="p">{</span>
<a name="line-742"></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-743"></a> <span class="p">{</span>
<a name="line-744"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-745"></a> <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="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-748"></a> <span class="p">{</span>
<a name="line-749"></a> <span class="k">return</span> <span class="nb">true</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">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-753"></a> <span class="p">}</span>
<a name="line-754"></a>
<a name="line-755"></a> <span class="k">case</span> <span class="nl">ColumnLatitude</span><span class="p">:</span>
<a name="line-756"></a> <span class="p">{</span>
<a name="line-757"></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-758"></a> <span class="p">{</span>
<a name="line-759"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-760"></a> <span class="p">}</span>
<a name="line-761"></a>
<a name="line-762"></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-763"></a> <span class="p">{</span>
<a name="line-764"></a> <span class="k">return</span> <span class="nb">true</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">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-768"></a> <span class="p">}</span>
<a name="line-769"></a>
<a name="line-770"></a> <span class="k">case</span> <span class="nl">ColumnLongitude</span><span class="p">:</span>
<a name="line-771"></a> <span class="p">{</span>
<a name="line-772"></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-773"></a> <span class="p">{</span>
<a name="line-774"></a> <span class="k">return</span> <span class="nb">false</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="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-778"></a> <span class="p">{</span>
<a name="line-779"></a> <span class="k">return</span> <span class="nb">true</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">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-783"></a> <span class="p">}</span>
<a name="line-784"></a>
<a name="line-785"></a> <span class="k">case</span> <span class="nl">ColumnStatus</span><span class="p">:</span>
<a name="line-786"></a> <span class="p">{</span>
<a name="line-787"></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-788"></a> <span class="p">}</span>
<a name="line-789"></a>
<a name="line-790"></a> <span class="k">default</span><span class="o">:</span>
<a name="line-791"></a> <span class="p">{</span>
<a name="line-792"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-793"></a> <span class="p">}</span>
<a name="line-794"></a> <span class="p">}</span>
<a name="line-795"></a><span class="p">}</span>
<a name="line-796"></a>
<a name="line-797"></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-798"></a><span class="p">{</span>
<a name="line-799"></a> <span class="n">SaveProperties</span> <span class="n">p</span><span class="p">;</span>
<a name="line-800"></a>
<a name="line-801"></a> <span class="c1">// do we have gps information?</span>
<a name="line-802"></a>
<a name="line-803"></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-804"></a> <span class="p">{</span>
<a name="line-805"></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-806"></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-807"></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-808"></a>
<a name="line-809"></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-810"></a> <span class="p">{</span>
<a name="line-811"></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-812"></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-813"></a> <span class="p">}</span>
<a name="line-814"></a> <span class="k">else</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">shouldRemoveAltitude</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-817"></a> <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">shouldRemoveCoordinates</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>
<a name="line-824"></a> <span class="k">return</span> <span class="n">p</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="n">QString</span> <span class="n">GPSItemContainer</span><span class="o">::</span><span class="n">saveChanges</span><span class="p">()</span>
<a name="line-828"></a><span class="p">{</span>
<a name="line-829"></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-830"></a>
<a name="line-831"></a> <span class="n">QString</span> <span class="n">returnString</span><span class="p">;</span>
<a name="line-832"></a>
<a name="line-833"></a> <span class="c1">// first try to write the information to the image file</span>
<a name="line-834"></a>
<a name="line-835"></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-836"></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-837"></a>
<a name="line-838"></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-839"></a> <span class="p">{</span>
<a name="line-840"></a> <span class="c1">// TODO: more verbosity!</span>
<a name="line-841"></a>
<a name="line-842"></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-843"></a> <span class="p">}</span>
<a name="line-844"></a> <span class="k">else</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">p</span><span class="p">.</span><span class="n">shouldWriteCoordinates</span><span class="p">)</span>
<a name="line-847"></a> <span class="p">{</span>
<a name="line-848"></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-849"></a> <span class="p">{</span>
<a name="line-850"></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-851"></a> <span class="p">}</span>
<a name="line-852"></a> <span class="k">else</span>
<a name="line-853"></a> <span class="p">{</span>
<a name="line-854"></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-855"></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-856"></a> <span class="p">}</span>
<a name="line-857"></a>
<a name="line-858"></a> <span class="c1">// write all other GPS information here too</span>
<a name="line-859"></a>
<a name="line-860"></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-861"></a> <span class="p">{</span>
<a name="line-862"></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-863"></a> <span class="s">&quot;Exif.GPSInfo.GPSSpeedRef&quot;</span><span class="p">,</span>
<a name="line-864"></a> <span class="s">&quot;Xmp.exif.GPSSpeedRef&quot;</span><span class="p">,</span>
<a name="line-865"></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-866"></a>
<a name="line-867"></a> <span class="k">if</span> <span class="p">(</span><span class="n">success</span><span class="p">)</span>
<a name="line-868"></a> <span class="p">{</span>
<a name="line-869"></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-870"></a>
<a name="line-871"></a> <span class="c1">// km/h = 0.001 * m / ( s * 1/(60*60) ) = 3.6 * m/s</span>
<a name="line-872"></a>
<a name="line-873"></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-874"></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-875"></a> <span class="p">}</span>
<a name="line-876"></a> <span class="p">}</span>
<a name="line-877"></a>
<a name="line-878"></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-879"></a> <span class="p">{</span>
<a name="line-880"></a> <span class="cm">/**</span>
<a name="line-881"></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-882"></a><span class="cm"> * number of satellites or more details about each satellite used. For now, we just write</span>
<a name="line-883"></a><span class="cm"> * the number of satellites. Are we using the correct format for the number of satellites here?</span>
<a name="line-884"></a><span class="cm"> */</span>
<a name="line-885"></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-886"></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-887"></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-888"></a> <span class="p">}</span>
<a name="line-889"></a>
<a name="line-890"></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-891"></a> <span class="p">{</span>
<a name="line-892"></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-893"></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-894"></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-895"></a> <span class="p">}</span>
<a name="line-896"></a>
<a name="line-897"></a> <span class="c1">// write DOP</span>
<a name="line-898"></a>
<a name="line-899"></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-900"></a> <span class="p">{</span>
<a name="line-901"></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-902"></a> <span class="s">&quot;Exif.GPSInfo.GPSDOP&quot;</span><span class="p">,</span>
<a name="line-903"></a> <span class="s">&quot;Xmp.exif.GPSDOP&quot;</span><span class="p">,</span>
<a name="line-904"></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-905"></a> <span class="p">}</span>
<a name="line-906"></a>
<a name="line-907"></a>
<a name="line-908"></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-909"></a> <span class="p">{</span>
<a name="line-910"></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-911"></a> <span class="p">}</span>
<a name="line-912"></a> <span class="p">}</span>
<a name="line-913"></a>
<a name="line-914"></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-915"></a> <span class="p">{</span>
<a name="line-916"></a> <span class="c1">// TODO: remove only the altitude if requested</span>
<a name="line-917"></a>
<a name="line-918"></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-919"></a>
<a name="line-920"></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-921"></a> <span class="p">{</span>
<a name="line-922"></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-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="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-927"></a> <span class="p">{</span>
<a name="line-928"></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-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">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-931"></a> <span class="p">{</span>
<a name="line-932"></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-933"></a> <span class="n">QString</span> <span class="n">tag</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">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-936"></a> <span class="p">{</span>
<a name="line-937"></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-938"></a> <span class="p">}</span>
<a name="line-939"></a>
<a name="line-940"></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-941"></a>
<a name="line-942"></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-943"></a> <span class="p">{</span>
<a name="line-944"></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-945"></a> <span class="p">}</span>
<a name="line-946"></a> <span class="p">}</span>
<a name="line-947"></a>
<a name="line-948"></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-949"></a>
<a name="line-950"></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-951"></a> <span class="p">{</span>
<a name="line-952"></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-953"></a> <span class="p">}</span>
<a name="line-954"></a>
<a name="line-955"></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-956"></a>
<a name="line-957"></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-958"></a> <span class="p">{</span>
<a name="line-959"></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-960"></a> <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>
<a name="line-964"></a> <span class="k">if</span> <span class="p">(</span><span class="n">success</span><span class="p">)</span>
<a name="line-965"></a> <span class="p">{</span>
<a name="line-966"></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-967"></a>
<a name="line-968"></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-969"></a> <span class="p">{</span>
<a name="line-970"></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-971"></a> <span class="p">}</span>
<a name="line-972"></a> <span class="k">else</span>
<a name="line-973"></a> <span class="p">{</span>
<a name="line-974"></a> <span class="n">m_dirty</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-975"></a> <span class="n">m_savedState</span> <span class="o">=</span> <span class="n">m_gpsData</span><span class="p">;</span>
<a name="line-976"></a> <span class="n">m_tagListDirty</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-977"></a> <span class="n">m_savedTagList</span> <span class="o">=</span> <span class="n">m_tagList</span><span class="p">;</span>
<a name="line-978"></a> <span class="p">}</span>
<a name="line-979"></a> <span class="p">}</span>
<a name="line-980"></a>
<a name="line-981"></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-982"></a> <span class="p">{</span>
<a name="line-983"></a> <span class="c1">// mark all changes as not dirty and tell the model:</span>
<a name="line-984"></a>
<a name="line-985"></a> <span class="n">emitDataChanged</span><span class="p">();</span>
<a name="line-986"></a> <span class="p">}</span>
<a name="line-987"></a>
<a name="line-988"></a> <span class="k">return</span> <span class="n">returnString</span><span class="p">;</span>
<a name="line-989"></a><span class="p">}</span>
<a name="line-990"></a>
<a name="line-991"></a><span class="cm">/**</span>
<a name="line-992"></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-993"></a><span class="cm"> */</span>
<a name="line-994"></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-995"></a><span class="p">{</span>
<a name="line-996"></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-997"></a> <span class="n">m_gpsData</span> <span class="o">=</span> <span class="n">container</span><span class="p">;</span>
<a name="line-998"></a> <span class="n">emitDataChanged</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="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-1002"></a><span class="p">{</span>
<a name="line-1003"></a> <span class="c1">// TODO: override == operator</span>
<a name="line-1004"></a>
<a name="line-1005"></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-1006"></a> <span class="p">{</span>
<a name="line-1007"></a> <span class="n">m_tagListDirty</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-1008"></a> <span class="p">}</span>
<a name="line-1009"></a> <span class="k">else</span>
<a name="line-1010"></a> <span class="p">{</span>
<a name="line-1011"></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-1012"></a> <span class="p">{</span>
<a name="line-1013"></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-1014"></a>
<a name="line-1015"></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-1016"></a> <span class="p">{</span>
<a name="line-1017"></a> <span class="n">m_tagListDirty</span> <span class="o">=</span> <span class="nb">true</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>
<a name="line-1021"></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-1022"></a> <span class="p">{</span>
<a name="line-1023"></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-1024"></a> <span class="p">{</span>
<a name="line-1025"></a> <span class="n">foundNotEqual</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-1026"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-1027"></a> <span class="p">}</span>
<a name="line-1028"></a> <span class="p">}</span>
<a name="line-1029"></a>
<a name="line-1030"></a> <span class="k">if</span> <span class="p">(</span><span class="n">foundNotEqual</span><span class="p">)</span>
<a name="line-1031"></a> <span class="p">{</span>
<a name="line-1032"></a> <span class="n">m_tagListDirty</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-1033"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-1034"></a> <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="n">m_tagList</span> <span class="o">=</span> <span class="n">tagList</span><span class="p">;</span>
<a name="line-1039"></a> <span class="n">emitDataChanged</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="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-1043"></a><span class="p">{</span>
<a name="line-1044"></a> <span class="k">return</span> <span class="n">m_dirty</span><span class="p">;</span>
<a name="line-1045"></a><span class="p">}</span>
<a name="line-1046"></a>
<a name="line-1047"></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-1048"></a><span class="p">{</span>
<a name="line-1049"></a> <span class="k">return</span> <span class="n">m_url</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="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-1053"></a><span class="p">{</span>
<a name="line-1054"></a> <span class="k">return</span> <span class="n">m_dateTime</span><span class="p">;</span>
<a name="line-1055"></a><span class="p">}</span>
<a name="line-1056"></a>
<a name="line-1057"></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-1058"></a><span class="p">{</span>
<a name="line-1059"></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-1060"></a><span class="p">}</span>
<a name="line-1061"></a>
<a name="line-1062"></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-1063"></a><span class="p">{</span>
<a name="line-1064"></a> <span class="k">return</span> <span class="n">m_gpsData</span><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="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-1068"></a><span class="p">{</span>
<a name="line-1069"></a> <span class="n">m_gpsData</span> <span class="o">=</span> <span class="n">container</span><span class="p">;</span>
<a name="line-1070"></a> <span class="n">m_dirty</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-1071"></a> <span class="n">emitDataChanged</span><span class="p">();</span>
<a name="line-1072"></a><span class="p">}</span>
<a name="line-1073"></a>
<a name="line-1074"></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-1075"></a><span class="p">{</span>
<a name="line-1076"></a> <span class="n">m_tagList</span> <span class="o">=</span> <span class="n">externalTagList</span><span class="p">;</span>
<a name="line-1077"></a> <span class="n">m_tagListDirty</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
<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">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-1082"></a><span class="p">{</span>
<a name="line-1083"></a> <span class="k">return</span> <span class="n">m_tagListDirty</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">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-1087"></a><span class="p">{</span>
<a name="line-1088"></a> <span class="k">return</span> <span class="n">m_tagList</span><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 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/53.html b/static/reports/cppcheck/master/53.html
index 13fee73af..8cb9a7e87 100644
--- a/static/reports/cppcheck/master/53.html
+++ b/static/reports/cppcheck/master/53.html
@@ -1,703 +1,2611 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/utilities/geolocation/geoiface/reversegeocoding/parsetagstring.h </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/utilities/geolocation/geoiface/reversegeocoding/rgtagmodel.cpp </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> parsetagstring.h</p>
-<a href='53.html#line-50'> shadowVar 50</a><a href='53.html#line-50'> shadowVar 50</a><a href='53.html#line-50'> shadowVar 50</a><a href='53.html#line-169'> shadowVar 169</a><a href='53.html#line-216'> shadowVar 216</a><a href='53.html#line-252'> shadowVar 252</a>
+ <p id="filename"><a href="index.html">Defects:</a> rgtagmodel.cpp</p>
+<a href='53.html#line-956'> shadowVar 956</a><a href='53.html#line-1052'> shadowVar 1052</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>
+<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</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-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 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-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;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="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-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-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="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>
+<a name="line-49"></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-50"></a><span class="p">{</span>
+<a name="line-51"></a><span class="k">public</span><span class="o">:</span>
+<a name="line-52"></a>
+<a name="line-53"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
+<a name="line-54"></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-55"></a> <span class="n">rootTag</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-56"></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-57"></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-58"></a> <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">QAbstractItemModel</span><span class="o">*</span> <span class="n">tagModel</span><span class="p">;</span>
+<a name="line-62"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="n">rootTag</span><span class="p">;</span>
+<a name="line-63"></a>
+<a name="line-64"></a> <span class="n">QModelIndex</span> <span class="n">parent</span><span class="p">;</span>
+<a name="line-65"></a> <span class="kt">int</span> <span class="n">startInsert</span><span class="p">;</span>
+<a name="line-66"></a> <span class="kt">int</span> <span class="n">endInsert</span><span class="p">;</span>
+<a name="line-67"></a>
+<a name="line-68"></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-69"></a>
+<a name="line-70"></a> <span class="n">QStringList</span> <span class="n">auxTagList</span><span class="p">;</span>
+<a name="line-71"></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-72"></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-73"></a>
+<a name="line-74"></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-75"></a><span class="p">};</span>
+<a name="line-76"></a>
+<a name="line-77"></a><span class="cm">/**</span>
+<a name="line-78"></a><span class="cm"> * Constructor</span>
+<a name="line-79"></a><span class="cm"> * @param externalTagModel The tag model found in the host application.</span>
+<a name="line-80"></a><span class="cm"> * @param parent The parent object</span>
+<a name="line-81"></a><span class="cm"> */</span>
+<a name="line-82"></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-83"></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-84"></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-85"></a><span class="p">{</span>
+<a name="line-86"></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-87"></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-88"></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-89"></a>
+<a name="line-90"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{Country}&quot;</span><span class="p">);</span>
+<a name="line-91"></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-92"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{County}&quot;</span><span class="p">);</span>
+<a name="line-93"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{City}&quot;</span><span class="p">);</span>
+<a name="line-94"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{Town}&quot;</span><span class="p">);</span>
+<a name="line-95"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{Village}&quot;</span><span class="p">);</span>
+<a name="line-96"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{Hamlet}&quot;</span><span class="p">);</span>
+<a name="line-97"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{Street}&quot;</span><span class="p">);</span>
+<a name="line-98"></a>
+<a name="line-99"></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-100"></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-101"></a>
+<a name="line-102"></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-103"></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-104"></a>
+<a name="line-105"></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-106"></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-107"></a>
+<a name="line-108"></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-109"></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-110"></a>
+<a name="line-111"></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-112"></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-113"></a>
+<a name="line-114"></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-115"></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-116"></a>
+<a name="line-117"></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-118"></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-119"></a>
+<a name="line-120"></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-121"></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-122"></a>
+<a name="line-123"></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-124"></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-125"></a>
+<a name="line-126"></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-127"></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-128"></a>
+<a name="line-129"></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-130"></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-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">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-133"></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-134"></a>
+<a name="line-135"></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-136"></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-137"></a>
+<a name="line-138"></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-139"></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-140"></a>
+<a name="line-141"></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-142"></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-143"></a>
+<a name="line-144"></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-145"></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-146"></a>
+<a name="line-147"></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-148"></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-149"></a><span class="p">}</span>
+<a name="line-150"></a>
+<a name="line-151"></a><span class="cm">/**</span>
+<a name="line-152"></a><span class="cm"> * Destructor</span>
+<a name="line-153"></a><span class="cm"> */</span>
+<a name="line-154"></a><span class="n">RGTagModel</span><span class="o">::~</span><span class="n">RGTagModel</span><span class="p">()</span>
+<a name="line-155"></a><span class="p">{</span>
+<a name="line-156"></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-157"></a> <span class="k">delete</span> <span class="n">d</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="cm">/**</span>
+<a name="line-161"></a><span class="cm"> * Returns the branch found at index</span>
+<a name="line-162"></a><span class="cm"> * @param index Current model index.</span>
+<a name="line-163"></a><span class="cm"> * @return The branch for the current index.</span>
+<a name="line-164"></a><span class="cm"> */</span>
+<a name="line-165"></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-166"></a><span class="p">{</span>
+<a name="line-167"></a> <span class="k">return</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-168"></a><span class="p">}</span>
+<a name="line-169"></a>
+<a name="line-170"></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-171"></a><span class="p">{</span>
+<a name="line-172"></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-173"></a> <span class="p">{</span>
+<a name="line-174"></a> <span class="k">return</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="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-178"></a> <span class="p">{</span>
+<a name="line-179"></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-180"></a> <span class="p">}</span>
+<a name="line-181"></a>
+<a name="line-182"></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-183"></a> <span class="p">{</span>
+<a name="line-184"></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-185"></a> <span class="p">}</span>
+<a name="line-186"></a><span class="p">}</span>
+<a name="line-187"></a>
+<a name="line-188"></a><span class="cm">/**</span>
+<a name="line-189"></a><span class="cm"> * Translates the model index from host&#39;s tag model to this model.</span>
+<a name="line-190"></a><span class="cm"> * @return The index of current old tag.</span>
+<a name="line-191"></a><span class="cm"> */</span>
+<a name="line-192"></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-193"></a><span class="p">{</span>
+<a name="line-194"></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-195"></a> <span class="p">{</span>
+<a name="line-196"></a> <span class="k">return</span> <span class="n">QModelIndex</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="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-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-201"></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-202"></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-203"></a> <span class="n">parents</span><span class="o">&lt;&lt;</span><span class="n">myIndex</span><span class="p">;</span>
+<a name="line-204"></a>
+<a name="line-205"></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-206"></a> <span class="p">{</span>
+<a name="line-207"></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-208"></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-209"></a> <span class="p">}</span>
+<a name="line-210"></a>
+<a name="line-211"></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-212"></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-213"></a>
+<a name="line-214"></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-215"></a> <span class="p">{</span>
+<a name="line-216"></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-217"></a> <span class="p">{</span>
+<a name="line-218"></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-219"></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-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">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span>
+<a name="line-221"></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-222"></a> <span class="p">}</span>
+<a name="line-223"></a>
+<a name="line-224"></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-225"></a>
+<a name="line-226"></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-227"></a> <span class="p">{</span>
+<a name="line-228"></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-229"></a> <span class="p">{</span>
+<a name="line-230"></a> <span class="n">where</span> <span class="o">=</span> <span class="n">i</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>
+<a name="line-235"></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-236"></a> <span class="p">{</span>
+<a name="line-237"></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-238"></a> <span class="p">}</span>
+<a name="line-239"></a> <span class="k">else</span>
+<a name="line-240"></a> <span class="p">{</span>
+<a name="line-241"></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-242"></a> <span class="p">{</span>
+<a name="line-243"></a> <span class="k">return</span> <span class="n">QModelIndex</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="c1">//TODO: check when rows are different</span>
+<a name="line-247"></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-248"></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-249"></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-250"></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-251"></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-252"></a>
+<a name="line-253"></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-254"></a> <span class="n">subModelBranch</span> <span class="o">=</span> <span class="n">newTreeBranch</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="n">level</span><span class="o">++</span><span class="p">;</span>
+<a name="line-258"></a> <span class="p">}</span>
+<a name="line-259"></a>
+<a name="line-260"></a> <span class="c1">//no index is found</span>
+<a name="line-261"></a> <span class="k">return</span> <span class="n">QModelIndex</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="cm">/**</span>
+<a name="line-265"></a><span class="cm"> * Translates the model index from this model to host&#39;s tag model.</span>
+<a name="line-266"></a><span class="cm"> * @return The index of a tag in host&#39;s tag model.</span>
+<a name="line-267"></a><span class="cm"> */</span>
+<a name="line-268"></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-269"></a><span class="p">{</span>
+<a name="line-270"></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-271"></a> <span class="p">{</span>
+<a name="line-272"></a> <span class="k">return</span> <span class="n">QModelIndex</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">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-276"></a>
-<a name="line-277"></a><span class="p">}</span> <span class="c1">// namespace Digikam</span>
+<a name="line-277"></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> <span class="c1">//static_cast&lt;TreeBranch*&gt;(tagModelIndex.internalPointer());</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-279"></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-280"></a> <span class="p">{</span>
+<a name="line-281"></a> <span class="k">return</span> <span class="n">QModelIndex</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="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-285"></a><span class="p">}</span>
+<a name="line-286"></a>
+<a name="line-287"></a><span class="cm">/**</span>
+<a name="line-288"></a><span class="cm"> * Adds a spacer tag.</span>
+<a name="line-289"></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-290"></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-291"></a><span class="cm"> *</span>
+<a name="line-292"></a><span class="cm"> */</span>
+<a name="line-293"></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-294"></a><span class="p">{</span>
+<a name="line-295"></a> <span class="c1">//TreeBranch* const parentBranch = parent.isValid() ? static_cast&lt;TreeBranch*&gt;(parent.internalPointer()) : d-&gt;rootTag;</span>
+<a name="line-296"></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-297"></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-298"></a>
+<a name="line-299"></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-300"></a> <span class="p">{</span>
+<a name="line-301"></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-302"></a> <span class="p">{</span>
+<a name="line-303"></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-304"></a> <span class="p">{</span>
+<a name="line-305"></a> <span class="n">found</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-306"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-307"></a> <span class="p">}</span>
+<a name="line-308"></a> <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="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">found</span><span class="p">)</span>
+<a name="line-312"></a> <span class="p">{</span>
+<a name="line-313"></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-314"></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-315"></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-316"></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-317"></a>
+<a name="line-318"></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-319"></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-320"></a> <span class="n">endInsertRows</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="cm">/**</span>
+<a name="line-325"></a><span class="cm"> * Adds a tag containing data returned from backends.</span>
+<a name="line-326"></a><span class="cm"> * @param parent The index of the parent.</span>
+<a name="line-327"></a><span class="cm"> * @param newTagName The name of the new tag.</span>
+<a name="line-328"></a><span class="cm"> */</span>
+<a name="line-329"></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-330"></a><span class="p">{</span>
+<a name="line-331"></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">//parent.isValid() ? static_cast&lt;TreeBranch*&gt;(parent.internalPointer()) : d-&gt;rootTag;</span>
+<a name="line-332"></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-333"></a> <span class="n">QPersistentModelIndex</span> <span class="n">retIndex</span><span class="p">;</span>
+<a name="line-334"></a>
+<a name="line-335"></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-336"></a> <span class="p">{</span>
+<a name="line-337"></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-338"></a> <span class="p">{</span>
+<a name="line-339"></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-340"></a> <span class="p">{</span>
+<a name="line-341"></a> <span class="n">found</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-342"></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-343"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-344"></a> <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="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">found</span><span class="p">)</span>
+<a name="line-349"></a> <span class="p">{</span>
+<a name="line-350"></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-351"></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-352"></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-353"></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-354"></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-355"></a>
+<a name="line-356"></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-357"></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-358"></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-359"></a> <span class="n">endInsertRows</span><span class="p">();</span>
+<a name="line-360"></a>
+<a name="line-361"></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-362"></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-363"></a> <span class="p">}</span>
+<a name="line-364"></a>
+<a name="line-365"></a> <span class="k">return</span> <span class="n">retIndex</span><span class="p">;</span>
+<a name="line-366"></a><span class="p">}</span>
+<a name="line-367"></a>
+<a name="line-368"></a><span class="cm">/**</span>
+<a name="line-369"></a><span class="cm"> * Gets the address of a tag.</span>
+<a name="line-370"></a><span class="cm"> */</span>
+<a name="line-371"></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-372"></a><span class="p">{</span>
+<a name="line-373"></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-374"></a>
+<a name="line-375"></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-376"></a> <span class="p">{</span>
+<a name="line-377"></a> <span class="n">TagData</span> <span class="n">tagData</span><span class="p">;</span>
+<a name="line-378"></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-379"></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-380"></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-381"></a> <span class="p">}</span>
+<a name="line-382"></a>
+<a name="line-383"></a> <span class="k">return</span> <span class="n">tagAddress</span><span class="p">;</span>
+<a name="line-384"></a><span class="p">}</span>
+<a name="line-385"></a>
+<a name="line-386"></a><span class="cm">/**</span>
+<a name="line-387"></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-388"></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-389"></a><span class="cm"> * @param currentBranch The branch from where the scan starts.</span>
+<a name="line-390"></a><span class="cm"> * @param currentRow The row of the current branch.</span>
+<a name="line-391"></a><span class="cm"> * @param addressElements A list containing address elements. Example: {Country}, {City}...</span>
+<a name="line-392"></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-393"></a><span class="cm"> */</span>
+<a name="line-394"></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-395"></a> <span class="kt">int</span> <span class="n">currentRow</span><span class="p">,</span>
+<a name="line-396"></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-397"></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-398"></a><span class="p">{</span>
+<a name="line-399"></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-400"></a> <span class="p">{</span>
+<a name="line-401"></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-402"></a>
+<a name="line-403"></a> <span class="c1">//this spacer is not an address element</span>
+<a name="line-404"></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-405"></a> <span class="p">{</span>
+<a name="line-406"></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-407"></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-408"></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-409"></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-410"></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-411"></a> <span class="p">}</span>
+<a name="line-412"></a> <span class="k">else</span>
+<a name="line-413"></a> <span class="p">{</span>
+<a name="line-414"></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-415"></a> <span class="p">{</span>
+<a name="line-416"></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-417"></a> <span class="p">{</span>
+<a name="line-418"></a> <span class="n">newDataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-419"></a> <span class="n">QModelIndex</span> <span class="n">currentIndex</span><span class="p">;</span>
+<a name="line-420"></a>
+<a name="line-421"></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-422"></a> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-423"></a> <span class="k">else</span>
+<a name="line-424"></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-425"></a>
+<a name="line-426"></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-427"></a> <span class="n">QPersistentModelIndex</span> <span class="n">auxIndex</span><span class="p">;</span>
+<a name="line-428"></a>
+<a name="line-429"></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-430"></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-431"></a> <span class="p">{</span>
+<a name="line-432"></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-433"></a> <span class="p">}</span>
+<a name="line-434"></a> <span class="k">else</span>
+<a name="line-435"></a> <span class="p">{</span>
+<a name="line-436"></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-437"></a> <span class="p">}</span>
+<a name="line-438"></a>
+<a name="line-439"></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-440"></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-441"></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-442"></a>
+<a name="line-443"></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-444"></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-445"></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-446"></a> <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">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-450"></a> <span class="p">{</span>
+<a name="line-451"></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-452"></a> <span class="p">}</span>
+<a name="line-453"></a>
+<a name="line-454"></a> <span class="k">if</span> <span class="p">(</span><span class="n">newDataAdded</span><span class="p">)</span>
+<a name="line-455"></a> <span class="p">{</span>
+<a name="line-456"></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-457"></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-458"></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-459"></a> <span class="p">}</span>
+<a name="line-460"></a> <span class="p">}</span>
+<a name="line-461"></a> <span class="p">}</span>
+<a name="line-462"></a>
+<a name="line-463"></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-464"></a> <span class="p">{</span>
+<a name="line-465"></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-466"></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-467"></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-468"></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-469"></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-470"></a> <span class="p">}</span>
+<a name="line-471"></a>
+<a name="line-472"></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-473"></a> <span class="p">{</span>
+<a name="line-474"></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-475"></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-476"></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-477"></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-478"></a> <span class="n">addressElements</span><span class="p">,</span>
+<a name="line-479"></a> <span class="n">elementsData</span><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">removeLast</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">removeLast</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"> * 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-487"></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-488"></a><span class="cm"> * @param elements A list containing address elements. Example: {Country}, {City}...</span>
+<a name="line-489"></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-490"></a><span class="cm"> * @return A list containing new tags</span>
+<a name="line-491"></a><span class="cm"> */</span>
+<a name="line-492"></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-493"></a><span class="p">{</span>
+<a name="line-494"></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-495"></a>
+<a name="line-496"></a> <span class="c1">//elements contains address elements {Country}, {City}, ...</span>
+<a name="line-497"></a> <span class="c1">//resultedData contains RG data (example Spain,Barcelona)</span>
+<a name="line-498"></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-499"></a>
+<a name="line-500"></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-501"></a><span class="p">}</span>
+<a name="line-502"></a>
+<a name="line-503"></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-504"></a><span class="p">{</span>
+<a name="line-505"></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-506"></a>
+<a name="line-507"></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-508"></a> <span class="p">{</span>
+<a name="line-509"></a> <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<a name="line-510"></a> <span class="p">}</span>
+<a name="line-511"></a>
+<a name="line-512"></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-513"></a> <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<a name="line-514"></a> <span class="k">else</span> <span class="nf">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-515"></a> <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<a name="line-516"></a>
+<a name="line-517"></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-518"></a><span class="p">}</span>
+<a name="line-519"></a>
+<a name="line-520"></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-521"></a><span class="p">{</span>
+<a name="line-522"></a> <span class="k">return</span> <span class="nb">false</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">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-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">index</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
+<a name="line-528"></a> <span class="p">{</span>
+<a name="line-529"></a> <span class="k">return</span> <span class="n">QVariant</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">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> <span class="c1">//static_cast&lt;TreeBranch*&gt;(index.internalPointer());</span>
+<a name="line-533"></a>
+<a name="line-534"></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-535"></a> <span class="p">{</span>
+<a name="line-536"></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-537"></a> <span class="p">}</span>
+<a name="line-538"></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-539"></a> <span class="p">{</span>
+<a name="line-540"></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-541"></a> <span class="p">}</span>
+<a name="line-542"></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-543"></a> <span class="p">{</span>
+<a name="line-544"></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-545"></a> <span class="p">}</span>
+<a name="line-546"></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-547"></a> <span class="p">{</span>
+<a name="line-548"></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-549"></a> <span class="p">}</span>
+<a name="line-550"></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-551"></a> <span class="p">{</span>
+<a name="line-552"></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-553"></a> <span class="p">}</span>
+<a name="line-554"></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-555"></a> <span class="p">{</span>
+<a name="line-556"></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-557"></a> <span class="p">}</span>
+<a name="line-558"></a>
+<a name="line-559"></a> <span class="k">return</span> <span class="n">QVariant</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">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-563"></a><span class="p">{</span>
+<a name="line-564"></a> <span class="k">if</span> <span class="p">(</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> <span class="p">)</span>
+<a name="line-565"></a> <span class="p">{</span>
+<a name="line-566"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-567"></a> <span class="p">}</span>
+<a name="line-568"></a>
+<a name="line-569"></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-570"></a> <span class="c1">// if (parent.isValid())</span>
+<a name="line-571"></a> <span class="c1">// parentBranch = static_cast&lt;TreeBranch*&gt;(parent.internalPointer());</span>
+<a name="line-572"></a>
+<a name="line-573"></a> <span class="c1">// this should not happen!</span>
+<a name="line-574"></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-575"></a> <span class="p">{</span>
+<a name="line-576"></a> <span class="k">return</span> <span class="n">QModelIndex</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="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-580"></a> <span class="p">{</span>
+<a name="line-581"></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-582"></a> <span class="p">}</span>
+<a name="line-583"></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> <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-584"></a> <span class="p">{</span>
+<a name="line-585"></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-586"></a> <span class="p">}</span>
+<a name="line-587"></a>
+<a name="line-588"></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-589"></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-590"></a><span class="p">}</span>
+<a name="line-591"></a>
+<a name="line-592"></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-593"></a><span class="p">{</span>
+<a name="line-594"></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-595"></a>
+<a name="line-596"></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-597"></a> <span class="p">{</span>
+<a name="line-598"></a> <span class="k">return</span> <span class="n">QModelIndex</span><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="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">type</span> <span class="o">==</span> <span class="n">TypeNewChild</span><span class="p">)</span>
+<a name="line-602"></a> <span class="p">{</span>
+<a name="line-603"></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-604"></a>
+<a name="line-605"></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-606"></a> <span class="p">{</span>
+<a name="line-607"></a> <span class="k">return</span> <span class="n">QModelIndex</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="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-611"></a>
+<a name="line-612"></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-613"></a> <span class="p">{</span>
+<a name="line-614"></a> <span class="k">return</span> <span class="n">QModelIndex</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="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-618"></a> <span class="p">{</span>
+<a name="line-619"></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-620"></a> <span class="p">{</span>
+<a name="line-621"></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-622"></a> <span class="p">{</span>
+<a name="line-623"></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-624"></a> <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">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-628"></a> <span class="p">}</span>
+<a name="line-629"></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-630"></a> <span class="p">{</span>
+<a name="line-631"></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-632"></a> <span class="p">{</span>
+<a name="line-633"></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-634"></a> <span class="p">{</span>
+<a name="line-635"></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-636"></a> <span class="p">}</span>
+<a name="line-637"></a> <span class="p">}</span>
+<a name="line-638"></a> <span class="p">}</span>
+<a name="line-639"></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-640"></a> <span class="p">{</span>
+<a name="line-641"></a> <span class="c1">// TODO: don&#39;t we have a function for this?</span>
+<a name="line-642"></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-643"></a> <span class="p">{</span>
+<a name="line-644"></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-645"></a> <span class="p">{</span>
+<a name="line-646"></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-647"></a> <span class="mi">0</span><span class="p">,</span> <span class="n">parentBranch</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="k">return</span> <span class="n">QModelIndex</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">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-656"></a><span class="p">}</span>
+<a name="line-657"></a>
+<a name="line-658"></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-659"></a><span class="p">{</span>
+<a name="line-660"></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">//parent.isValid() ? static_cast&lt;TreeBranch*&gt;(parent.internalPointer()) : d-&gt;rootTag;</span>
+<a name="line-661"></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-662"></a>
+<a name="line-663"></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-664"></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-665"></a> <span class="p">{</span>
+<a name="line-666"></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-667"></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-668"></a> <span class="p">}</span>
+<a name="line-669"></a>
+<a name="line-670"></a> <span class="k">return</span> <span class="n">myRowCount</span><span class="p">;</span>
+<a name="line-671"></a><span class="p">}</span>
+<a name="line-672"></a>
+<a name="line-673"></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-674"></a><span class="p">{</span>
+<a name="line-675"></a> <span class="k">return</span> <span class="nb">false</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="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-679"></a><span class="p">{</span>
+<a name="line-680"></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-681"></a><span class="p">}</span>
+<a name="line-682"></a>
+<a name="line-683"></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-684"></a><span class="p">{</span>
+<a name="line-685"></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-686"></a>
+<a name="line-687"></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-688"></a> <span class="p">{</span>
+<a name="line-689"></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-690"></a> <span class="p">}</span>
+<a name="line-691"></a>
+<a name="line-692"></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-693"></a><span class="p">}</span>
+<a name="line-694"></a>
+<a name="line-695"></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-696"></a><span class="p">{</span>
+<a name="line-697"></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-698"></a><span class="p">}</span>
+<a name="line-699"></a>
+<a name="line-700"></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-701"></a><span class="p">{</span>
+<a name="line-702"></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-703"></a><span class="p">}</span>
+<a name="line-704"></a>
+<a name="line-705"></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-706"></a><span class="p">{</span>
+<a name="line-707"></a> <span class="c1">//TODO: Should we do something here?</span>
+<a name="line-708"></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-709"></a><span class="p">}</span>
+<a name="line-710"></a>
+<a name="line-711"></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-712"></a> <span class="kt">int</span> <span class="n">sourceStart</span><span class="p">,</span>
+<a name="line-713"></a> <span class="kt">int</span> <span class="n">sourceEnd</span><span class="p">,</span>
+<a name="line-714"></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-715"></a> <span class="kt">int</span> <span class="n">destinationColumn</span><span class="p">)</span>
+<a name="line-716"></a><span class="p">{</span>
+<a name="line-717"></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-718"></a><span class="p">}</span>
+<a name="line-719"></a>
+<a name="line-720"></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-721"></a><span class="p">{</span>
+<a name="line-722"></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-723"></a><span class="p">}</span>
+<a name="line-724"></a>
+<a name="line-725"></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-726"></a><span class="p">{</span>
+<a name="line-727"></a> <span class="n">endInsertColumns</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="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotColumnsMoved</span><span class="p">()</span>
+<a name="line-731"></a><span class="p">{</span>
+<a name="line-732"></a> <span class="n">endMoveColumns</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="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotColumnsRemoved</span><span class="p">()</span>
+<a name="line-736"></a><span class="p">{</span>
+<a name="line-737"></a> <span class="n">endRemoveColumns</span><span class="p">();</span>
+<a name="line-738"></a><span class="p">}</span>
+<a name="line-739"></a>
+<a name="line-740"></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-741"></a><span class="p">{</span>
+<a name="line-742"></a> <span class="n">emit</span> <span class="n">layoutAboutToBeChanged</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">slotLayoutChanged</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">layoutChanged</span><span class="p">();</span>
+<a name="line-748"></a><span class="p">}</span>
+<a name="line-749"></a>
+<a name="line-750"></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-751"></a><span class="p">{</span>
+<a name="line-752"></a> <span class="n">beginResetModel</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="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotModelReset</span><span class="p">()</span>
+<a name="line-756"></a><span class="p">{</span>
+<a name="line-757"></a> <span class="n">beginResetModel</span><span class="p">();</span>
+<a name="line-758"></a> <span class="n">endResetModel</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">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-762"></a><span class="p">{</span>
+<a name="line-763"></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-764"></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-765"></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-766"></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-767"></a>
+<a name="line-768"></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-769"></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-770"></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-771"></a><span class="p">}</span>
+<a name="line-772"></a>
+<a name="line-773"></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-774"></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-775"></a><span class="p">{</span>
+<a name="line-776"></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-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">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-780"></a><span class="p">{</span>
+<a name="line-781"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+<a name="line-782"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">start</span><span class="p">);</span>
+<a name="line-783"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">end</span><span class="p">);</span>
+<a name="line-784"></a><span class="p">}</span>
+<a name="line-785"></a>
+<a name="line-786"></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-787"></a><span class="p">{</span>
+<a name="line-788"></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-789"></a>
+<a name="line-790"></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-791"></a> <span class="p">{</span>
+<a name="line-792"></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-793"></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-794"></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-795"></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-796"></a>
+<a name="line-797"></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-798"></a> <span class="p">}</span>
+<a name="line-799"></a>
+<a name="line-800"></a> <span class="n">endInsertRows</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">parent</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-803"></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-804"></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-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">slotRowsMoved</span><span class="p">()</span>
+<a name="line-808"></a><span class="p">{</span>
+<a name="line-809"></a> <span class="n">endMoveRows</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">RGTagModel</span><span class="o">::</span><span class="n">slotRowsRemoved</span><span class="p">()</span>
+<a name="line-813"></a><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="cm">/**</span>
+<a name="line-817"></a><span class="cm"> * Deletes a tag.</span>
+<a name="line-818"></a><span class="cm"> * @param currentIndex The tag found at this index will be deleted.</span>
+<a name="line-819"></a><span class="cm"> */</span>
+<a name="line-820"></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-821"></a><span class="p">{</span>
+<a name="line-822"></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-823"></a> <span class="p">{</span>
+<a name="line-824"></a> <span class="k">return</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="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-828"></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-829"></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-830"></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-831"></a>
+<a name="line-832"></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-833"></a> <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="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="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">&gt;</span> <span class="mi">0</span><span class="p">)</span>
+<a name="line-838"></a> <span class="p">{</span>
+<a name="line-839"></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-840"></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-841"></a>
+<a name="line-842"></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-843"></a> <span class="p">{</span>
+<a name="line-844"></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-845"></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-846"></a> <span class="cm">/*QModelIndex testIndex = */</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="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span>
+<a name="line-847"></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>
+<a name="line-848"></a> <span class="p">}</span>
+<a name="line-849"></a>
+<a name="line-850"></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-851"></a> <span class="n">endMoveRows</span><span class="p">();</span>
+<a name="line-852"></a>
+<a name="line-853"></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-854"></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-855"></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-856"></a>
+<a name="line-857"></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-858"></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-859"></a> <span class="p">{</span>
+<a name="line-860"></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-861"></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-862"></a> <span class="p">}</span>
+<a name="line-863"></a>
+<a name="line-864"></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-865"></a> <span class="n">endMoveRows</span><span class="p">();</span>
+<a name="line-866"></a> <span class="p">}</span>
+<a name="line-867"></a>
+<a name="line-868"></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-869"></a>
+<a name="line-870"></a> <span class="c1">//TODO: is it good here?</span>
+<a name="line-871"></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-872"></a> <span class="p">{</span>
+<a name="line-873"></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-874"></a> <span class="p">}</span>
+<a name="line-875"></a> <span class="k">else</span>
+<a name="line-876"></a> <span class="p">{</span>
+<a name="line-877"></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-878"></a> <span class="p">}</span>
+<a name="line-879"></a>
+<a name="line-880"></a> <span class="n">endRemoveRows</span><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="cm">/**</span>
+<a name="line-884"></a><span class="cm"> * Deletes all spacers or all new tags below @currentBranch.</span>
+<a name="line-885"></a><span class="cm"> * @param currentBranch The tree branch from where the scan starts.</span>
+<a name="line-886"></a><span class="cm"> * @param currentRow The row of current branch.</span>
+<a name="line-887"></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-888"></a><span class="cm"> */</span>
+<a name="line-889"></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-890"></a><span class="p">{</span>
+<a name="line-891"></a> <span class="cm">/*QModelIndex currentIndex = */</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-892"></a>
+<a name="line-893"></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-894"></a> <span class="p">{</span>
+<a name="line-895"></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-896"></a>
+<a name="line-897"></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-898"></a> <span class="p">{</span>
+<a name="line-899"></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-900"></a> <span class="n">deleteTag</span><span class="p">(</span><span class="n">spacerIndex</span><span class="p">);</span>
+<a name="line-901"></a> <span class="n">i</span><span class="o">--</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="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-906"></a> <span class="p">{</span>
+<a name="line-907"></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-908"></a>
+<a name="line-909"></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-910"></a> <span class="p">{</span>
+<a name="line-911"></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-912"></a> <span class="n">deleteTag</span><span class="p">(</span><span class="n">newTagIndex</span><span class="p">);</span>
+<a name="line-913"></a> <span class="n">i</span><span class="o">--</span><span class="p">;</span>
+<a name="line-914"></a> <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="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-918"></a> <span class="p">{</span>
+<a name="line-919"></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-920"></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-921"></a> <span class="n">whatShouldRemove</span><span class="p">);</span>
+<a name="line-922"></a> <span class="p">}</span>
+<a name="line-923"></a><span class="p">}</span>
+<a name="line-924"></a>
+<a name="line-925"></a><span class="cm">/**</span>
+<a name="line-926"></a><span class="cm"> * Deletes all spacers or all new tags.</span>
+<a name="line-927"></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-928"></a><span class="cm"> * @param whatShouldRemove The tag type that should be removed. The options are: spacers or new tags.</span>
+<a name="line-929"></a><span class="cm"> */</span>
+<a name="line-930"></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-931"></a><span class="p">{</span>
+<a name="line-932"></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-933"></a> <span class="p">{</span>
+<a name="line-934"></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-935"></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-936"></a> <span class="p">}</span>
+<a name="line-937"></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-938"></a> <span class="p">{</span>
+<a name="line-939"></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-940"></a> <span class="p">}</span>
+<a name="line-941"></a><span class="p">}</span>
+<a name="line-942"></a>
+<a name="line-943"></a><span class="c1">//tagAddressElements contains address tag: Places,Spain,Barcelona</span>
+<a name="line-944"></a><span class="c1">//readdTag climbs the tree and checks on each level if tagAddressElements[level] is found.</span>
+<a name="line-945"></a><span class="c1">//if the tag is found, it climbs up the next level</span>
+<a name="line-946"></a><span class="c1">//else, it recreates the new tag and climbs up that tree.</span>
+<a name="line-947"></a><span class="cm">/**</span>
+<a name="line-948"></a><span class="cm"> * Readds new tags to tag tree.</span>
+<a name="line-949"></a><span class="cm"> * @param currentBranch The branch from where the scan starts.</span>
+<a name="line-950"></a><span class="cm"> * @param currentRow The row of the currentBranch.</span>
+<a name="line-951"></a><span class="cm"> * @param tagAddressElements A list containing address elements. Example: {Country}, {City}...</span>
+<a name="line-952"></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-953"></a><span class="cm"> */</span>
+<a name="line-954"></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-955"></a><span class="p">{</span>
+<a name="line-956"></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-957"></a> <span class="kt">int</span> <span class="n">foundIndex</span><span class="p">;</span>
+<a name="line-958"></a>
+<a name="line-959"></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-960"></a> <span class="p">{</span>
+<a name="line-961"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-962"></a> <span class="p">}</span>
+<a name="line-963"></a>
+<a name="line-964"></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-965"></a> <span class="p">{</span>
+<a name="line-966"></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-967"></a> <span class="p">{</span>
+<a name="line-968"></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-969"></a> <span class="p">{</span>
+<a name="line-970"></a> <span class="n">found</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-971"></a> <span class="n">foundIndex</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
+<a name="line-972"></a> <span class="k">break</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>
+<a name="line-976"></a> <span class="k">if</span> <span class="p">(</span><span class="n">found</span><span class="p">)</span>
+<a name="line-977"></a> <span class="p">{</span>
+<a name="line-978"></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-979"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-980"></a> <span class="p">}</span>
+<a name="line-981"></a> <span class="k">else</span>
+<a name="line-982"></a> <span class="p">{</span>
+<a name="line-983"></a> <span class="c1">//recreates the spacer</span>
+<a name="line-984"></a> <span class="n">QModelIndex</span> <span class="n">currentIndex</span><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">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-987"></a> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-988"></a> <span class="k">else</span>
+<a name="line-989"></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-990"></a>
+<a name="line-991"></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-992"></a>
+<a name="line-993"></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-994"></a> <span class="p">{</span>
+<a name="line-995"></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-996"></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-997"></a> <span class="n">tagAddressElements</span><span class="p">,</span>
+<a name="line-998"></a> <span class="n">currentAddressElementIndex</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="p">}</span>
+<a name="line-1002"></a>
+<a name="line-1003"></a> <span class="p">}</span>
+<a name="line-1004"></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-1005"></a> <span class="p">{</span>
+<a name="line-1006"></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-1007"></a> <span class="p">{</span>
+<a name="line-1008"></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-1009"></a> <span class="p">{</span>
+<a name="line-1010"></a> <span class="n">found</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-1011"></a> <span class="n">foundIndex</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
+<a name="line-1012"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-1013"></a> <span class="p">}</span>
+<a name="line-1014"></a> <span class="p">}</span>
+<a name="line-1015"></a>
+<a name="line-1016"></a> <span class="k">if</span> <span class="p">(</span><span class="n">found</span><span class="p">)</span>
+<a name="line-1017"></a> <span class="p">{</span>
+<a name="line-1018"></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-1019"></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-1020"></a> <span class="n">tagAddressElements</span><span class="p">,</span>
+<a name="line-1021"></a> <span class="n">currentAddressElementIndex</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-1022"></a> <span class="k">return</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="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">found</span><span class="p">)</span>
+<a name="line-1026"></a> <span class="p">{</span>
+<a name="line-1027"></a> <span class="n">QModelIndex</span> <span class="n">currentIndex</span><span class="p">;</span>
+<a name="line-1028"></a>
+<a name="line-1029"></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-1030"></a> <span class="p">{</span>
+<a name="line-1031"></a> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-1032"></a> <span class="p">}</span>
+<a name="line-1033"></a> <span class="k">else</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">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-1036"></a> <span class="p">}</span>
+<a name="line-1037"></a>
+<a name="line-1038"></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-1039"></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-1040"></a>
+<a name="line-1041"></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-1042"></a> <span class="p">{</span>
+<a name="line-1043"></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-1044"></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-1045"></a> <span class="n">tagAddressElements</span><span class="p">,</span>
+<a name="line-1046"></a> <span class="n">currentAddressElementIndex</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-1047"></a> <span class="p">}</span>
+<a name="line-1048"></a> <span class="p">}</span>
+<a name="line-1049"></a> <span class="p">}</span>
+<a name="line-1050"></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-1051"></a> <span class="p">{</span>
+<a name="line-1052"></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-1053"></a>
+<a name="line-1054"></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-1055"></a> <span class="p">{</span>
+<a name="line-1056"></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-1057"></a> <span class="p">{</span>
+<a name="line-1058"></a> <span class="n">found</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-1059"></a> <span class="n">foundIndex</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
+<a name="line-1060"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-1061"></a> <span class="p">}</span>
+<a name="line-1062"></a> <span class="p">}</span>
+<a name="line-1063"></a>
+<a name="line-1064"></a> <span class="k">if</span> <span class="p">(</span><span class="n">found</span><span class="p">)</span>
+<a name="line-1065"></a> <span class="p">{</span>
+<a name="line-1066"></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-1067"></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-1068"></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-1069"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-1070"></a> <span class="p">}</span>
+<a name="line-1071"></a> <span class="k">else</span>
+<a name="line-1072"></a> <span class="p">{</span>
+<a name="line-1073"></a> <span class="n">QModelIndex</span> <span class="n">currentIndex</span><span class="p">;</span>
+<a name="line-1074"></a>
+<a name="line-1075"></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-1076"></a> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-1077"></a> <span class="k">else</span>
+<a name="line-1078"></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-1079"></a>
+<a name="line-1080"></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-1081"></a>
+<a name="line-1082"></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-1083"></a> <span class="p">{</span>
+<a name="line-1084"></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-1085"></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-1086"></a> <span class="n">tagAddressElements</span><span class="p">,</span>
+<a name="line-1087"></a> <span class="n">currentAddressElementIndex</span><span class="o">+</span><span class="mi">1</span><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> <span class="p">}</span>
+<a name="line-1091"></a><span class="p">}</span>
+<a name="line-1092"></a>
+<a name="line-1093"></a><span class="cm">/**</span>
+<a name="line-1094"></a><span class="cm"> * Takes each tag contained in tagAddressList and adds it to the tag tree.</span>
+<a name="line-1095"></a><span class="cm"> * @param tagAddressList A list containing new tags.</span>
+<a name="line-1096"></a><span class="cm"> */</span>
+<a name="line-1097"></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-1098"></a><span class="p">{</span>
+<a name="line-1099"></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-1100"></a> <span class="p">{</span>
+<a name="line-1101"></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-1102"></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-1103"></a> <span class="p">}</span>
+<a name="line-1104"></a><span class="p">}</span>
+<a name="line-1105"></a>
+<a name="line-1106"></a><span class="cm">/**</span>
+<a name="line-1107"></a><span class="cm"> * Gets the address of a spacer. Address means the path from rootTag to currentBranch</span>
+<a name="line-1108"></a><span class="cm"> * @param currentBranch The branch where the scan stops.</span>
+<a name="line-1109"></a><span class="cm"> * @return The tag address of currentBranch</span>
+<a name="line-1110"></a><span class="cm"> */</span>
+<a name="line-1111"></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-1112"></a><span class="p">{</span>
+<a name="line-1113"></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-1114"></a>
+<a name="line-1115"></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-1116"></a> <span class="p">{</span>
+<a name="line-1117"></a> <span class="n">TagData</span> <span class="n">currentTag</span><span class="p">;</span>
+<a name="line-1118"></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-1119"></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-1120"></a>
+<a name="line-1121"></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-1122"></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-1123"></a> <span class="p">}</span>
+<a name="line-1124"></a>
+<a name="line-1125"></a> <span class="k">return</span> <span class="n">spacerAddress</span><span class="p">;</span>
+<a name="line-1126"></a><span class="p">}</span>
+<a name="line-1127"></a>
+<a name="line-1128"></a><span class="cm">/**</span>
+<a name="line-1129"></a><span class="cm"> * Gets the spacers addresses below currentBranch. Address means the path from rootTag to currentBranch.</span>
+<a name="line-1130"></a><span class="cm"> * @param currentBranch The branch from where the search starts.</span>
+<a name="line-1131"></a><span class="cm"> */</span>
+<a name="line-1132"></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-1133"></a><span class="p">{</span>
+<a name="line-1134"></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-1135"></a> <span class="p">{</span>
+<a name="line-1136"></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-1137"></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-1138"></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-1139"></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-1140"></a> <span class="p">}</span>
+<a name="line-1141"></a>
+<a name="line-1142"></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-1143"></a> <span class="p">{</span>
+<a name="line-1144"></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-1145"></a> <span class="p">}</span>
+<a name="line-1146"></a>
+<a name="line-1147"></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-1148"></a> <span class="p">{</span>
+<a name="line-1149"></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-1150"></a> <span class="p">}</span>
+<a name="line-1151"></a><span class="p">}</span>
+<a name="line-1152"></a>
+<a name="line-1153"></a><span class="cm">/**</span>
+<a name="line-1154"></a><span class="cm"> * Gets all spacers.</span>
+<a name="line-1155"></a><span class="cm"> * @return The spacer list.</span>
+<a name="line-1156"></a><span class="cm"> */</span>
+<a name="line-1157"></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-1158"></a><span class="p">{</span>
+<a name="line-1159"></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-1160"></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-1161"></a>
+<a name="line-1162"></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-1163"></a><span class="p">}</span>
+<a name="line-1164"></a>
+<a name="line-1165"></a><span class="cm">/**</span>
+<a name="line-1166"></a><span class="cm"> * Add tags from host application to the tag tree.</span>
+<a name="line-1167"></a><span class="cm"> * @param parentBranch The branch that will be parent for the old tag.</span>
+<a name="line-1168"></a><span class="cm"> * @param currentRow The row where this external tag will be added.</span>
+<a name="line-1169"></a><span class="cm"> */</span>
+<a name="line-1170"></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-1171"></a><span class="p">{</span>
+<a name="line-1172"></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-1173"></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-1174"></a>
+<a name="line-1175"></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-1176"></a> <span class="p">{</span>
+<a name="line-1177"></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-1178"></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-1179"></a>
+<a name="line-1180"></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-1181"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-1182"></a>
+<a name="line-1183"></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-1184"></a> <span class="p">}</span>
+<a name="line-1185"></a><span class="p">}</span>
+<a name="line-1186"></a>
+<a name="line-1187"></a><span class="cm">/**</span>
+<a name="line-1188"></a><span class="cm"> * Add all external tags to the tag tree.</span>
+<a name="line-1189"></a><span class="cm"> */</span>
+<a name="line-1190"></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-1191"></a><span class="p">{</span>
+<a name="line-1192"></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-1193"></a><span class="p">}</span>
+<a name="line-1194"></a>
+<a name="line-1195"></a><span class="cm">/**</span>
+<a name="line-1196"></a><span class="cm"> * Adds all spacers found in spacerList to the tag tree.</span>
+<a name="line-1197"></a><span class="cm"> */</span>
+<a name="line-1198"></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-1199"></a><span class="p">{</span>
+<a name="line-1200"></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-1201"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-1202"></a>
+<a name="line-1203"></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-1204"></a>
+<a name="line-1205"></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-1206"></a> <span class="p">{</span>
+<a name="line-1207"></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-1208"></a> <span class="p">{</span>
+<a name="line-1209"></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-1210"></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-1211"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-1212"></a> <span class="p">}</span>
+<a name="line-1213"></a> <span class="p">}</span>
+<a name="line-1214"></a>
+<a name="line-1215"></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-1216"></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-1217"></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-1218"></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-1219"></a><span class="p">}</span>
+<a name="line-1220"></a>
+<a name="line-1221"></a><span class="cm">/**</span>
+<a name="line-1222"></a><span class="cm"> * Gets the type of a tag found at index.</span>
+<a name="line-1223"></a><span class="cm"> * @param index The index of the tag.</span>
+<a name="line-1224"></a><span class="cm"> * @return The type of the tag found at index.</span>
+<a name="line-1225"></a><span class="cm"> */</span>
+<a name="line-1226"></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-1227"></a><span class="p">{</span>
+<a name="line-1228"></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><span class="c1">// index.isValid() ? static_cast&lt;TreeBranch*&gt;(index.internalPointer()) : d-&gt;rootTag;</span>
+<a name="line-1229"></a>
+<a name="line-1230"></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-1231"></a><span class="p">}</span>
+<a name="line-1232"></a>
+<a name="line-1233"></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/54.html b/static/reports/cppcheck/master/54.html
index f97eb51c3..6bcf36d7b 100644
--- a/static/reports/cppcheck/master/54.html
+++ b/static/reports/cppcheck/master/54.html
@@ -1,2137 +1,703 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/utilities/geolocation/geoiface/reversegeocoding/rgwidget.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/utilities/geolocation/geoiface/reversegeocoding/parsetagstring.h </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> rgwidget.cpp</p>
-<a href='54.html#line-509'> shadowVar 509</a><a href='54.html#line-544'> shadowVar 544</a>
+ <p id="filename"><a href="index.html">Defects:</a> parsetagstring.h</p>
+<a href='54.html#line-50'> shadowVar 50</a><a href='54.html#line-50'> shadowVar 50</a><a href='54.html#line-50'> shadowVar 50</a><a href='54.html#line-169'> shadowVar 169</a><a href='54.html#line-216'> shadowVar 216</a><a href='54.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
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>
+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-05-12</span>
-<a name="line-7"></a><span class="cm"> * Description : A widget to apply Reverse Geocoding</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"> * 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-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-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 KVBox to it or derive from KVBox</span>
-<a name="line-204"></a> <span class="c1">// - or is there an easier way to use KVBox?</span>
-<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="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-217"></a>
-<a name="line-218"></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-219"></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-220"></a>
-<a name="line-221"></a><span class="cp">#ifdef GPSSYNC_MODELTEST</span>
-<a name="line-222"></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-223"></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-224"></a><span class="cp">#endif </span><span class="c1">// GPSSYNC_MODELTEST</span>
-<a name="line-225"></a>
-<a name="line-226"></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-227"></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-228"></a>
-<a name="line-229"></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-230"></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-231"></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-232"></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-233"></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-234"></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-235"></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-236"></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-237"></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-238"></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-239"></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-240"></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-241"></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-242"></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-243"></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-244"></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-245"></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-246"></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-247"></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-248"></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-249"></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-250"></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-251"></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-252"></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-253"></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-254"></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-255"></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-256"></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-257"></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-258"></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-259"></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-260"></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-261"></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-262"></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-263"></a>
-<a name="line-264"></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-265"></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-266"></a>
-<a name="line-267"></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-268"></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-269"></a>
-<a name="line-270"></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-271"></a>
-<a name="line-272"></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-273"></a> <span class="p">{</span>
-<a name="line-274"></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-275"></a> <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="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-278"></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-279"></a>
-<a name="line-280"></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-281"></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-282"></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-283"></a>
-<a name="line-284"></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-285"></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-286"></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-287"></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-288"></a>
-<a name="line-289"></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-290"></a>
-<a name="line-291"></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-292"></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-293"></a>
-<a name="line-294"></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-295"></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-296"></a>
-<a name="line-297"></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-298"></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-299"></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-300"></a>
-<a name="line-301"></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-302"></a>
-<a name="line-303"></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-304"></a>
-<a name="line-305"></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-306"></a>
-<a name="line-307"></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-308"></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-309"></a>
-<a name="line-310"></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-311"></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-312"></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-313"></a>
-<a name="line-314"></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-315"></a>
-<a name="line-316"></a> <span class="n">updateUIState</span><span class="p">();</span>
-<a name="line-317"></a>
-<a name="line-318"></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-319"></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-320"></a>
-<a name="line-321"></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-322"></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-323"></a>
-<a name="line-324"></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-325"></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-326"></a>
-<a name="line-327"></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-328"></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-329"></a>
-<a name="line-330"></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-331"></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-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">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-334"></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-335"></a>
-<a name="line-336"></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-337"></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-338"></a>
-<a name="line-339"></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-340"></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-341"></a>
-<a name="line-342"></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-343"></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-344"></a>
-<a name="line-345"></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-346"></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-347"></a>
-<a name="line-348"></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-349"></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-350"></a>
-<a name="line-351"></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-352"></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-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">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-355"></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-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">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-358"></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-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">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-361"></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-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">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-364"></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-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">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-367"></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-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">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-370"></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-371"></a>
-<a name="line-372"></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-373"></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-374"></a>
-<a name="line-375"></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-376"></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-377"></a>
-<a name="line-378"></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-379"></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-380"></a>
-<a name="line-381"></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-382"></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-383"></a>
-<a name="line-384"></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-385"></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-386"></a>
-<a name="line-387"></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-388"></a> <span class="p">{</span>
-<a name="line-389"></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-390"></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-391"></a> <span class="p">}</span>
-<a name="line-392"></a>
-<a name="line-393"></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-394"></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-395"></a><span class="p">}</span>
-<a name="line-396"></a>
-<a name="line-397"></a><span class="cm">/**</span>
-<a name="line-398"></a><span class="cm"> * Destructor</span>
-<a name="line-399"></a><span class="cm"> */</span>
-<a name="line-400"></a><span class="n">RGWidget</span><span class="o">::~</span><span class="n">RGWidget</span><span class="p">()</span>
-<a name="line-401"></a><span class="p">{</span>
-<a name="line-402"></a> <span class="k">delete</span> <span class="n">d</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="cm">/**</span>
-<a name="line-406"></a><span class="cm"> * Enables or disables the containing widgets.</span>
-<a name="line-407"></a><span class="cm"> */</span>
-<a name="line-408"></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-409"></a><span class="p">{</span>
-<a name="line-410"></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-411"></a>
-<a name="line-412"></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-413"></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-414"></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-415"></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-416"></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-417"></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-418"></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-419"></a><span class="p">}</span>
-<a name="line-420"></a>
-<a name="line-421"></a><span class="cm">/**</span>
-<a name="line-422"></a><span class="cm"> * This slot triggeres when the button that start the reverse geocoding process is pressed.</span>
-<a name="line-423"></a><span class="cm"> */</span>
-<a name="line-424"></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-425"></a><span class="p">{</span>
-<a name="line-426"></a> <span class="c1">// get the selected images:</span>
-<a name="line-427"></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-428"></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-429"></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-430"></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-431"></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-432"></a>
-<a name="line-433"></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-434"></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-435"></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-436"></a>
-<a name="line-437"></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-438"></a> <span class="p">{</span>
-<a name="line-439"></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-440"></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-441"></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-442"></a>
-<a name="line-443"></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-444"></a> <span class="k">continue</span><span class="p">;</span>
-<a name="line-445"></a>
-<a name="line-446"></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-447"></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-448"></a>
-<a name="line-449"></a> <span class="n">RGInfo</span> <span class="n">photoObj</span><span class="p">;</span>
-<a name="line-450"></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-451"></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-452"></a>
-<a name="line-453"></a> <span class="n">photoList</span> <span class="o">&lt;&lt;</span> <span class="n">photoObj</span><span class="p">;</span>
-<a name="line-454"></a>
-<a name="line-455"></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-456"></a> <span class="p">}</span>
-<a name="line-457"></a>
-<a name="line-458"></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-459"></a> <span class="p">{</span>
-<a name="line-460"></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-461"></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-462"></a>
-<a name="line-463"></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-464"></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-465"></a>
-<a name="line-466"></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-467"></a> <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="cm">/**</span>
-<a name="line-471"></a><span class="cm"> * Hide or shows the extra options.</span>
-<a name="line-472"></a><span class="cm"> */</span>
-<a name="line-473"></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-474"></a><span class="p">{</span>
-<a name="line-475"></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-476"></a> <span class="p">{</span>
-<a name="line-477"></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-478"></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-479"></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-480"></a> <span class="p">}</span>
-<a name="line-481"></a> <span class="k">else</span>
-<a name="line-482"></a> <span class="p">{</span>
-<a name="line-483"></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-484"></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-485"></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-486"></a> <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="cm">/**</span>
-<a name="line-490"></a><span class="cm"> * The data has returned from backend and now it&#39;s processed here.</span>
-<a name="line-491"></a><span class="cm"> * @param returnedRGList Contains the data returned by backend.</span>
-<a name="line-492"></a><span class="cm"> */</span>
-<a name="line-493"></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-494"></a><span class="p">{</span>
-<a name="line-495"></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-496"></a>
-<a name="line-497"></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-498"></a> <span class="p">{</span>
-<a name="line-499"></a> <span class="c1">/// @todo This collides with the message box displayed if the user aborts the RG process</span>
-<a name="line-500"></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-501"></a>
-<a name="line-502"></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-503"></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-504"></a> <span class="k">return</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">QString</span> <span class="n">address</span><span class="p">;</span>
-<a name="line-508"></a>
-<a name="line-509"></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-510"></a> <span class="p">{</span>
-<a name="line-511"></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-512"></a>
-<a name="line-513"></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-514"></a> <span class="p">{</span>
-<a name="line-515"></a> <span class="n">QString</span> <span class="n">addressElementsWantedFormat</span><span class="p">;</span>
-<a name="line-516"></a>
-<a name="line-517"></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-518"></a> <span class="p">{</span>
-<a name="line-519"></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-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">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-522"></a> <span class="p">{</span>
-<a name="line-523"></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-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">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-528"></a> <span class="p">}</span>
-<a name="line-529"></a>
-<a name="line-530"></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-531"></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-532"></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-533"></a>
-<a name="line-534"></a> <span class="c1">//removes first &quot;/&quot; from tag addresses</span>
-<a name="line-535"></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-536"></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-537"></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-538"></a>
-<a name="line-539"></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-540"></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-541"></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-542"></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-543"></a>
-<a name="line-544"></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-545"></a> <span class="p">{</span>
-<a name="line-546"></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-547"></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-548"></a>
-<a name="line-549"></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-550"></a> <span class="p">{</span>
-<a name="line-551"></a> <span class="n">elements</span><span class="o">&lt;&lt;</span><span class="n">currentAddressFormat</span><span class="p">;</span>
-<a name="line-552"></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-553"></a> <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">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-557"></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-558"></a>
-<a name="line-559"></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-560"></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-561"></a>
-<a name="line-562"></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-563"></a>
-<a name="line-564"></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-565"></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-566"></a> <span class="p">}</span>
-<a name="line-567"></a> <span class="p">}</span>
-<a name="line-568"></a>
-<a name="line-569"></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-570"></a>
-<a name="line-571"></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-572"></a> <span class="p">{</span>
-<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">currentlyAskingCancelQuestion</span><span class="p">)</span>
-<a name="line-574"></a> <span class="p">{</span>
-<a name="line-575"></a> <span class="c1">// if the user is currently answering the cancel question, do nothing, only report progress</span>
-<a name="line-576"></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-577"></a> <span class="p">}</span>
-<a name="line-578"></a> <span class="k">else</span>
-<a name="line-579"></a> <span class="p">{</span>
-<a name="line-580"></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-581"></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-582"></a>
-<a name="line-583"></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-584"></a> <span class="p">}</span>
-<a name="line-585"></a> <span class="p">}</span>
-<a name="line-586"></a> <span class="k">else</span>
-<a name="line-587"></a> <span class="p">{</span>
-<a name="line-588"></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-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="cm">/**</span>
-<a name="line-593"></a><span class="cm"> * Sets whether the containing widgets are enabled or disabled.</span>
-<a name="line-594"></a><span class="cm"> * @param state If true, the controls are enabled.</span>
-<a name="line-595"></a><span class="cm"> */</span>
-<a name="line-596"></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-597"></a><span class="p">{</span>
-<a name="line-598"></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-599"></a> <span class="n">updateUIState</span><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"> * Here are filtered the events.</span>
-<a name="line-604"></a><span class="cm"> */</span>
-<a name="line-605"></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-606"></a><span class="p">{</span>
-<a name="line-607"></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-608"></a> <span class="p">{</span>
-<a name="line-609"></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-610"></a> <span class="p">{</span>
-<a name="line-611"></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-612"></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-613"></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-614"></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-615"></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-616"></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-617"></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-618"></a>
-<a name="line-619"></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-620"></a> <span class="p">{</span>
-<a name="line-621"></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-622"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addSeparator</span><span class="p">();</span>
-<a name="line-623"></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-624"></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-625"></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-626"></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-627"></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-628"></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-629"></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-630"></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-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">actionAddVillage</span><span class="p">);</span>
-<a name="line-632"></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-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">actionAddStreet</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">actionAddHouseNumber</span><span class="p">);</span>
-<a name="line-635"></a> <span class="p">}</span>
-<a name="line-636"></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-637"></a> <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">actionAddAllAddressElementsToTag</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">actionAddCountry</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">actionAddPlace</span><span class="p">);</span>
-<a name="line-641"></a> <span class="p">}</span>
-<a name="line-642"></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-643"></a> <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">actionAddAllAddressElementsToTag</span><span class="p">);</span>
-<a name="line-645"></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-646"></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-647"></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-648"></a> <span class="p">}</span>
-<a name="line-649"></a>
-<a name="line-650"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addSeparator</span><span class="p">();</span>
-<a name="line-651"></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-652"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addSeparator</span><span class="p">();</span>
-<a name="line-653"></a>
-<a name="line-654"></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-655"></a> <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">actionRemoveTag</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="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-660"></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-661"></a> <span class="k">delete</span> <span class="n">menu</span><span class="p">;</span>
-<a name="line-662"></a> <span class="p">}</span>
-<a name="line-663"></a> <span class="p">}</span>
-<a name="line-664"></a>
-<a name="line-665"></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-666"></a><span class="p">}</span>
-<a name="line-667"></a>
-<a name="line-668"></a><span class="cm">/**</span>
-<a name="line-669"></a><span class="cm"> * Saves the settings of widgets contained in reverse geocoding widget.</span>
-<a name="line-670"></a><span class="cm"> * @param group Here are stored the settings.</span>
-<a name="line-671"></a><span class="cm"> */</span>
-<a name="line-672"></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-673"></a><span class="p">{</span>
-<a name="line-674"></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-675"></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-676"></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-677"></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-678"></a>
-<a name="line-679"></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-680"></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-681"></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-682"></a>
-<a name="line-683"></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-684"></a> <span class="p">{</span>
-<a name="line-685"></a> <span class="n">QString</span> <span class="n">spacerName</span><span class="p">;</span>
-<a name="line-686"></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-687"></a> <span class="n">QString</span> <span class="n">spacerType</span><span class="p">;</span>
-<a name="line-688"></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-689"></a>
-<a name="line-690"></a> <span class="n">QStringList</span> <span class="n">spacerTagNames</span><span class="p">;</span>
-<a name="line-691"></a> <span class="n">QStringList</span> <span class="n">spacerTypes</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">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-694"></a> <span class="p">{</span>
-<a name="line-695"></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-696"></a>
-<a name="line-697"></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-698"></a> <span class="p">{</span>
-<a name="line-699"></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-700"></a> <span class="p">}</span>
-<a name="line-701"></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-702"></a> <span class="p">{</span>
-<a name="line-703"></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-704"></a> <span class="p">}</span>
-<a name="line-705"></a> <span class="k">else</span>
-<a name="line-706"></a> <span class="p">{</span>
-<a name="line-707"></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-708"></a> <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">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-712"></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-713"></a> <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="cm">/**</span>
-<a name="line-717"></a><span class="cm"> * Restores the settings of widgets contained in reverse geocoding widget.</span>
-<a name="line-718"></a><span class="cm"> * @param group Here are stored the settings.</span>
-<a name="line-719"></a><span class="cm"> */</span>
-<a name="line-720"></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-721"></a><span class="p">{</span>
-<a name="line-722"></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-723"></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-724"></a>
-<a name="line-725"></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-726"></a> <span class="p">{</span>
-<a name="line-727"></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-728"></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-729"></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-730"></a>
-<a name="line-731"></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-732"></a> <span class="p">{</span>
-<a name="line-733"></a> <span class="n">TagData</span> <span class="n">currentTagData</span><span class="p">;</span>
-<a name="line-734"></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-735"></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-736"></a>
-<a name="line-737"></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-738"></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-739"></a> <span class="k">else</span> <span class="nf">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-740"></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-741"></a> <span class="k">else</span> <span class="nf">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-742"></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-743"></a>
-<a name="line-744"></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-745"></a> <span class="p">}</span>
-<a name="line-746"></a>
-<a name="line-747"></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-748"></a> <span class="p">}</span>
-<a name="line-749"></a>
-<a name="line-750"></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-751"></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-752"></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-753"></a>
-<a name="line-754"></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-755"></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-756"></a>
-<a name="line-757"></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-758"></a> <span class="n">slotHideOptions</span><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">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-761"></a><span class="p">}</span>
-<a name="line-762"></a>
-<a name="line-763"></a><span class="cm">/**</span>
-<a name="line-764"></a><span class="cm"> * Adds a tag to tag tree.</span>
-<a name="line-765"></a><span class="cm"> */</span>
-<a name="line-766"></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-767"></a><span class="p">{</span>
-<a name="line-768"></a> <span class="c1">// const QModelIndex baseIndex = d-&gt;tagSelectionModel-&gt;currentIndex();</span>
-<a name="line-769"></a> <span class="n">QModelIndex</span> <span class="n">baseIndex</span><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="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-772"></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-773"></a> <span class="k">else</span>
-<a name="line-774"></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-775"></a>
-<a name="line-776"></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-777"></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-778"></a>
-<a name="line-779"></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-780"></a><span class="p">}</span>
-<a name="line-781"></a>
-<a name="line-782"></a><span class="cm">/**</span>
-<a name="line-783"></a><span class="cm"> * Adds a new tag to the tag tree.</span>
-<a name="line-784"></a><span class="cm"> */</span>
-<a name="line-785"></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-786"></a><span class="p">{</span>
-<a name="line-787"></a> <span class="n">QModelIndex</span> <span class="n">baseIndex</span><span class="p">;</span>
-<a name="line-788"></a>
-<a name="line-789"></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-790"></a> <span class="p">{</span>
-<a name="line-791"></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-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">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-796"></a> <span class="p">}</span>
-<a name="line-797"></a>
-<a name="line-798"></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-799"></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-800"></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-801"></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-802"></a>
-<a name="line-803"></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-804"></a> <span class="p">{</span>
-<a name="line-805"></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-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="cm">/**</span>
-<a name="line-810"></a><span class="cm"> * Removes a tag from tag tree.</span>
-<a name="line-811"></a><span class="cm"> * Note: If the tag is an external, it is no more deleted.</span>
-<a name="line-812"></a><span class="cm"> */</span>
-<a name="line-813"></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-814"></a><span class="p">{</span>
-<a name="line-815"></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-816"></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-817"></a><span class="p">}</span>
-<a name="line-818"></a>
-<a name="line-819"></a><span class="cm">/**</span>
-<a name="line-820"></a><span class="cm"> * Removes all spacers.</span>
-<a name="line-821"></a><span class="cm"> */</span>
-<a name="line-822"></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-823"></a><span class="p">{</span>
-<a name="line-824"></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-825"></a> <span class="n">QModelIndex</span> <span class="n">baseIndex</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="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-828"></a> <span class="p">{</span>
-<a name="line-829"></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-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">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-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">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-837"></a><span class="p">}</span>
-<a name="line-838"></a>
-<a name="line-839"></a><span class="cm">/**</span>
-<a name="line-840"></a><span class="cm"> * Re-adds all deleted tags based on Undo/Redo widget.</span>
-<a name="line-841"></a><span class="cm"> */</span>
-<a name="line-842"></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-843"></a><span class="p">{</span>
-<a name="line-844"></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-845"></a> <span class="p">{</span>
-<a name="line-846"></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-847"></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-848"></a>
-<a name="line-849"></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-850"></a> <span class="p">{</span>
-<a name="line-851"></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-852"></a> <span class="p">}</span>
-<a name="line-853"></a> <span class="p">}</span>
-<a name="line-854"></a><span class="p">}</span>
-<a name="line-855"></a>
-<a name="line-856"></a><span class="cm">/**</span>
-<a name="line-857"></a><span class="cm"> * Deletes and re-adds all new added tags.</span>
-<a name="line-858"></a><span class="cm"> */</span>
-<a name="line-859"></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-860"></a><span class="p">{</span>
-<a name="line-861"></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-862"></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-863"></a>
-<a name="line-864"></a> <span class="n">slotReaddNewTags</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="cm">/**</span>
-<a name="line-868"></a><span class="cm"> * Adds all address elements below the selected tag. The address ellements are order by area size.</span>
-<a name="line-869"></a><span class="cm"> * For example: country &gt; state &gt; state district &gt; city ...</span>
-<a name="line-870"></a><span class="cm"> */</span>
-<a name="line-871"></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-872"></a><span class="p">{</span>
-<a name="line-873"></a> <span class="n">QModelIndex</span> <span class="n">baseIndex</span><span class="p">;</span>
-<a name="line-874"></a>
-<a name="line-875"></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-876"></a> <span class="p">{</span>
-<a name="line-877"></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-878"></a> <span class="p">}</span>
-<a name="line-879"></a> <span class="k">else</span>
-<a name="line-880"></a> <span class="p">{</span>
-<a name="line-881"></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-882"></a> <span class="p">}</span>
-<a name="line-883"></a>
-<a name="line-884"></a> <span class="n">QStringList</span> <span class="n">spacerList</span><span class="p">;</span>
-<a name="line-885"></a>
-<a name="line-886"></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-887"></a> <span class="p">{</span>
-<a name="line-888"></a> <span class="c1">/// @todo Why are these wrapped in QString?</span>
-<a name="line-889"></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-890"></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-891"></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-892"></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-893"></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-894"></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-895"></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-896"></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-897"></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-898"></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-899"></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-900"></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-901"></a> <span class="p">}</span>
-<a name="line-902"></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-903"></a> <span class="p">{</span>
-<a name="line-904"></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-905"></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-906"></a> <span class="p">}</span>
-<a name="line-907"></a> <span class="k">else</span>
-<a name="line-908"></a> <span class="p">{</span>
-<a name="line-909"></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-910"></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-911"></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-912"></a> <span class="p">}</span>
-<a name="line-913"></a>
-<a name="line-914"></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-915"></a><span class="p">}</span>
-<a name="line-916"></a>
-<a name="line-917"></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-918"></a><span class="p">{</span>
-<a name="line-919"></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-920"></a> <span class="p">{</span>
-<a name="line-921"></a> <span class="c1">// the undo command object is not available, therefore</span>
-<a name="line-922"></a> <span class="c1">// RG has probably been finished already</span>
-<a name="line-923"></a> <span class="k">return</span><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="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-927"></a> <span class="p">{</span>
-<a name="line-928"></a> <span class="c1">// Before we abort, ask the user whether he wants to discard</span>
-<a name="line-929"></a> <span class="c1">// the information obtained so far.</span>
-<a name="line-930"></a>
-<a name="line-931"></a> <span class="c1">// ATTENTION: While we ask the question, the RG backend continues running</span>
-<a name="line-932"></a> <span class="c1">// and sends information about new images to this widget.</span>
-<a name="line-933"></a> <span class="c1">// This means that RG might finish while we ask the question!!!</span>
-<a name="line-934"></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-935"></a>
-<a name="line-936"></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-937"></a> <span class="s">&quot;Would you like to keep the tags which were &quot;</span>
-<a name="line-938"></a> <span class="s">&quot;already obtained?&quot;</span><span class="p">,</span>
-<a name="line-939"></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-940"></a>
-<a name="line-941"></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-942"></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-943"></a> <span class="n">question</span><span class="p">);</span>
-<a name="line-944"></a>
-<a name="line-945"></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-946"></a>
-<a name="line-947"></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-948"></a> <span class="p">{</span>
-<a name="line-949"></a> <span class="c1">// continue</span>
-<a name="line-950"></a>
-<a name="line-951"></a> <span class="c1">// did RG finish while we asked the question?</span>
-<a name="line-952"></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-953"></a> <span class="p">{</span>
-<a name="line-954"></a> <span class="c1">// the undo data was delayed, now send it</span>
-<a name="line-955"></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-956"></a> <span class="p">{</span>
-<a name="line-957"></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-958"></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-959"></a> <span class="p">}</span>
-<a name="line-960"></a>
-<a name="line-961"></a> <span class="c1">// unlock the UI</span>
-<a name="line-962"></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-963"></a> <span class="p">}</span>
-<a name="line-964"></a>
-<a name="line-965"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-966"></a> <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="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-969"></a> <span class="p">{</span>
-<a name="line-970"></a> <span class="c1">// discard the tags</span>
-<a name="line-971"></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-972"></a> <span class="p">}</span>
-<a name="line-973"></a>
-<a name="line-974"></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-975"></a> <span class="p">{</span>
-<a name="line-976"></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-977"></a> <span class="p">{</span>
-<a name="line-978"></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-979"></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-980"></a> <span class="p">}</span>
-<a name="line-981"></a> <span class="p">}</span>
-<a name="line-982"></a> <span class="p">}</span>
-<a name="line-983"></a>
-<a name="line-984"></a> <span class="c1">// clean up the RG request:</span>
-<a name="line-985"></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-986"></a>
-<a name="line-987"></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-988"></a> <span class="p">{</span>
-<a name="line-989"></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-990"></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-991"></a> <span class="p">}</span>
-<a name="line-992"></a>
-<a name="line-993"></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-994"></a><span class="p">}</span>
-<a name="line-995"></a>
-<a name="line-996"></a><span class="p">}</span> <span class="c1">// namespace Digikam</span>
+<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/55.html b/static/reports/cppcheck/master/55.html
index e40d83b0a..1ac987295 100644
--- a/static/reports/cppcheck/master/55.html
+++ b/static/reports/cppcheck/master/55.html
@@ -1,2611 +1,2137 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/utilities/geolocation/geoiface/reversegeocoding/rgtagmodel.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/utilities/geolocation/geoiface/reversegeocoding/rgwidget.cpp </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> rgtagmodel.cpp</p>
-<a href='55.html#line-956'> shadowVar 956</a><a href='55.html#line-1052'> shadowVar 1052</a>
+ <p id="filename"><a href="index.html">Defects:</a> rgwidget.cpp</p>
+<a href='55.html#line-509'> shadowVar 509</a><a href='55.html#line-544'> shadowVar 544</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</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</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-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;rgtagmodel.h&quot;</span><span class="cp"></span>
+<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;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="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>
-<a name="line-49"></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-50"></a><span class="p">{</span>
-<a name="line-51"></a><span class="k">public</span><span class="o">:</span>
+<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="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
-<a name="line-54"></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-55"></a> <span class="n">rootTag</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-56"></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-57"></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-58"></a> <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">QAbstractItemModel</span><span class="o">*</span> <span class="n">tagModel</span><span class="p">;</span>
-<a name="line-62"></a> <span class="n">TreeBranch</span><span class="o">*</span> <span class="n">rootTag</span><span class="p">;</span>
-<a name="line-63"></a>
-<a name="line-64"></a> <span class="n">QModelIndex</span> <span class="n">parent</span><span class="p">;</span>
-<a name="line-65"></a> <span class="kt">int</span> <span class="n">startInsert</span><span class="p">;</span>
-<a name="line-66"></a> <span class="kt">int</span> <span class="n">endInsert</span><span class="p">;</span>
-<a name="line-67"></a>
-<a name="line-68"></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-69"></a>
-<a name="line-70"></a> <span class="n">QStringList</span> <span class="n">auxTagList</span><span class="p">;</span>
-<a name="line-71"></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-72"></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-73"></a>
-<a name="line-74"></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-75"></a><span class="p">};</span>
-<a name="line-76"></a>
-<a name="line-77"></a><span class="cm">/**</span>
-<a name="line-78"></a><span class="cm"> * Constructor</span>
-<a name="line-79"></a><span class="cm"> * @param externalTagModel The tag model found in the host application.</span>
-<a name="line-80"></a><span class="cm"> * @param parent The parent object</span>
-<a name="line-81"></a><span class="cm"> */</span>
-<a name="line-82"></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-83"></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-84"></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-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="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-87"></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-88"></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-89"></a>
-<a name="line-90"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{Country}&quot;</span><span class="p">);</span>
-<a name="line-91"></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-92"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{County}&quot;</span><span class="p">);</span>
-<a name="line-93"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{City}&quot;</span><span class="p">);</span>
-<a name="line-94"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{Town}&quot;</span><span class="p">);</span>
-<a name="line-95"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{Village}&quot;</span><span class="p">);</span>
-<a name="line-96"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{Hamlet}&quot;</span><span class="p">);</span>
-<a name="line-97"></a> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;{Street}&quot;</span><span class="p">);</span>
-<a name="line-98"></a>
-<a name="line-99"></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-100"></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-101"></a>
-<a name="line-102"></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-103"></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-104"></a>
-<a name="line-105"></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-106"></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-107"></a>
-<a name="line-108"></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-109"></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-110"></a>
-<a name="line-111"></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-112"></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-113"></a>
-<a name="line-114"></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-115"></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-116"></a>
-<a name="line-117"></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-118"></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-119"></a>
-<a name="line-120"></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-121"></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-122"></a>
-<a name="line-123"></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-124"></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-125"></a>
-<a name="line-126"></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-127"></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-128"></a>
-<a name="line-129"></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-130"></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-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">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-133"></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-134"></a>
-<a name="line-135"></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-136"></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-137"></a>
-<a name="line-138"></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-139"></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-140"></a>
-<a name="line-141"></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-142"></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-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">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-145"></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-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">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-148"></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-149"></a><span class="p">}</span>
-<a name="line-150"></a>
-<a name="line-151"></a><span class="cm">/**</span>
-<a name="line-152"></a><span class="cm"> * Destructor</span>
-<a name="line-153"></a><span class="cm"> */</span>
-<a name="line-154"></a><span class="n">RGTagModel</span><span class="o">::~</span><span class="n">RGTagModel</span><span class="p">()</span>
-<a name="line-155"></a><span class="p">{</span>
-<a name="line-156"></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-157"></a> <span class="k">delete</span> <span class="n">d</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="cm">/**</span>
-<a name="line-161"></a><span class="cm"> * Returns the branch found at index</span>
-<a name="line-162"></a><span class="cm"> * @param index Current model index.</span>
-<a name="line-163"></a><span class="cm"> * @return The branch for the current index.</span>
-<a name="line-164"></a><span class="cm"> */</span>
-<a name="line-165"></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-166"></a><span class="p">{</span>
-<a name="line-167"></a> <span class="k">return</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-168"></a><span class="p">}</span>
-<a name="line-169"></a>
-<a name="line-170"></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-171"></a><span class="p">{</span>
-<a name="line-172"></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-173"></a> <span class="p">{</span>
-<a name="line-174"></a> <span class="k">return</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="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-178"></a> <span class="p">{</span>
-<a name="line-179"></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-180"></a> <span class="p">}</span>
-<a name="line-181"></a>
-<a name="line-182"></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-183"></a> <span class="p">{</span>
-<a name="line-184"></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-185"></a> <span class="p">}</span>
-<a name="line-186"></a><span class="p">}</span>
-<a name="line-187"></a>
-<a name="line-188"></a><span class="cm">/**</span>
-<a name="line-189"></a><span class="cm"> * Translates the model index from host&#39;s tag model to this model.</span>
-<a name="line-190"></a><span class="cm"> * @return The index of current old tag.</span>
-<a name="line-191"></a><span class="cm"> */</span>
-<a name="line-192"></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-193"></a><span class="p">{</span>
-<a name="line-194"></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-195"></a> <span class="p">{</span>
-<a name="line-196"></a> <span class="k">return</span> <span class="n">QModelIndex</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="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-200"></a>
-<a name="line-201"></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-202"></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-203"></a> <span class="n">parents</span><span class="o">&lt;&lt;</span><span class="n">myIndex</span><span class="p">;</span>
-<a name="line-204"></a>
-<a name="line-205"></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-206"></a> <span class="p">{</span>
-<a name="line-207"></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-208"></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-209"></a> <span class="p">}</span>
-<a name="line-210"></a>
-<a name="line-211"></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-212"></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-213"></a>
-<a name="line-214"></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-215"></a> <span class="p">{</span>
-<a name="line-216"></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-217"></a> <span class="p">{</span>
-<a name="line-218"></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-219"></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-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">newChildren</span><span class="p">.</span><span class="n">count</span><span class="p">(),</span>
-<a name="line-221"></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-222"></a> <span class="p">}</span>
-<a name="line-223"></a>
-<a name="line-224"></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-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 KVBox to it or derive from KVBox</span>
+<a name="line-204"></a> <span class="c1">// - or is there an easier way to use KVBox?</span>
+<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="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-217"></a>
+<a name="line-218"></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-219"></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-220"></a>
+<a name="line-221"></a><span class="cp">#ifdef GPSSYNC_MODELTEST</span>
+<a name="line-222"></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-223"></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-224"></a><span class="cp">#endif </span><span class="c1">// GPSSYNC_MODELTEST</span>
<a name="line-225"></a>
-<a name="line-226"></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-227"></a> <span class="p">{</span>
-<a name="line-228"></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-229"></a> <span class="p">{</span>
-<a name="line-230"></a> <span class="n">where</span> <span class="o">=</span> <span class="n">i</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>
-<a name="line-235"></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-236"></a> <span class="p">{</span>
-<a name="line-237"></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-238"></a> <span class="p">}</span>
-<a name="line-239"></a> <span class="k">else</span>
-<a name="line-240"></a> <span class="p">{</span>
-<a name="line-241"></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-242"></a> <span class="p">{</span>
-<a name="line-243"></a> <span class="k">return</span> <span class="n">QModelIndex</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="c1">//TODO: check when rows are different</span>
-<a name="line-247"></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-248"></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-249"></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-250"></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-251"></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-252"></a>
-<a name="line-253"></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-254"></a> <span class="n">subModelBranch</span> <span class="o">=</span> <span class="n">newTreeBranch</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="n">level</span><span class="o">++</span><span class="p">;</span>
-<a name="line-258"></a> <span class="p">}</span>
-<a name="line-259"></a>
-<a name="line-260"></a> <span class="c1">//no index is found</span>
-<a name="line-261"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-262"></a><span class="p">}</span>
+<a name="line-226"></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-227"></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-228"></a>
+<a name="line-229"></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-230"></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-231"></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-232"></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-233"></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-234"></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-235"></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-236"></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-237"></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-238"></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-239"></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-240"></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-241"></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-242"></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-243"></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-244"></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-245"></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-246"></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-247"></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-248"></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-249"></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-250"></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-251"></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-252"></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-253"></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-254"></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-255"></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-256"></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-257"></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-258"></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-259"></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-260"></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-261"></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-262"></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-263"></a>
-<a name="line-264"></a><span class="cm">/**</span>
-<a name="line-265"></a><span class="cm"> * Translates the model index from this model to host&#39;s tag model.</span>
-<a name="line-266"></a><span class="cm"> * @return The index of a tag in host&#39;s tag model.</span>
-<a name="line-267"></a><span class="cm"> */</span>
-<a name="line-268"></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-269"></a><span class="p">{</span>
-<a name="line-270"></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-271"></a> <span class="p">{</span>
-<a name="line-272"></a> <span class="k">return</span> <span class="n">QModelIndex</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">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-264"></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-265"></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-266"></a>
+<a name="line-267"></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-268"></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-269"></a>
+<a name="line-270"></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-271"></a>
+<a name="line-272"></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-273"></a> <span class="p">{</span>
+<a name="line-274"></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-275"></a> <span class="p">}</span>
<a name="line-276"></a>
-<a name="line-277"></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> <span class="c1">//static_cast&lt;TreeBranch*&gt;(tagModelIndex.internalPointer());</span>
-<a name="line-278"></a>
-<a name="line-279"></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-280"></a> <span class="p">{</span>
-<a name="line-281"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-282"></a> <span class="p">}</span>
+<a name="line-277"></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-278"></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-279"></a>
+<a name="line-280"></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-281"></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-282"></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-283"></a>
-<a name="line-284"></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-285"></a><span class="p">}</span>
-<a name="line-286"></a>
-<a name="line-287"></a><span class="cm">/**</span>
-<a name="line-288"></a><span class="cm"> * Adds a spacer tag.</span>
-<a name="line-289"></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-290"></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-291"></a><span class="cm"> *</span>
-<a name="line-292"></a><span class="cm"> */</span>
-<a name="line-293"></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-294"></a><span class="p">{</span>
-<a name="line-295"></a> <span class="c1">//TreeBranch* const parentBranch = parent.isValid() ? static_cast&lt;TreeBranch*&gt;(parent.internalPointer()) : d-&gt;rootTag;</span>
-<a name="line-296"></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-297"></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-298"></a>
-<a name="line-299"></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-300"></a> <span class="p">{</span>
-<a name="line-301"></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-302"></a> <span class="p">{</span>
-<a name="line-303"></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-304"></a> <span class="p">{</span>
-<a name="line-305"></a> <span class="n">found</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-306"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-307"></a> <span class="p">}</span>
-<a name="line-308"></a> <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="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">found</span><span class="p">)</span>
-<a name="line-312"></a> <span class="p">{</span>
-<a name="line-313"></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-314"></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-315"></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-316"></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-284"></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-285"></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-286"></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-287"></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-288"></a>
+<a name="line-289"></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-290"></a>
+<a name="line-291"></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-292"></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-293"></a>
+<a name="line-294"></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-295"></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-296"></a>
+<a name="line-297"></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-298"></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-299"></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-300"></a>
+<a name="line-301"></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-302"></a>
+<a name="line-303"></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-304"></a>
+<a name="line-305"></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-306"></a>
+<a name="line-307"></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-308"></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-309"></a>
+<a name="line-310"></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-311"></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-312"></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-313"></a>
+<a name="line-314"></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-315"></a>
+<a name="line-316"></a> <span class="n">updateUIState</span><span class="p">();</span>
<a name="line-317"></a>
-<a name="line-318"></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-319"></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-320"></a> <span class="n">endInsertRows</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-318"></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-319"></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-320"></a>
+<a name="line-321"></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-322"></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-323"></a>
-<a name="line-324"></a><span class="cm">/**</span>
-<a name="line-325"></a><span class="cm"> * Adds a tag containing data returned from backends.</span>
-<a name="line-326"></a><span class="cm"> * @param parent The index of the parent.</span>
-<a name="line-327"></a><span class="cm"> * @param newTagName The name of the new tag.</span>
-<a name="line-328"></a><span class="cm"> */</span>
-<a name="line-329"></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-330"></a><span class="p">{</span>
-<a name="line-331"></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">//parent.isValid() ? static_cast&lt;TreeBranch*&gt;(parent.internalPointer()) : d-&gt;rootTag;</span>
-<a name="line-332"></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-333"></a> <span class="n">QPersistentModelIndex</span> <span class="n">retIndex</span><span class="p">;</span>
-<a name="line-334"></a>
-<a name="line-335"></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-336"></a> <span class="p">{</span>
-<a name="line-337"></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-338"></a> <span class="p">{</span>
-<a name="line-339"></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-340"></a> <span class="p">{</span>
-<a name="line-341"></a> <span class="n">found</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-342"></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-343"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-344"></a> <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-324"></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-325"></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-326"></a>
+<a name="line-327"></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-328"></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-329"></a>
+<a name="line-330"></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-331"></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-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">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-334"></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-335"></a>
+<a name="line-336"></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-337"></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-338"></a>
+<a name="line-339"></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-340"></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-341"></a>
+<a name="line-342"></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-343"></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-344"></a>
+<a name="line-345"></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-346"></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-347"></a>
-<a name="line-348"></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-349"></a> <span class="p">{</span>
-<a name="line-350"></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-351"></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-352"></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-353"></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-354"></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-355"></a>
-<a name="line-356"></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-357"></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-358"></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-359"></a> <span class="n">endInsertRows</span><span class="p">();</span>
-<a name="line-360"></a>
-<a name="line-361"></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-362"></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-363"></a> <span class="p">}</span>
-<a name="line-364"></a>
-<a name="line-365"></a> <span class="k">return</span> <span class="n">retIndex</span><span class="p">;</span>
-<a name="line-366"></a><span class="p">}</span>
-<a name="line-367"></a>
-<a name="line-368"></a><span class="cm">/**</span>
-<a name="line-369"></a><span class="cm"> * Gets the address of a tag.</span>
-<a name="line-370"></a><span class="cm"> */</span>
-<a name="line-371"></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-372"></a><span class="p">{</span>
-<a name="line-373"></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-348"></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-349"></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-350"></a>
+<a name="line-351"></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-352"></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-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">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-355"></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-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">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-358"></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-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">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-361"></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-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">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-364"></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-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">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-367"></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-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">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-370"></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-371"></a>
+<a name="line-372"></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-373"></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-374"></a>
-<a name="line-375"></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-376"></a> <span class="p">{</span>
-<a name="line-377"></a> <span class="n">TagData</span> <span class="n">tagData</span><span class="p">;</span>
-<a name="line-378"></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-379"></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-380"></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-381"></a> <span class="p">}</span>
-<a name="line-382"></a>
-<a name="line-383"></a> <span class="k">return</span> <span class="n">tagAddress</span><span class="p">;</span>
-<a name="line-384"></a><span class="p">}</span>
-<a name="line-385"></a>
-<a name="line-386"></a><span class="cm">/**</span>
-<a name="line-387"></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-388"></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-389"></a><span class="cm"> * @param currentBranch The branch from where the scan starts.</span>
-<a name="line-390"></a><span class="cm"> * @param currentRow The row of the current branch.</span>
-<a name="line-391"></a><span class="cm"> * @param addressElements A list containing address elements. Example: {Country}, {City}...</span>
-<a name="line-392"></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-393"></a><span class="cm"> */</span>
-<a name="line-394"></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-395"></a> <span class="kt">int</span> <span class="n">currentRow</span><span class="p">,</span>
-<a name="line-396"></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-397"></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-398"></a><span class="p">{</span>
-<a name="line-399"></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-400"></a> <span class="p">{</span>
-<a name="line-401"></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-402"></a>
-<a name="line-403"></a> <span class="c1">//this spacer is not an address element</span>
-<a name="line-404"></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-405"></a> <span class="p">{</span>
-<a name="line-406"></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-407"></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-408"></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-409"></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-410"></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-411"></a> <span class="p">}</span>
-<a name="line-412"></a> <span class="k">else</span>
-<a name="line-413"></a> <span class="p">{</span>
-<a name="line-414"></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-415"></a> <span class="p">{</span>
-<a name="line-416"></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-417"></a> <span class="p">{</span>
-<a name="line-418"></a> <span class="n">newDataAdded</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-419"></a> <span class="n">QModelIndex</span> <span class="n">currentIndex</span><span class="p">;</span>
+<a name="line-375"></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-376"></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-377"></a>
+<a name="line-378"></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-379"></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-380"></a>
+<a name="line-381"></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-382"></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-383"></a>
+<a name="line-384"></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-385"></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-386"></a>
+<a name="line-387"></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-388"></a> <span class="p">{</span>
+<a name="line-389"></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-390"></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-391"></a> <span class="p">}</span>
+<a name="line-392"></a>
+<a name="line-393"></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-394"></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-395"></a><span class="p">}</span>
+<a name="line-396"></a>
+<a name="line-397"></a><span class="cm">/**</span>
+<a name="line-398"></a><span class="cm"> * Destructor</span>
+<a name="line-399"></a><span class="cm"> */</span>
+<a name="line-400"></a><span class="n">RGWidget</span><span class="o">::~</span><span class="n">RGWidget</span><span class="p">()</span>
+<a name="line-401"></a><span class="p">{</span>
+<a name="line-402"></a> <span class="k">delete</span> <span class="n">d</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="cm">/**</span>
+<a name="line-406"></a><span class="cm"> * Enables or disables the containing widgets.</span>
+<a name="line-407"></a><span class="cm"> */</span>
+<a name="line-408"></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-409"></a><span class="p">{</span>
+<a name="line-410"></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-411"></a>
+<a name="line-412"></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-413"></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-414"></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-415"></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-416"></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-417"></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-418"></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-419"></a><span class="p">}</span>
<a name="line-420"></a>
-<a name="line-421"></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-422"></a> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-423"></a> <span class="k">else</span>
-<a name="line-424"></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-425"></a>
-<a name="line-426"></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-427"></a> <span class="n">QPersistentModelIndex</span> <span class="n">auxIndex</span><span class="p">;</span>
-<a name="line-428"></a>
-<a name="line-429"></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-430"></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-431"></a> <span class="p">{</span>
-<a name="line-432"></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-433"></a> <span class="p">}</span>
-<a name="line-434"></a> <span class="k">else</span>
-<a name="line-435"></a> <span class="p">{</span>
-<a name="line-436"></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-437"></a> <span class="p">}</span>
-<a name="line-438"></a>
-<a name="line-439"></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-440"></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-441"></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-421"></a><span class="cm">/**</span>
+<a name="line-422"></a><span class="cm"> * This slot triggeres when the button that start the reverse geocoding process is pressed.</span>
+<a name="line-423"></a><span class="cm"> */</span>
+<a name="line-424"></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-425"></a><span class="p">{</span>
+<a name="line-426"></a> <span class="c1">// get the selected images:</span>
+<a name="line-427"></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-428"></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-429"></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-430"></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-431"></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-432"></a>
+<a name="line-433"></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-434"></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-435"></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-436"></a>
+<a name="line-437"></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-438"></a> <span class="p">{</span>
+<a name="line-439"></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-440"></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-441"></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-442"></a>
-<a name="line-443"></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-444"></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-445"></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-446"></a> <span class="p">}</span>
-<a name="line-447"></a> <span class="p">}</span>
+<a name="line-443"></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-444"></a> <span class="k">continue</span><span class="p">;</span>
+<a name="line-445"></a>
+<a name="line-446"></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-447"></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-448"></a>
-<a name="line-449"></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-450"></a> <span class="p">{</span>
-<a name="line-451"></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-452"></a> <span class="p">}</span>
-<a name="line-453"></a>
-<a name="line-454"></a> <span class="k">if</span> <span class="p">(</span><span class="n">newDataAdded</span><span class="p">)</span>
-<a name="line-455"></a> <span class="p">{</span>
-<a name="line-456"></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-457"></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-458"></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-459"></a> <span class="p">}</span>
-<a name="line-460"></a> <span class="p">}</span>
-<a name="line-461"></a> <span class="p">}</span>
+<a name="line-449"></a> <span class="n">RGInfo</span> <span class="n">photoObj</span><span class="p">;</span>
+<a name="line-450"></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-451"></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-452"></a>
+<a name="line-453"></a> <span class="n">photoList</span> <span class="o">&lt;&lt;</span> <span class="n">photoObj</span><span class="p">;</span>
+<a name="line-454"></a>
+<a name="line-455"></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-456"></a> <span class="p">}</span>
+<a name="line-457"></a>
+<a name="line-458"></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-459"></a> <span class="p">{</span>
+<a name="line-460"></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-461"></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-462"></a>
-<a name="line-463"></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-464"></a> <span class="p">{</span>
-<a name="line-465"></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-466"></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-467"></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-468"></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-469"></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-470"></a> <span class="p">}</span>
-<a name="line-471"></a>
-<a name="line-472"></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-473"></a> <span class="p">{</span>
-<a name="line-474"></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-475"></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-476"></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-477"></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-478"></a> <span class="n">addressElements</span><span class="p">,</span>
-<a name="line-479"></a> <span class="n">elementsData</span><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">removeLast</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">removeLast</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"> * 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-487"></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-488"></a><span class="cm"> * @param elements A list containing address elements. Example: {Country}, {City}...</span>
-<a name="line-489"></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-490"></a><span class="cm"> * @return A list containing new tags</span>
-<a name="line-491"></a><span class="cm"> */</span>
-<a name="line-492"></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-493"></a><span class="p">{</span>
-<a name="line-494"></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-495"></a>
-<a name="line-496"></a> <span class="c1">//elements contains address elements {Country}, {City}, ...</span>
-<a name="line-497"></a> <span class="c1">//resultedData contains RG data (example Spain,Barcelona)</span>
-<a name="line-498"></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-499"></a>
-<a name="line-500"></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-501"></a><span class="p">}</span>
-<a name="line-502"></a>
-<a name="line-503"></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-504"></a><span class="p">{</span>
-<a name="line-505"></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-463"></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-464"></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-465"></a>
+<a name="line-466"></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-467"></a> <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="cm">/**</span>
+<a name="line-471"></a><span class="cm"> * Hide or shows the extra options.</span>
+<a name="line-472"></a><span class="cm"> */</span>
+<a name="line-473"></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-474"></a><span class="p">{</span>
+<a name="line-475"></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-476"></a> <span class="p">{</span>
+<a name="line-477"></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-478"></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-479"></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-480"></a> <span class="p">}</span>
+<a name="line-481"></a> <span class="k">else</span>
+<a name="line-482"></a> <span class="p">{</span>
+<a name="line-483"></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-484"></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-485"></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-486"></a> <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="cm">/**</span>
+<a name="line-490"></a><span class="cm"> * The data has returned from backend and now it&#39;s processed here.</span>
+<a name="line-491"></a><span class="cm"> * @param returnedRGList Contains the data returned by backend.</span>
+<a name="line-492"></a><span class="cm"> */</span>
+<a name="line-493"></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-494"></a><span class="p">{</span>
+<a name="line-495"></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-496"></a>
+<a name="line-497"></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-498"></a> <span class="p">{</span>
+<a name="line-499"></a> <span class="c1">/// @todo This collides with the message box displayed if the user aborts the RG process</span>
+<a name="line-500"></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-501"></a>
+<a name="line-502"></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-503"></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-504"></a> <span class="k">return</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="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">parentBranch</span><span class="p">)</span>
-<a name="line-508"></a> <span class="p">{</span>
-<a name="line-509"></a> <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
-<a name="line-510"></a> <span class="p">}</span>
-<a name="line-511"></a>
-<a name="line-512"></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-513"></a> <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
-<a name="line-514"></a> <span class="k">else</span> <span class="nf">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-515"></a> <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
+<a name="line-507"></a> <span class="n">QString</span> <span class="n">address</span><span class="p">;</span>
+<a name="line-508"></a>
+<a name="line-509"></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-510"></a> <span class="p">{</span>
+<a name="line-511"></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-512"></a>
+<a name="line-513"></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-514"></a> <span class="p">{</span>
+<a name="line-515"></a> <span class="n">QString</span> <span class="n">addressElementsWantedFormat</span><span class="p">;</span>
<a name="line-516"></a>
-<a name="line-517"></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-518"></a><span class="p">}</span>
-<a name="line-519"></a>
-<a name="line-520"></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-521"></a><span class="p">{</span>
-<a name="line-522"></a> <span class="k">return</span> <span class="nb">false</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">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-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">index</span><span class="p">.</span><span class="n">isValid</span><span class="p">())</span>
-<a name="line-528"></a> <span class="p">{</span>
-<a name="line-529"></a> <span class="k">return</span> <span class="n">QVariant</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">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> <span class="c1">//static_cast&lt;TreeBranch*&gt;(index.internalPointer());</span>
+<a name="line-517"></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-518"></a> <span class="p">{</span>
+<a name="line-519"></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-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">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-522"></a> <span class="p">{</span>
+<a name="line-523"></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-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">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-528"></a> <span class="p">}</span>
+<a name="line-529"></a>
+<a name="line-530"></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-531"></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-532"></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-533"></a>
-<a name="line-534"></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-535"></a> <span class="p">{</span>
-<a name="line-536"></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-537"></a> <span class="p">}</span>
-<a name="line-538"></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-539"></a> <span class="p">{</span>
-<a name="line-540"></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-541"></a> <span class="p">}</span>
-<a name="line-542"></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-543"></a> <span class="p">{</span>
-<a name="line-544"></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-545"></a> <span class="p">}</span>
-<a name="line-546"></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-547"></a> <span class="p">{</span>
-<a name="line-548"></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-549"></a> <span class="p">}</span>
-<a name="line-550"></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-551"></a> <span class="p">{</span>
-<a name="line-552"></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-553"></a> <span class="p">}</span>
-<a name="line-554"></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-555"></a> <span class="p">{</span>
-<a name="line-556"></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-557"></a> <span class="p">}</span>
+<a name="line-534"></a> <span class="c1">//removes first &quot;/&quot; from tag addresses</span>
+<a name="line-535"></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-536"></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-537"></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-538"></a>
+<a name="line-539"></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-540"></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-541"></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-542"></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-543"></a>
+<a name="line-544"></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-545"></a> <span class="p">{</span>
+<a name="line-546"></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-547"></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-548"></a>
+<a name="line-549"></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-550"></a> <span class="p">{</span>
+<a name="line-551"></a> <span class="n">elements</span><span class="o">&lt;&lt;</span><span class="n">currentAddressFormat</span><span class="p">;</span>
+<a name="line-552"></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-553"></a> <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">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-557"></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-558"></a>
-<a name="line-559"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="p">();</span>
-<a name="line-560"></a><span class="p">}</span>
+<a name="line-559"></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-560"></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-561"></a>
-<a name="line-562"></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-563"></a><span class="p">{</span>
-<a name="line-564"></a> <span class="k">if</span> <span class="p">(</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> <span class="p">)</span>
-<a name="line-565"></a> <span class="p">{</span>
-<a name="line-566"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-562"></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-563"></a>
+<a name="line-564"></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-565"></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-566"></a> <span class="p">}</span>
<a name="line-567"></a> <span class="p">}</span>
<a name="line-568"></a>
-<a name="line-569"></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-570"></a> <span class="c1">// if (parent.isValid())</span>
-<a name="line-571"></a> <span class="c1">// parentBranch = static_cast&lt;TreeBranch*&gt;(parent.internalPointer());</span>
-<a name="line-572"></a>
-<a name="line-573"></a> <span class="c1">// this should not happen!</span>
-<a name="line-574"></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-575"></a> <span class="p">{</span>
-<a name="line-576"></a> <span class="k">return</span> <span class="n">QModelIndex</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="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-580"></a> <span class="p">{</span>
-<a name="line-581"></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-582"></a> <span class="p">}</span>
-<a name="line-583"></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> <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-584"></a> <span class="p">{</span>
-<a name="line-585"></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-586"></a> <span class="p">}</span>
-<a name="line-587"></a>
-<a name="line-588"></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-589"></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-569"></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-570"></a>
+<a name="line-571"></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-572"></a> <span class="p">{</span>
+<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">currentlyAskingCancelQuestion</span><span class="p">)</span>
+<a name="line-574"></a> <span class="p">{</span>
+<a name="line-575"></a> <span class="c1">// if the user is currently answering the cancel question, do nothing, only report progress</span>
+<a name="line-576"></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-577"></a> <span class="p">}</span>
+<a name="line-578"></a> <span class="k">else</span>
+<a name="line-579"></a> <span class="p">{</span>
+<a name="line-580"></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-581"></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-582"></a>
+<a name="line-583"></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-584"></a> <span class="p">}</span>
+<a name="line-585"></a> <span class="p">}</span>
+<a name="line-586"></a> <span class="k">else</span>
+<a name="line-587"></a> <span class="p">{</span>
+<a name="line-588"></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-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="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-593"></a><span class="p">{</span>
-<a name="line-594"></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-595"></a>
-<a name="line-596"></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-597"></a> <span class="p">{</span>
-<a name="line-598"></a> <span class="k">return</span> <span class="n">QModelIndex</span><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="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">type</span> <span class="o">==</span> <span class="n">TypeNewChild</span><span class="p">)</span>
-<a name="line-602"></a> <span class="p">{</span>
-<a name="line-603"></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-604"></a>
-<a name="line-605"></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-606"></a> <span class="p">{</span>
-<a name="line-607"></a> <span class="k">return</span> <span class="n">QModelIndex</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="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-611"></a>
-<a name="line-612"></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-613"></a> <span class="p">{</span>
-<a name="line-614"></a> <span class="k">return</span> <span class="n">QModelIndex</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="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-618"></a> <span class="p">{</span>
-<a name="line-619"></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-592"></a><span class="cm">/**</span>
+<a name="line-593"></a><span class="cm"> * Sets whether the containing widgets are enabled or disabled.</span>
+<a name="line-594"></a><span class="cm"> * @param state If true, the controls are enabled.</span>
+<a name="line-595"></a><span class="cm"> */</span>
+<a name="line-596"></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-597"></a><span class="p">{</span>
+<a name="line-598"></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-599"></a> <span class="n">updateUIState</span><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"> * Here are filtered the events.</span>
+<a name="line-604"></a><span class="cm"> */</span>
+<a name="line-605"></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-606"></a><span class="p">{</span>
+<a name="line-607"></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-608"></a> <span class="p">{</span>
+<a name="line-609"></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-610"></a> <span class="p">{</span>
+<a name="line-611"></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-612"></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-613"></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-614"></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-615"></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-616"></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-617"></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-618"></a>
+<a name="line-619"></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-620"></a> <span class="p">{</span>
-<a name="line-621"></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-622"></a> <span class="p">{</span>
-<a name="line-623"></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-624"></a> <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">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-628"></a> <span class="p">}</span>
-<a name="line-629"></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-630"></a> <span class="p">{</span>
-<a name="line-631"></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-632"></a> <span class="p">{</span>
-<a name="line-633"></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-634"></a> <span class="p">{</span>
-<a name="line-635"></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-636"></a> <span class="p">}</span>
-<a name="line-637"></a> <span class="p">}</span>
-<a name="line-638"></a> <span class="p">}</span>
-<a name="line-639"></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-640"></a> <span class="p">{</span>
-<a name="line-641"></a> <span class="c1">// TODO: don&#39;t we have a function for this?</span>
-<a name="line-642"></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-621"></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-622"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addSeparator</span><span class="p">();</span>
+<a name="line-623"></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-624"></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-625"></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-626"></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-627"></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-628"></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-629"></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-630"></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-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">actionAddVillage</span><span class="p">);</span>
+<a name="line-632"></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-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">actionAddStreet</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">actionAddHouseNumber</span><span class="p">);</span>
+<a name="line-635"></a> <span class="p">}</span>
+<a name="line-636"></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-637"></a> <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">actionAddAllAddressElementsToTag</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">actionAddCountry</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">actionAddPlace</span><span class="p">);</span>
+<a name="line-641"></a> <span class="p">}</span>
+<a name="line-642"></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-643"></a> <span class="p">{</span>
-<a name="line-644"></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-645"></a> <span class="p">{</span>
-<a name="line-646"></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-647"></a> <span class="mi">0</span><span class="p">,</span> <span class="n">parentBranch</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="k">return</span> <span class="n">QModelIndex</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">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-656"></a><span class="p">}</span>
-<a name="line-657"></a>
-<a name="line-658"></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-659"></a><span class="p">{</span>
-<a name="line-660"></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">//parent.isValid() ? static_cast&lt;TreeBranch*&gt;(parent.internalPointer()) : d-&gt;rootTag;</span>
-<a name="line-661"></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-662"></a>
-<a name="line-663"></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-664"></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-665"></a> <span class="p">{</span>
-<a name="line-666"></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-667"></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-668"></a> <span class="p">}</span>
-<a name="line-669"></a>
-<a name="line-670"></a> <span class="k">return</span> <span class="n">myRowCount</span><span class="p">;</span>
-<a name="line-671"></a><span class="p">}</span>
-<a name="line-672"></a>
-<a name="line-673"></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-674"></a><span class="p">{</span>
-<a name="line-675"></a> <span class="k">return</span> <span class="nb">false</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="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-679"></a><span class="p">{</span>
-<a name="line-680"></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-681"></a><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">actionAddAllAddressElementsToTag</span><span class="p">);</span>
+<a name="line-645"></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-646"></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-647"></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-648"></a> <span class="p">}</span>
+<a name="line-649"></a>
+<a name="line-650"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addSeparator</span><span class="p">();</span>
+<a name="line-651"></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-652"></a> <span class="n">menu</span><span class="o">-&gt;</span><span class="n">addSeparator</span><span class="p">();</span>
+<a name="line-653"></a>
+<a name="line-654"></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-655"></a> <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">actionRemoveTag</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="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-660"></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-661"></a> <span class="k">delete</span> <span class="n">menu</span><span class="p">;</span>
+<a name="line-662"></a> <span class="p">}</span>
+<a name="line-663"></a> <span class="p">}</span>
+<a name="line-664"></a>
+<a name="line-665"></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-666"></a><span class="p">}</span>
+<a name="line-667"></a>
+<a name="line-668"></a><span class="cm">/**</span>
+<a name="line-669"></a><span class="cm"> * Saves the settings of widgets contained in reverse geocoding widget.</span>
+<a name="line-670"></a><span class="cm"> * @param group Here are stored the settings.</span>
+<a name="line-671"></a><span class="cm"> */</span>
+<a name="line-672"></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-673"></a><span class="p">{</span>
+<a name="line-674"></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-675"></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-676"></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-677"></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-678"></a>
+<a name="line-679"></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-680"></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-681"></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-682"></a>
-<a name="line-683"></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-684"></a><span class="p">{</span>
-<a name="line-685"></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-686"></a>
-<a name="line-687"></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-688"></a> <span class="p">{</span>
-<a name="line-689"></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-690"></a> <span class="p">}</span>
-<a name="line-691"></a>
-<a name="line-692"></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-693"></a><span class="p">}</span>
-<a name="line-694"></a>
-<a name="line-695"></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-696"></a><span class="p">{</span>
-<a name="line-697"></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-698"></a><span class="p">}</span>
-<a name="line-699"></a>
-<a name="line-700"></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-701"></a><span class="p">{</span>
-<a name="line-702"></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-703"></a><span class="p">}</span>
-<a name="line-704"></a>
-<a name="line-705"></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-706"></a><span class="p">{</span>
-<a name="line-707"></a> <span class="c1">//TODO: Should we do something here?</span>
-<a name="line-708"></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-709"></a><span class="p">}</span>
+<a name="line-683"></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-684"></a> <span class="p">{</span>
+<a name="line-685"></a> <span class="n">QString</span> <span class="n">spacerName</span><span class="p">;</span>
+<a name="line-686"></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-687"></a> <span class="n">QString</span> <span class="n">spacerType</span><span class="p">;</span>
+<a name="line-688"></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-689"></a>
+<a name="line-690"></a> <span class="n">QStringList</span> <span class="n">spacerTagNames</span><span class="p">;</span>
+<a name="line-691"></a> <span class="n">QStringList</span> <span class="n">spacerTypes</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">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-694"></a> <span class="p">{</span>
+<a name="line-695"></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-696"></a>
+<a name="line-697"></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-698"></a> <span class="p">{</span>
+<a name="line-699"></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-700"></a> <span class="p">}</span>
+<a name="line-701"></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-702"></a> <span class="p">{</span>
+<a name="line-703"></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-704"></a> <span class="p">}</span>
+<a name="line-705"></a> <span class="k">else</span>
+<a name="line-706"></a> <span class="p">{</span>
+<a name="line-707"></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-708"></a> <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="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-712"></a> <span class="kt">int</span> <span class="n">sourceStart</span><span class="p">,</span>
-<a name="line-713"></a> <span class="kt">int</span> <span class="n">sourceEnd</span><span class="p">,</span>
-<a name="line-714"></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-715"></a> <span class="kt">int</span> <span class="n">destinationColumn</span><span class="p">)</span>
-<a name="line-716"></a><span class="p">{</span>
-<a name="line-717"></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-718"></a><span class="p">}</span>
-<a name="line-719"></a>
-<a name="line-720"></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-711"></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-712"></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-713"></a> <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="cm">/**</span>
+<a name="line-717"></a><span class="cm"> * Restores the settings of widgets contained in reverse geocoding widget.</span>
+<a name="line-718"></a><span class="cm"> * @param group Here are stored the settings.</span>
+<a name="line-719"></a><span class="cm"> */</span>
+<a name="line-720"></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-721"></a><span class="p">{</span>
-<a name="line-722"></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-723"></a><span class="p">}</span>
+<a name="line-722"></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-723"></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-724"></a>
-<a name="line-725"></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-726"></a><span class="p">{</span>
-<a name="line-727"></a> <span class="n">endInsertColumns</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="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotColumnsMoved</span><span class="p">()</span>
-<a name="line-731"></a><span class="p">{</span>
-<a name="line-732"></a> <span class="n">endMoveColumns</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="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotColumnsRemoved</span><span class="p">()</span>
-<a name="line-736"></a><span class="p">{</span>
-<a name="line-737"></a> <span class="n">endRemoveColumns</span><span class="p">();</span>
-<a name="line-738"></a><span class="p">}</span>
-<a name="line-739"></a>
-<a name="line-740"></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-741"></a><span class="p">{</span>
-<a name="line-742"></a> <span class="n">emit</span> <span class="n">layoutAboutToBeChanged</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">slotLayoutChanged</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">layoutChanged</span><span class="p">();</span>
-<a name="line-748"></a><span class="p">}</span>
+<a name="line-725"></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-726"></a> <span class="p">{</span>
+<a name="line-727"></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-728"></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-729"></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-730"></a>
+<a name="line-731"></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-732"></a> <span class="p">{</span>
+<a name="line-733"></a> <span class="n">TagData</span> <span class="n">currentTagData</span><span class="p">;</span>
+<a name="line-734"></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-735"></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-736"></a>
+<a name="line-737"></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-738"></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-739"></a> <span class="k">else</span> <span class="nf">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-740"></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-741"></a> <span class="k">else</span> <span class="nf">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-742"></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-743"></a>
+<a name="line-744"></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-745"></a> <span class="p">}</span>
+<a name="line-746"></a>
+<a name="line-747"></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-748"></a> <span class="p">}</span>
<a name="line-749"></a>
-<a name="line-750"></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-751"></a><span class="p">{</span>
-<a name="line-752"></a> <span class="n">beginResetModel</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="kt">void</span> <span class="n">RGTagModel</span><span class="o">::</span><span class="n">slotModelReset</span><span class="p">()</span>
-<a name="line-756"></a><span class="p">{</span>
-<a name="line-757"></a> <span class="n">beginResetModel</span><span class="p">();</span>
-<a name="line-758"></a> <span class="n">endResetModel</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">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-762"></a><span class="p">{</span>
-<a name="line-763"></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-764"></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-765"></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-766"></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-767"></a>
-<a name="line-768"></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-769"></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-770"></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-771"></a><span class="p">}</span>
-<a name="line-772"></a>
-<a name="line-773"></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-774"></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-775"></a><span class="p">{</span>
-<a name="line-776"></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-777"></a><span class="p">}</span>
+<a name="line-750"></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-751"></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-752"></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-753"></a>
+<a name="line-754"></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-755"></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-756"></a>
+<a name="line-757"></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-758"></a> <span class="n">slotHideOptions</span><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">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-761"></a><span class="p">}</span>
+<a name="line-762"></a>
+<a name="line-763"></a><span class="cm">/**</span>
+<a name="line-764"></a><span class="cm"> * Adds a tag to tag tree.</span>
+<a name="line-765"></a><span class="cm"> */</span>
+<a name="line-766"></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-767"></a><span class="p">{</span>
+<a name="line-768"></a> <span class="c1">// const QModelIndex baseIndex = d-&gt;tagSelectionModel-&gt;currentIndex();</span>
+<a name="line-769"></a> <span class="n">QModelIndex</span> <span class="n">baseIndex</span><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="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-772"></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-773"></a> <span class="k">else</span>
+<a name="line-774"></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-775"></a>
+<a name="line-776"></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-777"></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-778"></a>
-<a name="line-779"></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-780"></a><span class="p">{</span>
-<a name="line-781"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
-<a name="line-782"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">start</span><span class="p">);</span>
-<a name="line-783"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">end</span><span class="p">);</span>
-<a name="line-784"></a><span class="p">}</span>
-<a name="line-785"></a>
-<a name="line-786"></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-787"></a><span class="p">{</span>
-<a name="line-788"></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-789"></a>
-<a name="line-790"></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-791"></a> <span class="p">{</span>
-<a name="line-792"></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-793"></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-794"></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-795"></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-796"></a>
-<a name="line-797"></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-798"></a> <span class="p">}</span>
-<a name="line-799"></a>
-<a name="line-800"></a> <span class="n">endInsertRows</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">parent</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-803"></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-804"></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-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">slotRowsMoved</span><span class="p">()</span>
-<a name="line-808"></a><span class="p">{</span>
-<a name="line-809"></a> <span class="n">endMoveRows</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">RGTagModel</span><span class="o">::</span><span class="n">slotRowsRemoved</span><span class="p">()</span>
-<a name="line-813"></a><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="cm">/**</span>
-<a name="line-817"></a><span class="cm"> * Deletes a tag.</span>
-<a name="line-818"></a><span class="cm"> * @param currentIndex The tag found at this index will be deleted.</span>
-<a name="line-819"></a><span class="cm"> */</span>
-<a name="line-820"></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-821"></a><span class="p">{</span>
-<a name="line-822"></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-823"></a> <span class="p">{</span>
-<a name="line-824"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-825"></a> <span class="p">}</span>
+<a name="line-779"></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-780"></a><span class="p">}</span>
+<a name="line-781"></a>
+<a name="line-782"></a><span class="cm">/**</span>
+<a name="line-783"></a><span class="cm"> * Adds a new tag to the tag tree.</span>
+<a name="line-784"></a><span class="cm"> */</span>
+<a name="line-785"></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-786"></a><span class="p">{</span>
+<a name="line-787"></a> <span class="n">QModelIndex</span> <span class="n">baseIndex</span><span class="p">;</span>
+<a name="line-788"></a>
+<a name="line-789"></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-790"></a> <span class="p">{</span>
+<a name="line-791"></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-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">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-796"></a> <span class="p">}</span>
+<a name="line-797"></a>
+<a name="line-798"></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-799"></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-800"></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-801"></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-802"></a>
+<a name="line-803"></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-804"></a> <span class="p">{</span>
+<a name="line-805"></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-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="cm">/**</span>
+<a name="line-810"></a><span class="cm"> * Removes a tag from tag tree.</span>
+<a name="line-811"></a><span class="cm"> * Note: If the tag is an external, it is no more deleted.</span>
+<a name="line-812"></a><span class="cm"> */</span>
+<a name="line-813"></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-814"></a><span class="p">{</span>
+<a name="line-815"></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-816"></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-817"></a><span class="p">}</span>
+<a name="line-818"></a>
+<a name="line-819"></a><span class="cm">/**</span>
+<a name="line-820"></a><span class="cm"> * Removes all spacers.</span>
+<a name="line-821"></a><span class="cm"> */</span>
+<a name="line-822"></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-823"></a><span class="p">{</span>
+<a name="line-824"></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-825"></a> <span class="n">QModelIndex</span> <span class="n">baseIndex</span><span class="p">;</span>
<a name="line-826"></a>
-<a name="line-827"></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-828"></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-829"></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-830"></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-831"></a>
-<a name="line-832"></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-833"></a> <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="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="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">&gt;</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-838"></a> <span class="p">{</span>
-<a name="line-839"></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-840"></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-841"></a>
-<a name="line-842"></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-843"></a> <span class="p">{</span>
-<a name="line-844"></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-845"></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-846"></a> <span class="cm">/*QModelIndex testIndex = */</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="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span>
-<a name="line-847"></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>
-<a name="line-848"></a> <span class="p">}</span>
-<a name="line-849"></a>
-<a name="line-850"></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-851"></a> <span class="n">endMoveRows</span><span class="p">();</span>
-<a name="line-852"></a>
-<a name="line-853"></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-854"></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-855"></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-856"></a>
-<a name="line-857"></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-858"></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-859"></a> <span class="p">{</span>
-<a name="line-860"></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-861"></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-862"></a> <span class="p">}</span>
+<a name="line-827"></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-828"></a> <span class="p">{</span>
+<a name="line-829"></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-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">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-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">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-837"></a><span class="p">}</span>
+<a name="line-838"></a>
+<a name="line-839"></a><span class="cm">/**</span>
+<a name="line-840"></a><span class="cm"> * Re-adds all deleted tags based on Undo/Redo widget.</span>
+<a name="line-841"></a><span class="cm"> */</span>
+<a name="line-842"></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-843"></a><span class="p">{</span>
+<a name="line-844"></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-845"></a> <span class="p">{</span>
+<a name="line-846"></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-847"></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-848"></a>
+<a name="line-849"></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-850"></a> <span class="p">{</span>
+<a name="line-851"></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-852"></a> <span class="p">}</span>
+<a name="line-853"></a> <span class="p">}</span>
+<a name="line-854"></a><span class="p">}</span>
+<a name="line-855"></a>
+<a name="line-856"></a><span class="cm">/**</span>
+<a name="line-857"></a><span class="cm"> * Deletes and re-adds all new added tags.</span>
+<a name="line-858"></a><span class="cm"> */</span>
+<a name="line-859"></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-860"></a><span class="p">{</span>
+<a name="line-861"></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-862"></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-863"></a>
-<a name="line-864"></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-865"></a> <span class="n">endMoveRows</span><span class="p">();</span>
-<a name="line-866"></a> <span class="p">}</span>
-<a name="line-867"></a>
-<a name="line-868"></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-869"></a>
-<a name="line-870"></a> <span class="c1">//TODO: is it good here?</span>
-<a name="line-871"></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-872"></a> <span class="p">{</span>
-<a name="line-873"></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-874"></a> <span class="p">}</span>
-<a name="line-875"></a> <span class="k">else</span>
+<a name="line-864"></a> <span class="n">slotReaddNewTags</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="cm">/**</span>
+<a name="line-868"></a><span class="cm"> * Adds all address elements below the selected tag. The address ellements are order by area size.</span>
+<a name="line-869"></a><span class="cm"> * For example: country &gt; state &gt; state district &gt; city ...</span>
+<a name="line-870"></a><span class="cm"> */</span>
+<a name="line-871"></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-872"></a><span class="p">{</span>
+<a name="line-873"></a> <span class="n">QModelIndex</span> <span class="n">baseIndex</span><span class="p">;</span>
+<a name="line-874"></a>
+<a name="line-875"></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-876"></a> <span class="p">{</span>
-<a name="line-877"></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-877"></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-878"></a> <span class="p">}</span>
-<a name="line-879"></a>
-<a name="line-880"></a> <span class="n">endRemoveRows</span><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="cm">/**</span>
-<a name="line-884"></a><span class="cm"> * Deletes all spacers or all new tags below @currentBranch.</span>
-<a name="line-885"></a><span class="cm"> * @param currentBranch The tree branch from where the scan starts.</span>
-<a name="line-886"></a><span class="cm"> * @param currentRow The row of current branch.</span>
-<a name="line-887"></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-888"></a><span class="cm"> */</span>
-<a name="line-889"></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-890"></a><span class="p">{</span>
-<a name="line-891"></a> <span class="cm">/*QModelIndex currentIndex = */</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-892"></a>
-<a name="line-893"></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-894"></a> <span class="p">{</span>
-<a name="line-895"></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-896"></a>
-<a name="line-897"></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-898"></a> <span class="p">{</span>
-<a name="line-899"></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-900"></a> <span class="n">deleteTag</span><span class="p">(</span><span class="n">spacerIndex</span><span class="p">);</span>
-<a name="line-901"></a> <span class="n">i</span><span class="o">--</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="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-906"></a> <span class="p">{</span>
-<a name="line-907"></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-908"></a>
-<a name="line-909"></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-910"></a> <span class="p">{</span>
-<a name="line-911"></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-912"></a> <span class="n">deleteTag</span><span class="p">(</span><span class="n">newTagIndex</span><span class="p">);</span>
-<a name="line-913"></a> <span class="n">i</span><span class="o">--</span><span class="p">;</span>
-<a name="line-914"></a> <span class="p">}</span>
-<a name="line-915"></a> <span class="p">}</span>
+<a name="line-879"></a> <span class="k">else</span>
+<a name="line-880"></a> <span class="p">{</span>
+<a name="line-881"></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-882"></a> <span class="p">}</span>
+<a name="line-883"></a>
+<a name="line-884"></a> <span class="n">QStringList</span> <span class="n">spacerList</span><span class="p">;</span>
+<a name="line-885"></a>
+<a name="line-886"></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-887"></a> <span class="p">{</span>
+<a name="line-888"></a> <span class="c1">/// @todo Why are these wrapped in QString?</span>
+<a name="line-889"></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-890"></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-891"></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-892"></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-893"></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-894"></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-895"></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-896"></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-897"></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-898"></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-899"></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-900"></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-901"></a> <span class="p">}</span>
+<a name="line-902"></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-903"></a> <span class="p">{</span>
+<a name="line-904"></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-905"></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-906"></a> <span class="p">}</span>
+<a name="line-907"></a> <span class="k">else</span>
+<a name="line-908"></a> <span class="p">{</span>
+<a name="line-909"></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-910"></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-911"></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-912"></a> <span class="p">}</span>
+<a name="line-913"></a>
+<a name="line-914"></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-915"></a><span class="p">}</span>
<a name="line-916"></a>
-<a name="line-917"></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-918"></a> <span class="p">{</span>
-<a name="line-919"></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-920"></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-921"></a> <span class="n">whatShouldRemove</span><span class="p">);</span>
-<a name="line-922"></a> <span class="p">}</span>
-<a name="line-923"></a><span class="p">}</span>
-<a name="line-924"></a>
-<a name="line-925"></a><span class="cm">/**</span>
-<a name="line-926"></a><span class="cm"> * Deletes all spacers or all new tags.</span>
-<a name="line-927"></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-928"></a><span class="cm"> * @param whatShouldRemove The tag type that should be removed. The options are: spacers or new tags.</span>
-<a name="line-929"></a><span class="cm"> */</span>
-<a name="line-930"></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-931"></a><span class="p">{</span>
-<a name="line-932"></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-933"></a> <span class="p">{</span>
-<a name="line-934"></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-935"></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-936"></a> <span class="p">}</span>
-<a name="line-937"></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-938"></a> <span class="p">{</span>
-<a name="line-939"></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-940"></a> <span class="p">}</span>
-<a name="line-941"></a><span class="p">}</span>
-<a name="line-942"></a>
-<a name="line-943"></a><span class="c1">//tagAddressElements contains address tag: Places,Spain,Barcelona</span>
-<a name="line-944"></a><span class="c1">//readdTag climbs the tree and checks on each level if tagAddressElements[level] is found.</span>
-<a name="line-945"></a><span class="c1">//if the tag is found, it climbs up the next level</span>
-<a name="line-946"></a><span class="c1">//else, it recreates the new tag and climbs up that tree.</span>
-<a name="line-947"></a><span class="cm">/**</span>
-<a name="line-948"></a><span class="cm"> * Readds new tags to tag tree.</span>
-<a name="line-949"></a><span class="cm"> * @param currentBranch The branch from where the scan starts.</span>
-<a name="line-950"></a><span class="cm"> * @param currentRow The row of the currentBranch.</span>
-<a name="line-951"></a><span class="cm"> * @param tagAddressElements A list containing address elements. Example: {Country}, {City}...</span>
-<a name="line-952"></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-953"></a><span class="cm"> */</span>
-<a name="line-954"></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-955"></a><span class="p">{</span>
-<a name="line-956"></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-957"></a> <span class="kt">int</span> <span class="n">foundIndex</span><span class="p">;</span>
-<a name="line-958"></a>
-<a name="line-959"></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-960"></a> <span class="p">{</span>
-<a name="line-961"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-962"></a> <span class="p">}</span>
-<a name="line-963"></a>
-<a name="line-964"></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-965"></a> <span class="p">{</span>
-<a name="line-966"></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-967"></a> <span class="p">{</span>
-<a name="line-968"></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-969"></a> <span class="p">{</span>
-<a name="line-970"></a> <span class="n">found</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-971"></a> <span class="n">foundIndex</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
-<a name="line-972"></a> <span class="k">break</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>
-<a name="line-976"></a> <span class="k">if</span> <span class="p">(</span><span class="n">found</span><span class="p">)</span>
-<a name="line-977"></a> <span class="p">{</span>
-<a name="line-978"></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-979"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-980"></a> <span class="p">}</span>
-<a name="line-981"></a> <span class="k">else</span>
-<a name="line-982"></a> <span class="p">{</span>
-<a name="line-983"></a> <span class="c1">//recreates the spacer</span>
-<a name="line-984"></a> <span class="n">QModelIndex</span> <span class="n">currentIndex</span><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">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-987"></a> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-988"></a> <span class="k">else</span>
-<a name="line-989"></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-990"></a>
-<a name="line-991"></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-917"></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-918"></a><span class="p">{</span>
+<a name="line-919"></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-920"></a> <span class="p">{</span>
+<a name="line-921"></a> <span class="c1">// the undo command object is not available, therefore</span>
+<a name="line-922"></a> <span class="c1">// RG has probably been finished already</span>
+<a name="line-923"></a> <span class="k">return</span><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="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-927"></a> <span class="p">{</span>
+<a name="line-928"></a> <span class="c1">// Before we abort, ask the user whether he wants to discard</span>
+<a name="line-929"></a> <span class="c1">// the information obtained so far.</span>
+<a name="line-930"></a>
+<a name="line-931"></a> <span class="c1">// ATTENTION: While we ask the question, the RG backend continues running</span>
+<a name="line-932"></a> <span class="c1">// and sends information about new images to this widget.</span>
+<a name="line-933"></a> <span class="c1">// This means that RG might finish while we ask the question!!!</span>
+<a name="line-934"></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-935"></a>
+<a name="line-936"></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-937"></a> <span class="s">&quot;Would you like to keep the tags which were &quot;</span>
+<a name="line-938"></a> <span class="s">&quot;already obtained?&quot;</span><span class="p">,</span>
+<a name="line-939"></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-940"></a>
+<a name="line-941"></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-942"></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-943"></a> <span class="n">question</span><span class="p">);</span>
+<a name="line-944"></a>
+<a name="line-945"></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-946"></a>
+<a name="line-947"></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-948"></a> <span class="p">{</span>
+<a name="line-949"></a> <span class="c1">// continue</span>
+<a name="line-950"></a>
+<a name="line-951"></a> <span class="c1">// did RG finish while we asked the question?</span>
+<a name="line-952"></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-953"></a> <span class="p">{</span>
+<a name="line-954"></a> <span class="c1">// the undo data was delayed, now send it</span>
+<a name="line-955"></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-956"></a> <span class="p">{</span>
+<a name="line-957"></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-958"></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-959"></a> <span class="p">}</span>
+<a name="line-960"></a>
+<a name="line-961"></a> <span class="c1">// unlock the UI</span>
+<a name="line-962"></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-963"></a> <span class="p">}</span>
+<a name="line-964"></a>
+<a name="line-965"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-966"></a> <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="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-969"></a> <span class="p">{</span>
+<a name="line-970"></a> <span class="c1">// discard the tags</span>
+<a name="line-971"></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-972"></a> <span class="p">}</span>
+<a name="line-973"></a>
+<a name="line-974"></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-975"></a> <span class="p">{</span>
+<a name="line-976"></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-977"></a> <span class="p">{</span>
+<a name="line-978"></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-979"></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-980"></a> <span class="p">}</span>
+<a name="line-981"></a> <span class="p">}</span>
+<a name="line-982"></a> <span class="p">}</span>
+<a name="line-983"></a>
+<a name="line-984"></a> <span class="c1">// clean up the RG request:</span>
+<a name="line-985"></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-986"></a>
+<a name="line-987"></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-988"></a> <span class="p">{</span>
+<a name="line-989"></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-990"></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-991"></a> <span class="p">}</span>
<a name="line-992"></a>
-<a name="line-993"></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-994"></a> <span class="p">{</span>
-<a name="line-995"></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-996"></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-997"></a> <span class="n">tagAddressElements</span><span class="p">,</span>
-<a name="line-998"></a> <span class="n">currentAddressElementIndex</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="p">}</span>
-<a name="line-1002"></a>
-<a name="line-1003"></a> <span class="p">}</span>
-<a name="line-1004"></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-1005"></a> <span class="p">{</span>
-<a name="line-1006"></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-1007"></a> <span class="p">{</span>
-<a name="line-1008"></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-1009"></a> <span class="p">{</span>
-<a name="line-1010"></a> <span class="n">found</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-1011"></a> <span class="n">foundIndex</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
-<a name="line-1012"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-1013"></a> <span class="p">}</span>
-<a name="line-1014"></a> <span class="p">}</span>
-<a name="line-1015"></a>
-<a name="line-1016"></a> <span class="k">if</span> <span class="p">(</span><span class="n">found</span><span class="p">)</span>
-<a name="line-1017"></a> <span class="p">{</span>
-<a name="line-1018"></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-1019"></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-1020"></a> <span class="n">tagAddressElements</span><span class="p">,</span>
-<a name="line-1021"></a> <span class="n">currentAddressElementIndex</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-1022"></a> <span class="k">return</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="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">found</span><span class="p">)</span>
-<a name="line-1026"></a> <span class="p">{</span>
-<a name="line-1027"></a> <span class="n">QModelIndex</span> <span class="n">currentIndex</span><span class="p">;</span>
-<a name="line-1028"></a>
-<a name="line-1029"></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-1030"></a> <span class="p">{</span>
-<a name="line-1031"></a> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-1032"></a> <span class="p">}</span>
-<a name="line-1033"></a> <span class="k">else</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">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-1036"></a> <span class="p">}</span>
-<a name="line-1037"></a>
-<a name="line-1038"></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-1039"></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-1040"></a>
-<a name="line-1041"></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-1042"></a> <span class="p">{</span>
-<a name="line-1043"></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-1044"></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-1045"></a> <span class="n">tagAddressElements</span><span class="p">,</span>
-<a name="line-1046"></a> <span class="n">currentAddressElementIndex</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
-<a name="line-1047"></a> <span class="p">}</span>
-<a name="line-1048"></a> <span class="p">}</span>
-<a name="line-1049"></a> <span class="p">}</span>
-<a name="line-1050"></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-1051"></a> <span class="p">{</span>
-<a name="line-1052"></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-1053"></a>
-<a name="line-1054"></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-1055"></a> <span class="p">{</span>
-<a name="line-1056"></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-1057"></a> <span class="p">{</span>
-<a name="line-1058"></a> <span class="n">found</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-1059"></a> <span class="n">foundIndex</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
-<a name="line-1060"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-1061"></a> <span class="p">}</span>
-<a name="line-1062"></a> <span class="p">}</span>
-<a name="line-1063"></a>
-<a name="line-1064"></a> <span class="k">if</span> <span class="p">(</span><span class="n">found</span><span class="p">)</span>
-<a name="line-1065"></a> <span class="p">{</span>
-<a name="line-1066"></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-1067"></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-1068"></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-1069"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-1070"></a> <span class="p">}</span>
-<a name="line-1071"></a> <span class="k">else</span>
-<a name="line-1072"></a> <span class="p">{</span>
-<a name="line-1073"></a> <span class="n">QModelIndex</span> <span class="n">currentIndex</span><span class="p">;</span>
-<a name="line-1074"></a>
-<a name="line-1075"></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-1076"></a> <span class="n">currentIndex</span> <span class="o">=</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-1077"></a> <span class="k">else</span>
-<a name="line-1078"></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-1079"></a>
-<a name="line-1080"></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-1081"></a>
-<a name="line-1082"></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-1083"></a> <span class="p">{</span>
-<a name="line-1084"></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-1085"></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-1086"></a> <span class="n">tagAddressElements</span><span class="p">,</span>
-<a name="line-1087"></a> <span class="n">currentAddressElementIndex</span><span class="o">+</span><span class="mi">1</span><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> <span class="p">}</span>
-<a name="line-1091"></a><span class="p">}</span>
-<a name="line-1092"></a>
-<a name="line-1093"></a><span class="cm">/**</span>
-<a name="line-1094"></a><span class="cm"> * Takes each tag contained in tagAddressList and adds it to the tag tree.</span>
-<a name="line-1095"></a><span class="cm"> * @param tagAddressList A list containing new tags.</span>
-<a name="line-1096"></a><span class="cm"> */</span>
-<a name="line-1097"></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-1098"></a><span class="p">{</span>
-<a name="line-1099"></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-1100"></a> <span class="p">{</span>
-<a name="line-1101"></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-1102"></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-1103"></a> <span class="p">}</span>
-<a name="line-1104"></a><span class="p">}</span>
-<a name="line-1105"></a>
-<a name="line-1106"></a><span class="cm">/**</span>
-<a name="line-1107"></a><span class="cm"> * Gets the address of a spacer. Address means the path from rootTag to currentBranch</span>
-<a name="line-1108"></a><span class="cm"> * @param currentBranch The branch where the scan stops.</span>
-<a name="line-1109"></a><span class="cm"> * @return The tag address of currentBranch</span>
-<a name="line-1110"></a><span class="cm"> */</span>
-<a name="line-1111"></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-1112"></a><span class="p">{</span>
-<a name="line-1113"></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-1114"></a>
-<a name="line-1115"></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-1116"></a> <span class="p">{</span>
-<a name="line-1117"></a> <span class="n">TagData</span> <span class="n">currentTag</span><span class="p">;</span>
-<a name="line-1118"></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-1119"></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-1120"></a>
-<a name="line-1121"></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-1122"></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-1123"></a> <span class="p">}</span>
-<a name="line-1124"></a>
-<a name="line-1125"></a> <span class="k">return</span> <span class="n">spacerAddress</span><span class="p">;</span>
-<a name="line-1126"></a><span class="p">}</span>
-<a name="line-1127"></a>
-<a name="line-1128"></a><span class="cm">/**</span>
-<a name="line-1129"></a><span class="cm"> * Gets the spacers addresses below currentBranch. Address means the path from rootTag to currentBranch.</span>
-<a name="line-1130"></a><span class="cm"> * @param currentBranch The branch from where the search starts.</span>
-<a name="line-1131"></a><span class="cm"> */</span>
-<a name="line-1132"></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-1133"></a><span class="p">{</span>
-<a name="line-1134"></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-1135"></a> <span class="p">{</span>
-<a name="line-1136"></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-1137"></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-1138"></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-1139"></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-1140"></a> <span class="p">}</span>
-<a name="line-1141"></a>
-<a name="line-1142"></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-1143"></a> <span class="p">{</span>
-<a name="line-1144"></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-1145"></a> <span class="p">}</span>
-<a name="line-1146"></a>
-<a name="line-1147"></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-1148"></a> <span class="p">{</span>
-<a name="line-1149"></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-1150"></a> <span class="p">}</span>
-<a name="line-1151"></a><span class="p">}</span>
-<a name="line-1152"></a>
-<a name="line-1153"></a><span class="cm">/**</span>
-<a name="line-1154"></a><span class="cm"> * Gets all spacers.</span>
-<a name="line-1155"></a><span class="cm"> * @return The spacer list.</span>
-<a name="line-1156"></a><span class="cm"> */</span>
-<a name="line-1157"></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-1158"></a><span class="p">{</span>
-<a name="line-1159"></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-1160"></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-1161"></a>
-<a name="line-1162"></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-1163"></a><span class="p">}</span>
-<a name="line-1164"></a>
-<a name="line-1165"></a><span class="cm">/**</span>
-<a name="line-1166"></a><span class="cm"> * Add tags from host application to the tag tree.</span>
-<a name="line-1167"></a><span class="cm"> * @param parentBranch The branch that will be parent for the old tag.</span>
-<a name="line-1168"></a><span class="cm"> * @param currentRow The row where this external tag will be added.</span>
-<a name="line-1169"></a><span class="cm"> */</span>
-<a name="line-1170"></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-1171"></a><span class="p">{</span>
-<a name="line-1172"></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-1173"></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-1174"></a>
-<a name="line-1175"></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-1176"></a> <span class="p">{</span>
-<a name="line-1177"></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-1178"></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-1179"></a>
-<a name="line-1180"></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-1181"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-1182"></a>
-<a name="line-1183"></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-1184"></a> <span class="p">}</span>
-<a name="line-1185"></a><span class="p">}</span>
-<a name="line-1186"></a>
-<a name="line-1187"></a><span class="cm">/**</span>
-<a name="line-1188"></a><span class="cm"> * Add all external tags to the tag tree.</span>
-<a name="line-1189"></a><span class="cm"> */</span>
-<a name="line-1190"></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-1191"></a><span class="p">{</span>
-<a name="line-1192"></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-1193"></a><span class="p">}</span>
-<a name="line-1194"></a>
-<a name="line-1195"></a><span class="cm">/**</span>
-<a name="line-1196"></a><span class="cm"> * Adds all spacers found in spacerList to the tag tree.</span>
-<a name="line-1197"></a><span class="cm"> */</span>
-<a name="line-1198"></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-1199"></a><span class="p">{</span>
-<a name="line-1200"></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-1201"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-1202"></a>
-<a name="line-1203"></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-1204"></a>
-<a name="line-1205"></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-1206"></a> <span class="p">{</span>
-<a name="line-1207"></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-1208"></a> <span class="p">{</span>
-<a name="line-1209"></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-1210"></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-1211"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-1212"></a> <span class="p">}</span>
-<a name="line-1213"></a> <span class="p">}</span>
-<a name="line-1214"></a>
-<a name="line-1215"></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-1216"></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-1217"></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-1218"></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-1219"></a><span class="p">}</span>
-<a name="line-1220"></a>
-<a name="line-1221"></a><span class="cm">/**</span>
-<a name="line-1222"></a><span class="cm"> * Gets the type of a tag found at index.</span>
-<a name="line-1223"></a><span class="cm"> * @param index The index of the tag.</span>
-<a name="line-1224"></a><span class="cm"> * @return The type of the tag found at index.</span>
-<a name="line-1225"></a><span class="cm"> */</span>
-<a name="line-1226"></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-1227"></a><span class="p">{</span>
-<a name="line-1228"></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><span class="c1">// index.isValid() ? static_cast&lt;TreeBranch*&gt;(index.internalPointer()) : d-&gt;rootTag;</span>
-<a name="line-1229"></a>
-<a name="line-1230"></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-1231"></a><span class="p">}</span>
-<a name="line-1232"></a>
-<a name="line-1233"></a><span class="p">}</span> <span class="c1">// namespace Digikam</span>
+<a name="line-993"></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-994"></a><span class="p">}</span>
+<a name="line-995"></a>
+<a name="line-996"></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/56.html b/static/reports/cppcheck/master/56.html
index fe3e664e9..8c8bd09ff 100644
--- a/static/reports/cppcheck/master/56.html
+++ b/static/reports/cppcheck/master/56.html
@@ -1,2233 +1,2233 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/utilities/geolocation/mapsearches/gpsmarkertiler.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../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='56.html#line-309'> shadowVar 309</a><a href='56.html#line-313'> shadowVar 313</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</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> <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-140"></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-141"></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-142"></a><span class="p">{</span>
<a name="line-143"></a> <span class="n">resetRootTile</span><span class="p">();</span>
<a name="line-144"></a>
<a name="line-145"></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-146"></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-147"></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-148"></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-149"></a>
<a name="line-150"></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-151"></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-152"></a>
<a name="line-153"></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-154"></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-155"></a>
<a name="line-156"></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-157"></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-158"></a>
<a name="line-159"></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-160"></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-161"></a><span class="p">}</span>
<a name="line-162"></a>
<a name="line-163"></a><span class="cm">/**</span>
<a name="line-164"></a><span class="cm"> * @brief Destructor</span>
<a name="line-165"></a><span class="cm"> */</span>
<a name="line-166"></a><span class="n">GPSMarkerTiler</span><span class="o">::~</span><span class="n">GPSMarkerTiler</span><span class="p">()</span>
<a name="line-167"></a><span class="p">{</span>
<a name="line-168"></a> <span class="c1">// WARNING: we have to call clear! By the time AbstractMarkerTiler calls clear,</span>
<a name="line-169"></a> <span class="c1">// this object does not exist any more, and thus the tiles are not correctly destroyed!</span>
<a name="line-170"></a> <span class="n">clear</span><span class="p">();</span>
<a name="line-171"></a>
<a name="line-172"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
<a name="line-173"></a><span class="p">}</span>
<a name="line-174"></a>
<a name="line-175"></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-176"></a><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="cm">/**</span>
<a name="line-180"></a><span class="cm"> * @brief Requests all images inside a given rectangle from the database.</span>
<a name="line-181"></a><span class="cm"> *</span>
<a name="line-182"></a><span class="cm"> * This function calls the database for the images found inside a rectangle</span>
<a name="line-183"></a><span class="cm"> * defined by upperLeft and lowerRight points. The images are returned from</span>
<a name="line-184"></a><span class="cm"> * the database in batches.</span>
<a name="line-185"></a><span class="cm"> *</span>
<a name="line-186"></a><span class="cm"> * @param upperLeft The North-West point.</span>
<a name="line-187"></a><span class="cm"> * @param lowerRight The South-East point.</span>
<a name="line-188"></a><span class="cm"> * @param level The requested tiling level.</span>
<a name="line-189"></a><span class="cm"> */</span>
<a name="line-190"></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-191"></a><span class="p">{</span>
<a name="line-192"></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-193"></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-194"></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-195"></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-196"></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-197"></a>
<a name="line-198"></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-199"></a> <span class="p">{</span>
<a name="line-200"></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-201"></a> <span class="p">{</span>
<a name="line-202"></a> <span class="k">continue</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="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-206"></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-207"></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-208"></a>
<a name="line-209"></a> <span class="c1">//do nothing if this rectangle was already requested</span>
<a name="line-210"></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-211"></a> <span class="p">{</span>
<a name="line-212"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-213"></a> <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">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-216"></a> <span class="p">{</span>
<a name="line-217"></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-218"></a> <span class="p">{</span>
<a name="line-219"></a> <span class="n">lng1</span> <span class="o">=</span> <span class="n">rectLng2</span><span class="p">;</span>
<a name="line-220"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-221"></a> <span class="p">}</span>
<a name="line-222"></a> <span class="p">}</span>
<a name="line-223"></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-224"></a> <span class="p">{</span>
<a name="line-225"></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-226"></a> <span class="p">{</span>
<a name="line-227"></a> <span class="n">lat2</span> <span class="o">=</span> <span class="n">rectLat1</span><span class="p">;</span>
<a name="line-228"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-229"></a> <span class="p">}</span>
<a name="line-230"></a> <span class="p">}</span>
<a name="line-231"></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-232"></a> <span class="p">{</span>
<a name="line-233"></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-234"></a> <span class="p">{</span>
<a name="line-235"></a> <span class="n">lng2</span> <span class="o">=</span> <span class="n">rectLng1</span><span class="p">;</span>
<a name="line-236"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-237"></a> <span class="p">}</span>
<a name="line-238"></a> <span class="p">}</span>
<a name="line-239"></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-240"></a> <span class="p">{</span>
<a name="line-241"></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-242"></a> <span class="p">{</span>
<a name="line-243"></a> <span class="n">lat1</span> <span class="o">=</span> <span class="n">rectLat2</span><span class="p">;</span>
<a name="line-244"></a> <span class="k">break</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> <span class="p">}</span>
<a name="line-248"></a>
<a name="line-249"></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-250"></a>
<a name="line-251"></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-252"></a>
<a name="line-253"></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-254"></a>
<a name="line-255"></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-256"></a>
<a name="line-257"></a> <span class="n">GPSDBJobInfo</span> <span class="n">jobInfo</span><span class="p">;</span>
<a name="line-258"></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-259"></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-260"></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-261"></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-262"></a>
<a name="line-263"></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-264"></a>
<a name="line-265"></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-266"></a>
<a name="line-267"></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-268"></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-269"></a>
<a name="line-270"></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-271"></a>
<a name="line-272"></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-273"></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-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">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-276"></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-277"></a><span class="p">}</span>
<a name="line-278"></a>
<a name="line-279"></a><span class="cm">/**</span>
<a name="line-280"></a><span class="cm"> * @brief Returns a pointer to a tile.</span>
<a name="line-281"></a><span class="cm"> * @param tileIndex The index of a tile.</span>
<a name="line-282"></a><span class="cm"> * @param stopIfEmpty Determines whether child tiles are also created for empty tiles.</span>
<a name="line-283"></a><span class="cm"> */</span>
<a name="line-284"></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-285"></a><span class="p">{</span>
<a name="line-286"></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-287"></a>
<a name="line-288"></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-289"></a>
<a name="line-290"></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-291"></a> <span class="p">{</span>
<a name="line-292"></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-293"></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-294"></a>
<a name="line-295"></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-296"></a> <span class="p">{</span>
<a name="line-297"></a> <span class="k">if</span> <span class="p">(</span><span class="n">stopIfEmpty</span><span class="p">)</span>
<a name="line-298"></a> <span class="p">{</span>
<a name="line-299"></a> <span class="k">return</span> <span class="k">nullptr</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="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-303"></a> <span class="p">{</span>
<a name="line-304"></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-305"></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-306"></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-307"></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-308"></a>
<a name="line-309"></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-310"></a>
<a name="line-311"></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-312"></a> <span class="p">{</span>
<a name="line-313"></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-314"></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-315"></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-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="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-320"></a> <span class="p">{</span>
<a name="line-321"></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-322"></a> <span class="p">}</span>
<a name="line-323"></a> <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>
<a name="line-327"></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-328"></a>
<a name="line-329"></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-330"></a> <span class="p">{</span>
<a name="line-331"></a> <span class="k">if</span> <span class="p">(</span><span class="n">stopIfEmpty</span><span class="p">)</span>
<a name="line-332"></a> <span class="p">{</span>
<a name="line-333"></a> <span class="c1">// there will be no markers in this tile, therefore stop</span>
<a name="line-334"></a> <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-335"></a> <span class="p">}</span>
<a name="line-336"></a>
<a name="line-337"></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-338"></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-339"></a> <span class="p">}</span>
<a name="line-340"></a>
<a name="line-341"></a> <span class="n">tile</span> <span class="o">=</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="k">return</span> <span class="n">tile</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="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-348"></a><span class="p">{</span>
<a name="line-349"></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-350"></a>
<a name="line-351"></a> <span class="k">if</span> <span class="p">(</span><span class="n">tile</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="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-354"></a> <span class="p">}</span>
<a name="line-355"></a>
<a name="line-356"></a> <span class="k">return</span> <span class="mi">0</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="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-360"></a><span class="p">{</span>
<a name="line-361"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">tileIndex</span><span class="p">)</span>
<a name="line-362"></a>
<a name="line-363"></a> <span class="k">return</span> <span class="mi">0</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="cm">/**</span>
<a name="line-367"></a><span class="cm"> @brief This function finds the best representative marker from a tile of markers.</span>
<a name="line-368"></a><span class="cm"> * @param tileIndex Index of the tile from which the best marker should be found.</span>
<a name="line-369"></a><span class="cm"> * @param sortKey Sets the criteria for selecting the representative thumbnail, a combination of the SortOptions bits.</span>
<a name="line-370"></a><span class="cm"> * @return Returns the internally used index of the marker.</span>
<a name="line-371"></a><span class="cm"> */</span>
<a name="line-372"></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-373"></a><span class="p">{</span>
<a name="line-374"></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-375"></a>
<a name="line-376"></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-377"></a> <span class="p">{</span>
<a name="line-378"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="p">();</span>
<a name="line-379"></a> <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">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-382"></a> <span class="p">{</span>
<a name="line-383"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="p">();</span>
<a name="line-384"></a> <span class="p">}</span>
<a name="line-385"></a>
<a name="line-386"></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-387"></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-388"></a>
<a name="line-389"></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-390"></a> <span class="p">{</span>
<a name="line-391"></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-392"></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-393"></a>
<a name="line-394"></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> <span class="n">bestMarkerGroupState</span><span class="p">,</span> <span class="n">currentMarkerInfo</span><span class="p">,</span> <span class="n">currentMarkerGroupState</span><span class="p">,</span> <span class="n">getGlobalGroupState</span><span class="p">(),</span> <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-395"></a> <span class="p">{</span>
<a name="line-396"></a> <span class="n">bestMarkerInfo</span> <span class="o">=</span> <span class="n">currentMarkerInfo</span><span class="p">;</span>
<a name="line-397"></a> <span class="n">bestMarkerGroupState</span> <span class="o">=</span> <span class="n">currentMarkerGroupState</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>
<a name="line-401"></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-402"></a>
<a name="line-403"></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-404"></a><span class="p">}</span>
<a name="line-405"></a>
<a name="line-406"></a><span class="cm">/**</span>
<a name="line-407"></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-408"></a><span class="cm"> * @param indices A list containing markers, obtained by getTileRepresentativeMarker.</span>
<a name="line-409"></a><span class="cm"> * @param sortKey Sets the criteria for selecting the representative thumbnail, a combination of the SortOptions bits.</span>
<a name="line-410"></a><span class="cm"> * @return Returns the internally used index of the marker.</span>
<a name="line-411"></a><span class="cm"> */</span>
<a name="line-412"></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-413"></a><span class="p">{</span>
<a name="line-414"></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-415"></a> <span class="p">{</span>
<a name="line-416"></a> <span class="k">return</span> <span class="n">QVariant</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">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-420"></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-421"></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-422"></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-423"></a>
<a name="line-424"></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-425"></a> <span class="p">{</span>
<a name="line-426"></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-427"></a>
<a name="line-428"></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-429"></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-430"></a>
<a name="line-431"></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> <span class="n">bestMarkerGroupState</span><span class="p">,</span> <span class="n">currentMarkerInfo</span><span class="p">,</span> <span class="n">currentMarkerGroupState</span><span class="p">,</span> <span class="n">getGlobalGroupState</span><span class="p">(),</span> <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-432"></a> <span class="p">{</span>
<a name="line-433"></a> <span class="n">bestMarkerInfo</span> <span class="o">=</span> <span class="n">currentMarkerInfo</span><span class="p">;</span>
<a name="line-434"></a> <span class="n">bestMarkerGroupState</span> <span class="o">=</span> <span class="n">currentMarkerGroupState</span><span class="p">;</span>
<a name="line-435"></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-436"></a> <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="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-440"></a>
<a name="line-441"></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-442"></a><span class="p">}</span>
<a name="line-443"></a>
<a name="line-444"></a><span class="cm">/**</span>
<a name="line-445"></a><span class="cm"> * @brief This function retrieves the thumbnail for an index.</span>
<a name="line-446"></a><span class="cm"> * @param index The marker&#39;s index.</span>
<a name="line-447"></a><span class="cm"> * @param size The size of the thumbnail.</span>
<a name="line-448"></a><span class="cm"> * @return If the thumbnail has been loaded in the ThumbnailLoadThread instance, it is returned. If not, a QPixmap is returned and ThumbnailLoadThread&#39;s signal named signalThumbnailLoaded is emitted when the thumbnail becomes available.</span>
<a name="line-449"></a><span class="cm"> */</span>
<a name="line-450"></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-451"></a><span class="p">{</span>
<a name="line-452"></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-453"></a>
<a name="line-454"></a> <span class="n">QPixmap</span> <span class="n">thumbnail</span><span class="p">;</span>
<a name="line-455"></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-456"></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-457"></a>
<a name="line-458"></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-459"></a> <span class="p">{</span>
<a name="line-460"></a> <span class="c1">// digikam returns thumbnails with a border around them,</span>
<a name="line-461"></a> <span class="c1">// but geolocation interface expects them without a border</span>
<a name="line-462"></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-463"></a> <span class="p">}</span>
<a name="line-464"></a> <span class="k">else</span>
<a name="line-465"></a> <span class="p">{</span>
<a name="line-466"></a> <span class="k">return</span> <span class="n">QPixmap</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>
<a name="line-470"></a><span class="cm">/**</span>
<a name="line-471"></a><span class="cm"> * @brief This function compares two marker indices.</span>
<a name="line-472"></a><span class="cm"> */</span>
<a name="line-473"></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-474"></a><span class="p">{</span>
<a name="line-475"></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-476"></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-477"></a>
<a name="line-478"></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-479"></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-480"></a>
<a name="line-481"></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="o">&amp;&amp;</span> <span class="n">aIndicesList</span> <span class="o">==</span> <span class="n">bIndicesList</span><span class="p">)</span>
<a name="line-482"></a> <span class="p">{</span>
<a name="line-483"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
<a name="line-484"></a> <span class="p">}</span>
<a name="line-485"></a>
<a name="line-486"></a> <span class="k">return</span> <span class="nb">false</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">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-490"></a><span class="p">{</span>
<a name="line-491"></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-492"></a>
<a name="line-493"></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-494"></a> <span class="p">{</span>
<a name="line-495"></a> <span class="k">return</span> <span class="n">SelectedNone</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="c1">/// @todo Store this state in the tiles!</span>
<a name="line-499"></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-500"></a> <span class="n">GroupStateComputer</span> <span class="n">tileStateComputer</span><span class="p">;</span>
<a name="line-501"></a>
<a name="line-502"></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-503"></a> <span class="p">{</span>
<a name="line-504"></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-505"></a>
<a name="line-506"></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-507"></a> <span class="p">}</span>
<a name="line-508"></a>
<a name="line-509"></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-510"></a><span class="p">}</span>
<a name="line-511"></a>
<a name="line-512"></a><span class="cm">/**</span>
<a name="line-513"></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-514"></a><span class="cm"> */</span>
<a name="line-515"></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-516"></a><span class="p">{</span>
<a name="line-517"></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-518"></a> <span class="p">{</span>
<a name="line-519"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-520"></a> <span class="p">}</span>
<a name="line-521"></a>
<a name="line-522"></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-523"></a>
<a name="line-524"></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-525"></a> <span class="p">{</span>
<a name="line-526"></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-527"></a> <span class="p">{</span>
<a name="line-528"></a> <span class="c1">/// @todo Is this really safe?</span>
<a name="line-529"></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-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="o">!</span><span class="n">internalJob</span><span class="p">)</span>
<a name="line-535"></a> <span class="p">{</span>
<a name="line-536"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-537"></a> <span class="p">}</span>
<a name="line-538"></a>
<a name="line-539"></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-540"></a> <span class="p">{</span>
<a name="line-541"></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-542"></a> <span class="p">{</span>
<a name="line-543"></a> <span class="c1">// skip info without coordinates</span>
<a name="line-544"></a> <span class="k">continue</span><span class="p">;</span>
<a name="line-545"></a> <span class="p">}</span>
<a name="line-546"></a>
<a name="line-547"></a> <span class="n">GPSItemInfo</span> <span class="n">entry</span><span class="p">;</span>
<a name="line-548"></a>
<a name="line-549"></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-550"></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-551"></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-552"></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-553"></a>
<a name="line-554"></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-555"></a> <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="cm">/**</span>
<a name="line-559"></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-560"></a><span class="cm"> */</span>
<a name="line-561"></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-562"></a><span class="p">{</span>
<a name="line-563"></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-564"></a>
<a name="line-565"></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-566"></a> <span class="p">{</span>
<a name="line-567"></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-568"></a> <span class="p">{</span>
<a name="line-569"></a> <span class="n">foundIndex</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
<a name="line-570"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-571"></a> <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">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-575"></a> <span class="p">{</span>
<a name="line-576"></a> <span class="c1">// this should not happen, but ok...</span>
<a name="line-577"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-578"></a> <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="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-581"></a> <span class="p">{</span>
<a name="line-582"></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-583"></a>
<a name="line-584"></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-585"></a> <span class="o">&lt;&lt;</span> <span class="n">err</span><span class="p">;</span>
<a name="line-586"></a>
<a name="line-587"></a> <span class="c1">// Pop-up a message about the error.</span>
<a name="line-588"></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-589"></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-590"></a> <span class="p">}</span>
<a name="line-591"></a>
<a name="line-592"></a> <span class="c1">// get the results from the job:</span>
<a name="line-593"></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-594"></a> <span class="c1">/// @todo Currently, we ignore the wanted level and just add the images</span>
<a name="line-595"></a> <span class="c1">// const int wantedLevel = d-&gt;jobs.at(foundIndex).level;</span>
<a name="line-596"></a>
<a name="line-597"></a> <span class="c1">// remove the finished job</span>
<a name="line-598"></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-599"></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-600"></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-601"></a>
<a name="line-602"></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-603"></a> <span class="p">{</span>
<a name="line-604"></a> <span class="k">return</span><span class="p">;</span>
<a name="line-605"></a> <span class="p">}</span>
<a name="line-606"></a>
<a name="line-607"></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-608"></a> <span class="p">{</span>
<a name="line-609"></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-610"></a>
<a name="line-611"></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-612"></a> <span class="p">{</span>
<a name="line-613"></a> <span class="k">continue</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="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-617"></a>
<a name="line-618"></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-619"></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-620"></a> <span class="p">}</span>
<a name="line-621"></a>
<a name="line-622"></a> <span class="n">emit</span> <span class="n">signalTilesOrSelectionChanged</span><span class="p">();</span>
<a name="line-623"></a><span class="p">}</span>
<a name="line-624"></a>
<a name="line-625"></a><span class="cm">/**</span>
<a name="line-626"></a><span class="cm"> * @brief Because of a call to pixmapFromRepresentativeIndex, some thumbnails are not yet loaded at the time of requesting. 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-627"></a><span class="cm"> */</span>
<a name="line-628"></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-629"></a><span class="p">{</span>
<a name="line-630"></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-631"></a> <span class="c1">// QPair&lt;TileIndex, int&gt; indexForPixmap =</span>
<a name="line-632"></a> <span class="c1">// index.value&lt;QPair&lt;TileIndex, int&gt; &gt;();</span>
<a name="line-633"></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-634"></a><span class="p">}</span>
<a name="line-635"></a>
<a name="line-636"></a><span class="cm">/**</span>
<a name="line-637"></a><span class="cm"> * @brief Sets the map active/inactive</span>
<a name="line-638"></a><span class="cm"> * @param state New state of the map, true means active.</span>
<a name="line-639"></a><span class="cm"> */</span>
<a name="line-640"></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-641"></a><span class="p">{</span>
<a name="line-642"></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-643"></a><span class="p">}</span>
<a name="line-644"></a>
<a name="line-645"></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-646"></a><span class="p">{</span>
<a name="line-647"></a> <span class="k">return</span> <span class="k">new</span> <span class="n">MyTile</span><span class="p">();</span>
<a name="line-648"></a><span class="p">}</span>
<a name="line-649"></a>
<a name="line-650"></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-651"></a><span class="p">{</span>
<a name="line-652"></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-653"></a><span class="p">}</span>
<a name="line-654"></a>
<a name="line-655"></a><span class="cm">/**</span>
<a name="line-656"></a><span class="cm"> * @brief Receives notifications from the database when images were changed and updates the tiler</span>
<a name="line-657"></a><span class="cm"> */</span>
<a name="line-658"></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-659"></a><span class="p">{</span>
<a name="line-660"></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-661"></a> <span class="c1">// const DatabaseFields::ItemPositions imagePositionChanges = changes;</span>
<a name="line-662"></a>
<a name="line-663"></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-664"></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-665"></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-666"></a> <span class="p">{</span>
<a name="line-667"></a> <span class="k">return</span><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="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-671"></a> <span class="p">{</span>
<a name="line-672"></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-673"></a>
<a name="line-674"></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-675"></a> <span class="p">{</span>
<a name="line-676"></a> <span class="c1">// the image has no coordinates any more</span>
<a name="line-677"></a> <span class="c1">// remove it from the tiles and the image list</span>
<a name="line-678"></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-679"></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-680"></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-681"></a>
<a name="line-682"></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-683"></a>
<a name="line-684"></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-685"></a>
<a name="line-686"></a> <span class="k">continue</span><span class="p">;</span>
<a name="line-687"></a> <span class="p">}</span>
<a name="line-688"></a>
<a name="line-689"></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-690"></a>
<a name="line-691"></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-692"></a> <span class="p">{</span>
<a name="line-693"></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-694"></a> <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="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-697"></a> <span class="p">{</span>
<a name="line-698"></a> <span class="c1">// the image id is known, therefore the image has already been sorted into tiles.</span>
<a name="line-699"></a> <span class="c1">// We assume that the coordinates of the image have changed.</span>
<a name="line-700"></a>
<a name="line-701"></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-702"></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-703"></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-704"></a>
<a name="line-705"></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-706"></a>
<a name="line-707"></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-708"></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-709"></a>
<a name="line-710"></a> <span class="c1">// find out up to which level the tile indices are equal</span>
<a name="line-711"></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-712"></a>
<a name="line-713"></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-714"></a> <span class="p">{</span>
<a name="line-715"></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-716"></a> <span class="p">{</span>
<a name="line-717"></a> <span class="n">separatorLevel</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
<a name="line-718"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-719"></a> <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="n">separatorLevel</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<a name="line-723"></a> <span class="p">{</span>
<a name="line-724"></a> <span class="c1">// the tile index has not changed</span>
<a name="line-725"></a> <span class="k">continue</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="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-729"></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-730"></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-731"></a>
<a name="line-732"></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-733"></a> <span class="p">{</span>
<a name="line-734"></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-735"></a> <span class="p">{</span>
<a name="line-736"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-737"></a> <span class="p">}</span>
<a name="line-738"></a>
<a name="line-739"></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-740"></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-741"></a>
<a name="line-742"></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-743"></a> <span class="p">{</span>
<a name="line-744"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-745"></a> <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">level</span> <span class="o">&lt;</span> <span class="n">separatorLevel</span><span class="p">)</span>
<a name="line-748"></a> <span class="p">{</span>
<a name="line-749"></a> <span class="n">currentTileOld</span> <span class="o">=</span> <span class="n">childTileOld</span><span class="p">;</span>
<a name="line-750"></a> <span class="n">currentTileNew</span> <span class="o">=</span> <span class="n">currentTileOld</span><span class="p">;</span>
<a name="line-751"></a> <span class="p">}</span>
<a name="line-752"></a> <span class="k">else</span>
<a name="line-753"></a> <span class="p">{</span>
<a name="line-754"></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-755"></a>
<a name="line-756"></a> <span class="k">break</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">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-761"></a> <span class="p">}</span>
<a name="line-762"></a> <span class="k">else</span>
<a name="line-763"></a> <span class="p">{</span>
<a name="line-764"></a> <span class="c1">// the image is new, add it to the existing tiles</span>
<a name="line-765"></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-766"></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-767"></a>
<a name="line-768"></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-769"></a>
<a name="line-770"></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-771"></a> <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">emit</span> <span class="n">signalTilesOrSelectionChanged</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="cm">/**</span>
<a name="line-778"></a><span class="cm"> * @brief Receives notifications from the album model about new items</span>
<a name="line-779"></a><span class="cm"> */</span>
<a name="line-780"></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-781"></a><span class="p">{</span>
<a name="line-782"></a> <span class="c1">// We do not actually store the data from the model, we just want</span>
<a name="line-783"></a> <span class="c1">// to know that something was changed.</span>
<a name="line-784"></a> <span class="c1">/// @todo Also monitor removed, reset, etc. signals</span>
<a name="line-785"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">infoList</span><span class="p">);</span>
<a name="line-786"></a>
<a name="line-787"></a> <span class="n">emit</span> <span class="nf">signalTilesOrSelectionChanged</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="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-791"></a><span class="p">{</span>
<a name="line-792"></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-793"></a>
<a name="line-794"></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-795"></a> <span class="p">{</span>
<a name="line-796"></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-797"></a> <span class="p">}</span>
<a name="line-798"></a> <span class="k">else</span>
<a name="line-799"></a> <span class="p">{</span>
<a name="line-800"></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-801"></a> <span class="p">}</span>
<a name="line-802"></a>
<a name="line-803"></a> <span class="n">emit</span> <span class="n">signalTilesOrSelectionChanged</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="kt">void</span> <span class="n">GPSMarkerTiler</span><span class="o">::</span><span class="n">removeCurrentRegionSelection</span><span class="p">()</span>
<a name="line-807"></a><span class="p">{</span>
<a name="line-808"></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-809"></a>
<a name="line-810"></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-811"></a>
<a name="line-812"></a> <span class="n">emit</span> <span class="nf">signalTilesOrSelectionChanged</span><span class="p">();</span>
<a name="line-813"></a><span class="p">}</span>
<a name="line-814"></a>
<a name="line-815"></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-816"></a><span class="p">{</span>
<a name="line-817"></a> <span class="c1">/// @todo Also handle the representative index</span>
<a name="line-818"></a>
<a name="line-819"></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-820"></a>
<a name="line-821"></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-822"></a> <span class="p">{</span>
<a name="line-823"></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-824"></a> <span class="p">}</span>
<a name="line-825"></a>
<a name="line-826"></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-827"></a>
<a name="line-828"></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-829"></a> <span class="p">{</span>
<a name="line-830"></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-831"></a> <span class="p">}</span>
<a name="line-832"></a>
<a name="line-833"></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-834"></a> <span class="p">{</span>
<a name="line-835"></a> <span class="cm">/**</span>
<a name="line-836"></a><span class="cm"> * @todo This does not work properly, because not all images in a tile</span>
<a name="line-837"></a><span class="cm"> * may be selectable because some of them are outside of the region selection</span>
<a name="line-838"></a><span class="cm"> */</span>
<a name="line-839"></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-840"></a>
<a name="line-841"></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-842"></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-843"></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-844"></a>
<a name="line-845"></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-846"></a> <span class="p">{</span>
<a name="line-847"></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-848"></a>
<a name="line-849"></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-850"></a> <span class="p">{</span>
<a name="line-851"></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-852"></a> <span class="p">}</span>
<a name="line-853"></a> <span class="p">}</span>
<a name="line-854"></a>
<a name="line-855"></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-856"></a> <span class="p">{</span>
<a name="line-857"></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-858"></a>
<a name="line-859"></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-860"></a> <span class="p">{</span>
<a name="line-861"></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-862"></a> <span class="p">}</span>
<a name="line-863"></a> <span class="p">}</span>
<a name="line-864"></a> <span class="p">}</span>
<a name="line-865"></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-866"></a> <span class="p">{</span>
<a name="line-867"></a> <span class="n">setPositiveFilterIsActive</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
<a name="line-868"></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-869"></a> <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="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-873"></a><span class="p">{</span>
<a name="line-874"></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-875"></a>
<a name="line-876"></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-877"></a>
<a name="line-878"></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-879"></a> <span class="p">{</span>
<a name="line-880"></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-881"></a> <span class="p">}</span>
<a name="line-882"></a>
<a name="line-883"></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-884"></a><span class="p">}</span>
<a name="line-885"></a>
<a name="line-886"></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-887"></a><span class="p">{</span>
<a name="line-888"></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-889"></a><span class="p">}</span>
<a name="line-890"></a>
<a name="line-891"></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-892"></a><span class="p">{</span>
<a name="line-893"></a> <span class="n">GeoGroupState</span> <span class="n">imageState</span><span class="p">;</span>
<a name="line-894"></a>
<a name="line-895"></a> <span class="c1">// is the image inside the region selection?</span>
<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">mapGlobalGroupState</span> <span class="o">&amp;</span> <span class="n">RegionSelectedMask</span><span class="p">)</span>
<a name="line-897"></a> <span class="p">{</span>
<a name="line-898"></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-899"></a>
<a name="line-900"></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-901"></a> <span class="p">{</span>
<a name="line-902"></a> <span class="n">imageState</span> <span class="o">|=</span> <span class="n">RegionSelectedAll</span><span class="p">;</span>
<a name="line-903"></a> <span class="p">}</span>
<a name="line-904"></a> <span class="k">else</span>
<a name="line-905"></a> <span class="p">{</span>
<a name="line-906"></a> <span class="c1">// not inside region selection, therefore</span>
<a name="line-907"></a> <span class="c1">// no other flags can apply</span>
<a name="line-908"></a> <span class="k">return</span> <span class="n">RegionSelectedNone</span><span class="p">;</span>
<a name="line-909"></a> <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="c1">// is the image positively filtered?</span>
<a name="line-913"></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-914"></a> <span class="p">{</span>
<a name="line-915"></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-916"></a>
<a name="line-917"></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-918"></a> <span class="p">{</span>
<a name="line-919"></a> <span class="n">imageState</span> <span class="o">|=</span> <span class="n">FilteredPositiveAll</span><span class="p">;</span>
<a name="line-920"></a>
<a name="line-921"></a> <span class="c1">// is the image selected?</span>
<a name="line-922"></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-923"></a> <span class="p">{</span>
<a name="line-924"></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-925"></a> <span class="p">{</span>
<a name="line-926"></a> <span class="n">imageState</span> <span class="o">|=</span> <span class="n">SelectedAll</span><span class="p">;</span>
<a name="line-927"></a> <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> <span class="k">else</span>
<a name="line-931"></a> <span class="p">{</span>
<a name="line-932"></a> <span class="c1">// the image is not positively filtered, therefore it can</span>
<a name="line-933"></a> <span class="c1">// not be selected</span>
<a name="line-934"></a> <span class="k">return</span> <span class="n">imageState</span><span class="p">;</span>
<a name="line-935"></a> <span class="p">}</span>
<a name="line-936"></a> <span class="p">}</span>
<a name="line-937"></a> <span class="k">else</span>
<a name="line-938"></a> <span class="p">{</span>
<a name="line-939"></a> <span class="c1">// is the image selected?</span>
<a name="line-940"></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-941"></a> <span class="p">{</span>
<a name="line-942"></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-943"></a>
<a name="line-944"></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-945"></a> <span class="p">{</span>
<a name="line-946"></a> <span class="n">imageState</span> <span class="o">|=</span> <span class="n">SelectedAll</span><span class="p">;</span>
<a name="line-947"></a> <span class="p">}</span>
<a name="line-948"></a> <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">return</span> <span class="n">imageState</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="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-955"></a><span class="p">{</span>
<a name="line-956"></a> <span class="k">if</span> <span class="p">(</span><span class="n">state</span><span class="p">)</span>
<a name="line-957"></a> <span class="p">{</span>
<a name="line-958"></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-959"></a> <span class="p">}</span>
<a name="line-960"></a> <span class="k">else</span>
<a name="line-961"></a> <span class="p">{</span>
<a name="line-962"></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-963"></a> <span class="p">}</span>
<a name="line-964"></a>
<a name="line-965"></a> <span class="c1">/// @todo Somehow, a delay is necessary before emitting this signal - probably the order in which the filtering is propagated to other parts of digikam is wrong or just takes too long</span>
<a name="line-966"></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-967"></a> <span class="c1">// emit signalTilesOrSelectionChanged();</span>
<a name="line-968"></a><span class="p">}</span>
<a name="line-969"></a>
<a name="line-970"></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-971"></a><span class="p">{</span>
<a name="line-972"></a> <span class="c1">/// @todo Buffer this information, update the tiles, etc.</span>
<a name="line-973"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">selected</span><span class="p">);</span>
<a name="line-974"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">deselected</span><span class="p">);</span>
<a name="line-975"></a>
<a name="line-976"></a> <span class="n">emit</span> <span class="nf">signalTilesOrSelectionChanged</span><span class="p">();</span>
<a name="line-977"></a><span class="p">}</span>
<a name="line-978"></a>
<a name="line-979"></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-980"></a><span class="p">{</span>
<a name="line-981"></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-982"></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-983"></a>
<a name="line-984"></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-985"></a> <span class="p">{</span>
<a name="line-986"></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-987"></a> <span class="p">{</span>
<a name="line-988"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-989"></a> <span class="p">}</span>
<a name="line-990"></a>
<a name="line-991"></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-992"></a>
<a name="line-993"></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-994"></a> <span class="p">{</span>
<a name="line-995"></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-996"></a> <span class="p">{</span>
<a name="line-997"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-998"></a> <span class="p">}</span>
<a name="line-999"></a>
<a name="line-1000"></a> <span class="c1">// this tile can be deleted</span>
<a name="line-1001"></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-1002"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-1003"></a> <span class="p">}</span>
<a name="line-1004"></a>
<a name="line-1005"></a> <span class="n">currentParentTile</span> <span class="o">=</span> <span class="n">currentTile</span><span class="p">;</span>
<a name="line-1006"></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-1007"></a>
<a name="line-1008"></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-1009"></a> <span class="p">{</span>
<a name="line-1010"></a> <span class="k">break</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><span class="p">}</span>
<a name="line-1014"></a>
<a name="line-1015"></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-1016"></a><span class="p">{</span>
<a name="line-1017"></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-1018"></a>
<a name="line-1019"></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-1020"></a> <span class="p">{</span>
<a name="line-1021"></a> <span class="c1">/// @todo This could be possible until all code paths are checked</span>
<a name="line-1022"></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-1023"></a> <span class="p">{</span>
<a name="line-1024"></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-1025"></a> <span class="p">}</span>
<a name="line-1026"></a>
<a name="line-1027"></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-1028"></a> <span class="p">{</span>
<a name="line-1029"></a> <span class="k">break</span><span class="p">;</span>
<a name="line-1030"></a> <span class="p">}</span>
<a name="line-1031"></a>
<a name="line-1032"></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-1033"></a>
<a name="line-1034"></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-1035"></a> <span class="p">{</span>
<a name="line-1036"></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-1037"></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-1038"></a> <span class="p">}</span>
<a name="line-1039"></a>
<a name="line-1040"></a> <span class="n">currentTile</span> <span class="o">=</span> <span class="n">nextTile</span><span class="p">;</span>
<a name="line-1041"></a> <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="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/57.html b/static/reports/cppcheck/master/57.html
index ddde93cca..8cdf15a69 100644
--- a/static/reports/cppcheck/master/57.html
+++ b/static/reports/cppcheck/master/57.html
@@ -1,743 +1,2345 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/utilities/import/models/camitemsortsettings.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/utilities/import/models/importimagemodel.cpp </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> camitemsortsettings.cpp</p>
-<a href='57.html#line-37'> useInitializationList 37</a><a href='57.html#line-41'> useInitializationList 41</a><a href='57.html#line-42'> useInitializationList 42</a><a href='57.html#line-43'> useInitializationList 43</a>
+ <p id="filename"><a href="index.html">Defects:</a> importimagemodel.cpp</p>
+<a href='57.html#line-904'> useInitializationList 904</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</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</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 : 2012-23-06</span>
-<a name="line-7"></a><span class="cm"> * Description : Sort settings for camera item infos</span>
+<a name="line-6"></a><span class="cm"> * Date : 2012-05-22</span>
+<a name="line-7"></a><span class="cm"> * Description : Qt item model for camera entries</span>
<a name="line-8"></a><span class="cm"> *</span>
<a name="line-9"></a><span class="cm"> * Copyright (C) 2012 by Islam Wazery &lt;wazery at ubuntu 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;camitemsortsettings.h&quot;</span><span class="cp"></span>
+<a name="line-24"></a><span class="cp">#include</span> <span class="cpf">&quot;importimagemodel.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;QRectF&gt;</span><span class="cp"></span>
+<a name="line-28"></a><span class="cp">#include</span> <span class="cpf">&lt;QHash&gt;</span><span class="cp"></span>
<a name="line-29"></a>
-<a name="line-30"></a><span class="k">namespace</span> <span class="n">Digikam</span>
-<a name="line-31"></a><span class="p">{</span>
-<a name="line-32"></a>
-<a name="line-33"></a><span class="n">CamItemSortSettings</span><span class="o">::</span><span class="n">CamItemSortSettings</span><span class="p">()</span>
-<a name="line-34"></a><span class="p">{</span>
-<a name="line-35"></a> <span class="n">categorizationMode</span> <span class="o">=</span> <span class="n">NoCategories</span><span class="p">;</span>
-<a name="line-36"></a> <span class="n">categorizationSortOrder</span> <span class="o">=</span> <span class="n">DefaultOrder</span><span class="p">;</span>
-<a name="line-37"></a><span class="hll"> <span class="n">categorizationCaseSensitivity</span> <span class="o">=</span> <span class="n">Qt</span><span class="o">::</span><span class="n">CaseSensitive</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'categorizationCaseSensitivity' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;categorizationCaseSensitivity&apos; a value by passing the value to the constructor in the initialization list.</div></div>
-</span><a name="line-38"></a> <span class="n">sortRole</span> <span class="o">=</span> <span class="n">SortByFileName</span><span class="p">;</span>
-<a name="line-39"></a> <span class="n">sortOrder</span> <span class="o">=</span> <span class="n">DefaultOrder</span><span class="p">;</span>
-<a name="line-40"></a> <span class="n">strTypeNatural</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-41"></a><span class="hll"> <span class="n">sortCaseSensitivity</span> <span class="o">=</span> <span class="n">Qt</span><span class="o">::</span><span class="n">CaseSensitive</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'sortCaseSensitivity' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;sortCaseSensitivity&apos; a value by passing the value to the constructor in the initialization list.</div></div>
-</span><a name="line-42"></a><span class="hll"> <span class="n">currentCategorizationSortOrder</span> <span class="o">=</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AscendingOrder</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'currentCategorizationSortOrder' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;currentCategorizationSortOrder&apos; a value by passing the value to the constructor in the initialization list.</div></div>
-</span><a name="line-43"></a><span class="hll"> <span class="n">currentSortOrder</span> <span class="o">=</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AscendingOrder</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'currentSortOrder' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;currentSortOrder&apos; a value by passing the value to the constructor in the initialization list.</div></div>
-</span><a name="line-44"></a><span class="p">}</span>
-<a name="line-45"></a>
-<a name="line-46"></a><span class="n">CamItemSortSettings</span><span class="o">::~</span><span class="n">CamItemSortSettings</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="kt">bool</span> <span class="n">CamItemSortSettings</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">CamItemSortSettings</span><span class="o">&amp;</span> <span class="n">other</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-51"></a><span class="p">{</span>
-<a name="line-52"></a> <span class="k">return</span> <span class="p">(</span><span class="n">categorizationMode</span> <span class="o">==</span> <span class="n">other</span><span class="p">.</span><span class="n">categorizationMode</span> <span class="o">&amp;&amp;</span>
-<a name="line-53"></a> <span class="n">categorizationSortOrder</span> <span class="o">==</span> <span class="n">other</span><span class="p">.</span><span class="n">categorizationSortOrder</span> <span class="o">&amp;&amp;</span>
-<a name="line-54"></a> <span class="n">categorizationCaseSensitivity</span> <span class="o">==</span> <span class="n">other</span><span class="p">.</span><span class="n">categorizationCaseSensitivity</span> <span class="o">&amp;&amp;</span>
-<a name="line-55"></a> <span class="n">sortRole</span> <span class="o">==</span> <span class="n">other</span><span class="p">.</span><span class="n">sortRole</span> <span class="o">&amp;&amp;</span>
-<a name="line-56"></a> <span class="n">sortOrder</span> <span class="o">==</span> <span class="n">other</span><span class="p">.</span><span class="n">sortOrder</span> <span class="o">&amp;&amp;</span>
-<a name="line-57"></a> <span class="n">sortCaseSensitivity</span> <span class="o">==</span> <span class="n">other</span><span class="p">.</span><span class="n">sortCaseSensitivity</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">void</span> <span class="n">CamItemSortSettings</span><span class="o">::</span><span class="n">setCategorizationMode</span><span class="p">(</span><span class="n">CategorizationMode</span> <span class="n">mode</span><span class="p">)</span>
-<a name="line-61"></a><span class="p">{</span>
-<a name="line-62"></a> <span class="n">categorizationMode</span> <span class="o">=</span> <span class="n">mode</span><span class="p">;</span>
-<a name="line-63"></a>
-<a name="line-64"></a> <span class="k">if</span> <span class="p">(</span><span class="n">categorizationSortOrder</span> <span class="o">==</span> <span class="n">DefaultOrder</span><span class="p">)</span>
-<a name="line-65"></a> <span class="p">{</span>
-<a name="line-66"></a> <span class="n">currentCategorizationSortOrder</span> <span class="o">=</span> <span class="n">defaultSortOrderForCategorizationMode</span><span class="p">(</span><span class="n">categorizationMode</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">CamItemSortSettings</span><span class="o">::</span><span class="n">setCategorizationSortOrder</span><span class="p">(</span><span class="n">SortOrder</span> <span class="n">order</span><span class="p">)</span>
-<a name="line-71"></a><span class="p">{</span>
-<a name="line-72"></a> <span class="n">categorizationSortOrder</span> <span class="o">=</span> <span class="n">order</span><span class="p">;</span>
+<a name="line-30"></a><span class="c1">// Local includes</span>
+<a name="line-31"></a>
+<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
+<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&quot;coredbdownloadhistory.h&quot;</span><span class="cp"></span>
+<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&quot;cameracontroller.h&quot;</span><span class="cp"></span>
+<a name="line-35"></a>
+<a name="line-36"></a><span class="k">namespace</span> <span class="n">Digikam</span>
+<a name="line-37"></a><span class="p">{</span>
+<a name="line-38"></a>
+<a name="line-39"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">Private</span>
+<a name="line-40"></a><span class="p">{</span>
+<a name="line-41"></a><span class="k">public</span><span class="o">:</span>
+<a name="line-42"></a>
+<a name="line-43"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
+<a name="line-44"></a> <span class="o">:</span> <span class="n">controller</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-45"></a> <span class="n">keepFileUrlCache</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
+<a name="line-46"></a> <span class="n">refreshing</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
+<a name="line-47"></a> <span class="n">reAdding</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
+<a name="line-48"></a> <span class="n">incrementalRefreshRequested</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
+<a name="line-49"></a> <span class="n">sendRemovalSignals</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
+<a name="line-50"></a> <span class="n">incrementalUpdater</span><span class="p">(</span><span class="k">nullptr</span><span class="p">)</span>
+<a name="line-51"></a> <span class="p">{</span>
+<a name="line-52"></a> <span class="p">}</span>
+<a name="line-53"></a>
+<a name="line-54"></a> <span class="kr">inline</span> <span class="kt">bool</span> <span class="n">isValid</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-55"></a> <span class="p">{</span>
+<a name="line-56"></a> <span class="k">return</span> <span class="p">(</span>
+<a name="line-57"></a> <span class="n">index</span><span class="p">.</span><span class="n">isValid</span><span class="p">()</span> <span class="o">&amp;&amp;</span>
+<a name="line-58"></a> <span class="p">(</span><span class="n">index</span><span class="p">.</span><span class="n">row</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-59"></a> <span class="p">(</span><span class="n">index</span><span class="p">.</span><span class="n">row</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">infos</span><span class="p">.</span><span class="n">size</span><span class="p">())</span>
+<a name="line-60"></a> <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="k">public</span><span class="o">:</span>
+<a name="line-64"></a>
+<a name="line-65"></a> <span class="n">CameraController</span><span class="o">*</span> <span class="n">controller</span><span class="p">;</span>
+<a name="line-66"></a> <span class="n">CamItemInfoList</span> <span class="n">infos</span><span class="p">;</span>
+<a name="line-67"></a> <span class="n">CamItemInfo</span> <span class="n">camItemInfo</span><span class="p">;</span>
+<a name="line-68"></a>
+<a name="line-69"></a> <span class="n">QHash</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">idHash</span><span class="p">;</span>
+<a name="line-70"></a> <span class="n">QHash</span><span class="o">&lt;</span><span class="n">QString</span><span class="p">,</span> <span class="n">qlonglong</span><span class="o">&gt;</span> <span class="n">fileUrlHash</span><span class="p">;</span>
+<a name="line-71"></a>
+<a name="line-72"></a> <span class="kt">bool</span> <span class="n">keepFileUrlCache</span><span class="p">;</span>
<a name="line-73"></a>
-<a name="line-74"></a> <span class="k">if</span> <span class="p">(</span><span class="n">categorizationSortOrder</span> <span class="o">==</span> <span class="n">DefaultOrder</span><span class="p">)</span>
-<a name="line-75"></a> <span class="p">{</span>
-<a name="line-76"></a> <span class="n">currentCategorizationSortOrder</span> <span class="o">=</span> <span class="n">defaultSortOrderForCategorizationMode</span><span class="p">(</span><span class="n">categorizationMode</span><span class="p">);</span>
-<a name="line-77"></a> <span class="p">}</span>
-<a name="line-78"></a> <span class="k">else</span>
-<a name="line-79"></a> <span class="p">{</span>
-<a name="line-80"></a> <span class="n">currentCategorizationSortOrder</span> <span class="o">=</span> <span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">SortOrder</span><span class="p">)</span><span class="n">categorizationSortOrder</span><span class="p">;</span>
-<a name="line-81"></a> <span class="p">}</span>
-<a name="line-82"></a><span class="p">}</span>
-<a name="line-83"></a>
-<a name="line-84"></a><span class="kt">void</span> <span class="n">CamItemSortSettings</span><span class="o">::</span><span class="n">setSortRole</span><span class="p">(</span><span class="n">SortRole</span> <span class="n">role</span><span class="p">)</span>
-<a name="line-85"></a><span class="p">{</span>
-<a name="line-86"></a> <span class="n">sortRole</span> <span class="o">=</span> <span class="n">role</span><span class="p">;</span>
+<a name="line-74"></a> <span class="kt">bool</span> <span class="n">refreshing</span><span class="p">;</span>
+<a name="line-75"></a> <span class="kt">bool</span> <span class="n">reAdding</span><span class="p">;</span>
+<a name="line-76"></a> <span class="kt">bool</span> <span class="n">incrementalRefreshRequested</span><span class="p">;</span>
+<a name="line-77"></a>
+<a name="line-78"></a> <span class="kt">bool</span> <span class="n">sendRemovalSignals</span><span class="p">;</span>
+<a name="line-79"></a>
+<a name="line-80"></a> <span class="k">class</span> <span class="nc">ImportItemModelIncrementalUpdater</span><span class="o">*</span> <span class="n">incrementalUpdater</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="c1">// ----------------------------------------------------------------------------------------------------</span>
+<a name="line-84"></a>
+<a name="line-85"></a><span class="k">typedef</span> <span class="n">QPair</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="n">IntPair</span><span class="p">;</span>
+<a name="line-86"></a><span class="k">typedef</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">IntPair</span><span class="o">&gt;</span> <span class="n">IntPairList</span><span class="p">;</span>
<a name="line-87"></a>
-<a name="line-88"></a> <span class="k">if</span> <span class="p">(</span><span class="n">sortOrder</span> <span class="o">==</span> <span class="n">DefaultOrder</span><span class="p">)</span>
-<a name="line-89"></a> <span class="p">{</span>
-<a name="line-90"></a> <span class="n">currentSortOrder</span> <span class="o">=</span> <span class="n">defaultSortOrderForSortRole</span><span class="p">(</span><span class="n">sortRole</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-88"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">ImportItemModelIncrementalUpdater</span>
+<a name="line-89"></a><span class="p">{</span>
+<a name="line-90"></a><span class="k">public</span><span class="o">:</span>
+<a name="line-91"></a>
+<a name="line-92"></a> <span class="k">explicit</span> <span class="n">ImportItemModelIncrementalUpdater</span><span class="p">(</span><span class="n">ImportItemModel</span><span class="o">::</span><span class="n">Private</span><span class="o">*</span> <span class="k">const</span> <span class="n">d</span><span class="p">);</span>
<a name="line-93"></a>
-<a name="line-94"></a><span class="kt">void</span> <span class="n">CamItemSortSettings</span><span class="o">::</span><span class="n">setSortOrder</span><span class="p">(</span><span class="n">SortOrder</span> <span class="n">order</span><span class="p">)</span>
-<a name="line-95"></a><span class="p">{</span>
-<a name="line-96"></a> <span class="n">sortOrder</span> <span class="o">=</span> <span class="n">order</span><span class="p">;</span>
+<a name="line-94"></a> <span class="kt">void</span> <span class="nf">appendInfos</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;&amp;</span> <span class="n">infos</span><span class="p">);</span>
+<a name="line-95"></a> <span class="kt">void</span> <span class="nf">aboutToBeRemovedInModel</span><span class="p">(</span><span class="k">const</span> <span class="n">IntPairList</span><span class="o">&amp;</span> <span class="n">aboutToBeRemoved</span><span class="p">);</span>
+<a name="line-96"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">IntPair</span><span class="o">&gt;</span> <span class="n">oldIndexes</span><span class="p">();</span>
<a name="line-97"></a>
-<a name="line-98"></a> <span class="k">if</span> <span class="p">(</span><span class="n">sortOrder</span> <span class="o">==</span> <span class="n">DefaultOrder</span><span class="p">)</span>
-<a name="line-99"></a> <span class="p">{</span>
-<a name="line-100"></a> <span class="n">currentSortOrder</span> <span class="o">=</span> <span class="n">defaultSortOrderForSortRole</span><span class="p">(</span><span class="n">sortRole</span><span class="p">);</span>
-<a name="line-101"></a> <span class="p">}</span>
-<a name="line-102"></a> <span class="k">else</span>
-<a name="line-103"></a> <span class="p">{</span>
-<a name="line-104"></a> <span class="n">currentSortOrder</span> <span class="o">=</span> <span class="p">(</span><span class="n">Qt</span><span class="o">::</span><span class="n">SortOrder</span><span class="p">)</span><span class="n">order</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="kt">void</span> <span class="n">CamItemSortSettings</span><span class="o">::</span><span class="n">setStringTypeNatural</span><span class="p">(</span><span class="kt">bool</span> <span class="n">natural</span><span class="p">)</span>
-<a name="line-109"></a><span class="p">{</span>
-<a name="line-110"></a> <span class="n">strTypeNatural</span> <span class="o">=</span> <span class="n">natural</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">Qt</span><span class="o">::</span><span class="n">SortOrder</span> <span class="n">CamItemSortSettings</span><span class="o">::</span><span class="n">defaultSortOrderForCategorizationMode</span><span class="p">(</span><span class="n">CategorizationMode</span> <span class="n">mode</span><span class="p">)</span>
-<a name="line-114"></a><span class="p">{</span>
-<a name="line-115"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">mode</span><span class="p">)</span>
-<a name="line-116"></a> <span class="p">{</span>
-<a name="line-117"></a> <span class="k">case</span> <span class="nl">NoCategories</span><span class="p">:</span>
-<a name="line-118"></a> <span class="k">case</span> <span class="nl">CategoryByFolder</span><span class="p">:</span>
-<a name="line-119"></a> <span class="k">case</span> <span class="nl">CategoryByFormat</span><span class="p">:</span>
-<a name="line-120"></a> <span class="k">case</span> <span class="nl">CategoryByDate</span><span class="p">:</span>
-<a name="line-121"></a> <span class="k">default</span><span class="o">:</span>
-<a name="line-122"></a> <span class="k">return</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AscendingOrder</span><span class="p">;</span>
-<a name="line-123"></a> <span class="p">}</span>
-<a name="line-124"></a><span class="p">}</span>
-<a name="line-125"></a>
-<a name="line-126"></a><span class="n">Qt</span><span class="o">::</span><span class="n">SortOrder</span> <span class="n">CamItemSortSettings</span><span class="o">::</span><span class="n">defaultSortOrderForSortRole</span><span class="p">(</span><span class="n">SortRole</span> <span class="n">role</span><span class="p">)</span>
-<a name="line-127"></a><span class="p">{</span>
-<a name="line-128"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">role</span><span class="p">)</span>
-<a name="line-129"></a> <span class="p">{</span>
-<a name="line-130"></a> <span class="k">case</span> <span class="nl">SortByFileName</span><span class="p">:</span>
-<a name="line-131"></a> <span class="k">case</span> <span class="nl">SortByFilePath</span><span class="p">:</span>
-<a name="line-132"></a> <span class="k">return</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AscendingOrder</span><span class="p">;</span>
-<a name="line-133"></a> <span class="k">case</span> <span class="nl">SortByFileSize</span><span class="p">:</span>
-<a name="line-134"></a> <span class="k">return</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DescendingOrder</span><span class="p">;</span>
-<a name="line-135"></a> <span class="k">case</span> <span class="nl">SortByCreationDate</span><span class="p">:</span>
-<a name="line-136"></a> <span class="k">return</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AscendingOrder</span><span class="p">;</span>
-<a name="line-137"></a> <span class="k">case</span> <span class="nl">SortByDownloadState</span><span class="p">:</span>
-<a name="line-138"></a> <span class="k">return</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AscendingOrder</span><span class="p">;</span>
-<a name="line-139"></a> <span class="k">case</span> <span class="nl">SortByRating</span><span class="p">:</span>
-<a name="line-140"></a> <span class="k">return</span> <span class="n">Qt</span><span class="o">::</span><span class="n">DescendingOrder</span><span class="p">;</span>
-<a name="line-141"></a> <span class="k">default</span><span class="o">:</span>
-<a name="line-142"></a> <span class="k">return</span> <span class="n">Qt</span><span class="o">::</span><span class="n">AscendingOrder</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="kt">int</span> <span class="n">CamItemSortSettings</span><span class="o">::</span><span class="n">compareCategories</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">left</span><span class="p">,</span> <span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">right</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-147"></a><span class="p">{</span>
-<a name="line-148"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">categorizationMode</span><span class="p">)</span>
-<a name="line-149"></a> <span class="p">{</span>
-<a name="line-150"></a> <span class="k">case</span> <span class="nl">NoCategories</span><span class="p">:</span>
-<a name="line-151"></a> <span class="k">case</span> <span class="nl">CategoryByFolder</span><span class="p">:</span>
-<a name="line-152"></a> <span class="k">return</span> <span class="n">naturalCompare</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">folder</span><span class="p">,</span> <span class="n">right</span><span class="p">.</span><span class="n">folder</span><span class="p">,</span> <span class="n">currentCategorizationSortOrder</span><span class="p">,</span> <span class="n">categorizationCaseSensitivity</span><span class="p">,</span> <span class="n">strTypeNatural</span><span class="p">);</span>
-<a name="line-153"></a> <span class="k">case</span> <span class="nl">CategoryByFormat</span><span class="p">:</span>
-<a name="line-154"></a> <span class="k">return</span> <span class="n">naturalCompare</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">mime</span><span class="p">,</span> <span class="n">right</span><span class="p">.</span><span class="n">mime</span><span class="p">,</span> <span class="n">currentCategorizationSortOrder</span><span class="p">,</span> <span class="n">categorizationCaseSensitivity</span><span class="p">,</span> <span class="n">strTypeNatural</span><span class="p">);</span>
-<a name="line-155"></a> <span class="k">case</span> <span class="nl">CategoryByDate</span><span class="p">:</span>
-<a name="line-156"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">ctime</span><span class="p">.</span><span class="n">date</span><span class="p">(),</span> <span class="n">right</span><span class="p">.</span><span class="n">ctime</span><span class="p">.</span><span class="n">date</span><span class="p">(),</span> <span class="n">currentCategorizationSortOrder</span><span class="p">);</span>
-<a name="line-157"></a> <span class="k">default</span><span class="o">:</span>
-<a name="line-158"></a> <span class="k">return</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="p">}</span>
-<a name="line-161"></a>
-<a name="line-162"></a><span class="kt">bool</span> <span class="n">CamItemSortSettings</span><span class="o">::</span><span class="n">lessThan</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">left</span><span class="p">,</span> <span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">right</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-163"></a><span class="p">{</span>
-<a name="line-164"></a> <span class="kt">int</span> <span class="n">result</span> <span class="o">=</span> <span class="n">compare</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">sortRole</span><span class="p">);</span>
+<a name="line-98"></a> <span class="k">static</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">IntPair</span><span class="o">&gt;</span> <span class="n">toContiguousPairs</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;&amp;</span> <span class="n">ids</span><span class="p">);</span>
+<a name="line-99"></a>
+<a name="line-100"></a><span class="k">public</span><span class="o">:</span>
+<a name="line-101"></a>
+<a name="line-102"></a> <span class="n">QHash</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">oldIds</span><span class="p">;</span>
+<a name="line-103"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;</span> <span class="n">newInfos</span><span class="p">;</span>
+<a name="line-104"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">IntPairList</span><span class="o">&gt;</span> <span class="n">modelRemovals</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="c1">// ----------------------------------------------------------------------------------------------------</span>
+<a name="line-108"></a>
+<a name="line-109"></a><span class="n">ImportItemModel</span><span class="o">::</span><span class="n">ImportItemModel</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-110"></a> <span class="o">:</span> <span class="n">QAbstractListModel</span><span class="p">(</span><span class="n">parent</span><span class="p">),</span>
+<a name="line-111"></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-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="n">ImportItemModel</span><span class="o">::~</span><span class="n">ImportItemModel</span><span class="p">()</span>
+<a name="line-116"></a><span class="p">{</span>
+<a name="line-117"></a> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span>
+<a name="line-118"></a><span class="p">}</span>
+<a name="line-119"></a>
+<a name="line-120"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">setCameraThumbsController</span><span class="p">(</span><span class="n">CameraThumbsCtrl</span><span class="o">*</span> <span class="k">const</span> <span class="n">thumbsCtrl</span><span class="p">)</span>
+<a name="line-121"></a><span class="p">{</span>
+<a name="line-122"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">controller</span> <span class="o">=</span> <span class="n">thumbsCtrl</span><span class="o">-&gt;</span><span class="n">cameraController</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">controller</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalFileList</span><span class="p">(</span><span class="n">CamItemInfoList</span><span class="p">)),</span>
+<a name="line-125"></a> <span class="n">SLOT</span><span class="p">(</span><span class="n">addCamItemInfos</span><span class="p">(</span><span class="n">CamItemInfoList</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">controller</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalDeleted</span><span class="p">(</span><span class="n">QString</span><span class="p">,</span><span class="n">QString</span><span class="p">,</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-128"></a> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotFileDeleted</span><span class="p">(</span><span class="n">QString</span><span class="p">,</span><span class="n">QString</span><span class="p">,</span><span class="kt">bool</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">controller</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalUploaded</span><span class="p">(</span><span class="n">CamItemInfo</span><span class="p">)),</span>
+<a name="line-131"></a> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotFileUploaded</span><span class="p">(</span><span class="n">CamItemInfo</span><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="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">setKeepsFileUrlCache</span><span class="p">(</span><span class="kt">bool</span> <span class="n">keepCache</span><span class="p">)</span>
+<a name="line-135"></a><span class="p">{</span>
+<a name="line-136"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">keepFileUrlCache</span> <span class="o">=</span> <span class="n">keepCache</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="kt">bool</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">keepsFileUrlCache</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-140"></a><span class="p">{</span>
+<a name="line-141"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">keepFileUrlCache</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="kt">bool</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">isEmpty</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-145"></a><span class="p">{</span>
+<a name="line-146"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">isEmpty</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">CamItemInfo</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">camItemInfo</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-150"></a><span class="p">{</span>
+<a name="line-151"></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">isValid</span><span class="p">(</span><span class="n">index</span><span class="p">))</span>
+<a name="line-152"></a> <span class="p">{</span>
+<a name="line-153"></a> <span class="k">return</span> <span class="n">CamItemInfo</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="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">index</span><span class="p">.</span><span class="n">row</span><span class="p">());</span>
+<a name="line-157"></a><span class="p">}</span>
+<a name="line-158"></a>
+<a name="line-159"></a><span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">camItemInfoRef</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-160"></a><span class="p">{</span>
+<a name="line-161"></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">isValid</span><span class="p">(</span><span class="n">index</span><span class="p">))</span>
+<a name="line-162"></a> <span class="p">{</span>
+<a name="line-163"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">camItemInfo</span><span class="p">;</span>
+<a name="line-164"></a> <span class="p">}</span>
<a name="line-165"></a>
-<a name="line-166"></a> <span class="k">if</span> <span class="p">(</span><span class="n">result</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">return</span> <span class="n">result</span> <span class="o">&lt;</span> <span class="mi">0</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="k">if</span> <span class="p">(</span><span class="n">left</span> <span class="o">==</span> <span class="n">right</span><span class="p">)</span>
+<a name="line-166"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">[</span><span class="n">index</span><span class="p">.</span><span class="n">row</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="n">qlonglong</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">camItemId</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-170"></a><span class="p">{</span>
+<a name="line-171"></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">isValid</span><span class="p">(</span><span class="n">index</span><span class="p">))</span>
<a name="line-172"></a> <span class="p">{</span>
-<a name="line-173"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-173"></a> <span class="k">return</span> <span class="o">-</span><span class="mi">1</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="k">if</span> <span class="p">((</span><span class="n">result</span> <span class="o">=</span> <span class="n">compare</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">SortByFileName</span><span class="p">))</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-177"></a> <span class="p">{</span>
-<a name="line-178"></a> <span class="k">return</span> <span class="n">result</span> <span class="o">&lt;</span> <span class="mi">0</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">result</span> <span class="o">=</span> <span class="n">compare</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">SortByCreationDate</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">return</span> <span class="n">result</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-184"></a> <span class="p">}</span>
-<a name="line-185"></a>
-<a name="line-186"></a> <span class="k">if</span> <span class="p">((</span><span class="n">result</span> <span class="o">=</span> <span class="n">compare</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">SortByFilePath</span><span class="p">))</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-187"></a> <span class="p">{</span>
-<a name="line-188"></a> <span class="k">return</span> <span class="n">result</span> <span class="o">&lt;</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-189"></a> <span class="p">}</span>
+<a name="line-176"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">index</span><span class="p">.</span><span class="n">row</span><span class="p">()).</span><span class="n">id</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="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">camItemInfos</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QModelIndex</span><span class="o">&gt;&amp;</span> <span class="n">indexes</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-180"></a><span class="p">{</span>
+<a name="line-181"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;</span> <span class="n">infos</span><span class="p">;</span>
+<a name="line-182"></a>
+<a name="line-183"></a> <span class="n">foreach</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="n">indexes</span><span class="p">)</span>
+<a name="line-184"></a> <span class="p">{</span>
+<a name="line-185"></a> <span class="n">infos</span> <span class="o">&lt;&lt;</span> <span class="n">camItemInfo</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
+<a name="line-186"></a> <span class="p">}</span>
+<a name="line-187"></a>
+<a name="line-188"></a> <span class="k">return</span> <span class="n">infos</span><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">if</span> <span class="p">((</span><span class="n">result</span> <span class="o">=</span> <span class="n">compare</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">SortByFileSize</span><span class="p">))</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-192"></a> <span class="p">{</span>
-<a name="line-193"></a> <span class="k">return</span> <span class="n">result</span> <span class="o">&lt;</span> <span class="mi">0</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="k">if</span> <span class="p">((</span><span class="n">result</span> <span class="o">=</span> <span class="n">compare</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">SortByRating</span><span class="p">))</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-197"></a> <span class="p">{</span>
-<a name="line-198"></a> <span class="k">return</span> <span class="n">result</span> <span class="o">&lt;</span> <span class="mi">0</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="k">if</span> <span class="p">((</span><span class="n">result</span> <span class="o">=</span> <span class="n">compare</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">SortByDownloadState</span><span class="p">))</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-202"></a> <span class="p">{</span>
-<a name="line-203"></a> <span class="k">return</span> <span class="n">result</span> <span class="o">&lt;</span> <span class="mi">0</span><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="k">return</span> <span class="nb">false</span><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">int</span> <span class="n">CamItemSortSettings</span><span class="o">::</span><span class="n">compare</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">left</span><span class="p">,</span> <span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">right</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-210"></a><span class="p">{</span>
-<a name="line-211"></a> <span class="k">return</span> <span class="n">compare</span><span class="p">(</span><span class="n">left</span><span class="p">,</span> <span class="n">right</span><span class="p">,</span> <span class="n">sortRole</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="kt">int</span> <span class="n">CamItemSortSettings</span><span class="o">::</span><span class="n">compare</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">left</span><span class="p">,</span> <span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">right</span><span class="p">,</span> <span class="n">SortRole</span> <span class="n">role</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-215"></a><span class="p">{</span>
-<a name="line-216"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">role</span><span class="p">)</span>
-<a name="line-217"></a> <span class="p">{</span>
-<a name="line-218"></a> <span class="k">case</span> <span class="nl">SortByFileName</span><span class="p">:</span>
-<a name="line-219"></a> <span class="p">{</span>
-<a name="line-220"></a> <span class="k">return</span> <span class="n">naturalCompare</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">name</span><span class="p">,</span> <span class="n">right</span><span class="p">.</span><span class="n">name</span><span class="p">,</span>
-<a name="line-221"></a> <span class="n">currentSortOrder</span><span class="p">,</span> <span class="n">sortCaseSensitivity</span><span class="p">,</span> <span class="n">strTypeNatural</span><span class="p">);</span>
-<a name="line-222"></a> <span class="p">}</span>
-<a name="line-223"></a> <span class="k">case</span> <span class="nl">SortByFilePath</span><span class="p">:</span>
-<a name="line-224"></a> <span class="k">return</span> <span class="n">naturalCompare</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">url</span><span class="p">().</span><span class="n">toLocalFile</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">toLocalFile</span><span class="p">(),</span>
-<a name="line-225"></a> <span class="n">currentSortOrder</span><span class="p">,</span> <span class="n">sortCaseSensitivity</span><span class="p">,</span> <span class="n">strTypeNatural</span><span class="p">);</span>
-<a name="line-226"></a> <span class="k">case</span> <span class="nl">SortByFileSize</span><span class="p">:</span>
-<a name="line-227"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">size</span><span class="p">,</span> <span class="n">right</span><span class="p">.</span><span class="n">size</span><span class="p">,</span> <span class="n">currentSortOrder</span><span class="p">);</span>
-<a name="line-228"></a> <span class="c1">//FIXME: Change it to creation date instead of modification date.</span>
-<a name="line-229"></a> <span class="k">case</span> <span class="nl">SortByCreationDate</span><span class="p">:</span>
-<a name="line-230"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">ctime</span><span class="p">,</span> <span class="n">right</span><span class="p">.</span><span class="n">ctime</span><span class="p">,</span> <span class="n">currentSortOrder</span><span class="p">);</span>
-<a name="line-231"></a> <span class="k">case</span> <span class="nl">SortByRating</span><span class="p">:</span>
-<a name="line-232"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">rating</span><span class="p">,</span> <span class="n">right</span><span class="p">.</span><span class="n">rating</span><span class="p">,</span> <span class="n">currentSortOrder</span><span class="p">);</span>
-<a name="line-233"></a> <span class="k">case</span> <span class="nl">SortByDownloadState</span><span class="p">:</span>
-<a name="line-234"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">downloaded</span><span class="p">,</span> <span class="n">right</span><span class="p">.</span><span class="n">downloaded</span><span class="p">,</span> <span class="n">currentSortOrder</span><span class="p">);</span>
-<a name="line-235"></a> <span class="k">default</span><span class="o">:</span>
-<a name="line-236"></a> <span class="k">return</span> <span class="mi">1</span><span class="p">;</span>
-<a name="line-237"></a> <span class="p">}</span>
-<a name="line-238"></a><span class="p">}</span>
-<a name="line-239"></a>
-<a name="line-240"></a><span class="kt">bool</span> <span class="n">CamItemSortSettings</span><span class="o">::</span><span class="n">lessThan</span><span class="p">(</span><span class="k">const</span> <span class="n">QVariant</span><span class="o">&amp;</span> <span class="n">left</span><span class="p">,</span> <span class="k">const</span> <span class="n">QVariant</span><span class="o">&amp;</span> <span class="n">right</span><span class="p">)</span> <span class="k">const</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">left</span><span class="p">.</span><span class="n">type</span><span class="p">()</span> <span class="o">!=</span> <span class="n">right</span><span class="p">.</span><span class="n">type</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="nb">false</span><span class="p">;</span>
-<a name="line-245"></a> <span class="p">}</span>
+<a name="line-191"></a><span class="n">QList</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="o">&gt;</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">camItemIds</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QModelIndex</span><span class="o">&gt;&amp;</span> <span class="n">indexes</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-192"></a><span class="p">{</span>
+<a name="line-193"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="o">&gt;</span> <span class="n">ids</span><span class="p">;</span>
+<a name="line-194"></a>
+<a name="line-195"></a> <span class="n">foreach</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="n">indexes</span><span class="p">)</span>
+<a name="line-196"></a> <span class="p">{</span>
+<a name="line-197"></a> <span class="n">ids</span> <span class="o">&lt;&lt;</span> <span class="n">camItemId</span><span class="p">(</span><span class="n">index</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="k">return</span> <span class="n">ids</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">CamItemInfo</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">camItemInfo</span><span class="p">(</span><span class="kt">int</span> <span class="n">row</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="k">if</span> <span class="p">((</span><span class="n">row</span> <span class="o">&lt;</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">&gt;=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">size</span><span class="p">()))</span>
+<a name="line-206"></a> <span class="p">{</span>
+<a name="line-207"></a> <span class="k">return</span> <span class="n">CamItemInfo</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="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">row</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">CamItemInfo</span><span class="o">&amp;</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">camItemInfoRef</span><span class="p">(</span><span class="kt">int</span> <span class="n">row</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-214"></a><span class="p">{</span>
+<a name="line-215"></a> <span class="k">if</span> <span class="p">((</span><span class="n">row</span> <span class="o">&lt;</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">&gt;=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">size</span><span class="p">()))</span>
+<a name="line-216"></a> <span class="p">{</span>
+<a name="line-217"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">camItemInfo</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">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">[</span><span class="n">row</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">qlonglong</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">camItemId</span><span class="p">(</span><span class="kt">int</span> <span class="n">row</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-224"></a><span class="p">{</span>
+<a name="line-225"></a> <span class="k">if</span> <span class="p">((</span><span class="n">row</span> <span class="o">&lt;</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">&gt;=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">size</span><span class="p">()))</span>
+<a name="line-226"></a> <span class="p">{</span>
+<a name="line-227"></a> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+<a name="line-228"></a> <span class="p">}</span>
+<a name="line-229"></a>
+<a name="line-230"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">row</span><span class="p">).</span><span class="n">id</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">QModelIndex</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">indexForCamItemInfo</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-234"></a><span class="p">{</span>
+<a name="line-235"></a> <span class="k">return</span> <span class="n">indexForCamItemId</span><span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">id</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">QList</span><span class="o">&lt;</span><span class="n">QModelIndex</span><span class="o">&gt;</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">indexesForCamItemInfo</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-239"></a><span class="p">{</span>
+<a name="line-240"></a> <span class="k">return</span> <span class="n">indexesForCamItemId</span><span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">id</span><span class="p">);</span>
+<a name="line-241"></a><span class="p">}</span>
+<a name="line-242"></a>
+<a name="line-243"></a><span class="n">QModelIndex</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">indexForCamItemId</span><span class="p">(</span><span class="n">qlonglong</span> <span class="n">id</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-244"></a><span class="p">{</span>
+<a name="line-245"></a> <span class="kt">int</span> <span class="n">index</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">idHash</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">);</span>
<a name="line-246"></a>
-<a name="line-247"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">type</span><span class="p">())</span>
+<a name="line-247"></a> <span class="k">if</span> <span class="p">(</span><span class="n">index</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
<a name="line-248"></a> <span class="p">{</span>
-<a name="line-249"></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-250"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">toInt</span><span class="p">(),</span> <span class="n">right</span><span class="p">.</span><span class="n">toInt</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">);</span>
-<a name="line-251"></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-252"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">toUInt</span><span class="p">(),</span> <span class="n">right</span><span class="p">.</span><span class="n">toUInt</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">);</span>
-<a name="line-253"></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-254"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">toLongLong</span><span class="p">(),</span> <span class="n">right</span><span class="p">.</span><span class="n">toLongLong</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">);</span>
-<a name="line-255"></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-256"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">toULongLong</span><span class="p">(),</span> <span class="n">right</span><span class="p">.</span><span class="n">toULongLong</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">);</span>
-<a name="line-257"></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-258"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">toDouble</span><span class="p">(),</span> <span class="n">right</span><span class="p">.</span><span class="n">toDouble</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">);</span>
-<a name="line-259"></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-260"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">toDate</span><span class="p">(),</span> <span class="n">right</span><span class="p">.</span><span class="n">toDate</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">);</span>
-<a name="line-261"></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-262"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">toDateTime</span><span class="p">(),</span> <span class="n">right</span><span class="p">.</span><span class="n">toDateTime</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">);</span>
-<a name="line-263"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">Time</span><span class="p">:</span>
-<a name="line-264"></a> <span class="k">return</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">toTime</span><span class="p">(),</span> <span class="n">right</span><span class="p">.</span><span class="n">toTime</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">);</span>
-<a name="line-265"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">Rect</span><span class="p">:</span>
-<a name="line-266"></a> <span class="k">case</span> <span class="n">QVariant</span><span class="o">::</span><span class="nl">RectF</span><span class="p">:</span>
-<a name="line-267"></a> <span class="p">{</span>
-<a name="line-268"></a> <span class="n">QRectF</span> <span class="n">rectLeft</span> <span class="o">=</span> <span class="n">left</span><span class="p">.</span><span class="n">toRectF</span><span class="p">();</span>
-<a name="line-269"></a> <span class="n">QRectF</span> <span class="n">rectRight</span> <span class="o">=</span> <span class="n">right</span><span class="p">.</span><span class="n">toRectF</span><span class="p">();</span>
-<a name="line-270"></a> <span class="kt">int</span> <span class="n">result</span><span class="p">;</span>
-<a name="line-271"></a>
-<a name="line-272"></a> <span class="k">if</span> <span class="p">((</span><span class="n">result</span> <span class="o">=</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">rectLeft</span><span class="p">.</span><span class="n">top</span><span class="p">(),</span> <span class="n">rectRight</span><span class="p">.</span><span class="n">top</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">))</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-273"></a> <span class="p">{</span>
-<a name="line-274"></a> <span class="k">return</span> <span class="n">result</span> <span class="o">&lt;</span> <span class="mi">0</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="k">if</span> <span class="p">((</span><span class="n">result</span> <span class="o">=</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">rectLeft</span><span class="p">.</span><span class="n">left</span><span class="p">(),</span> <span class="n">rectRight</span><span class="p">.</span><span class="n">left</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">))</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-278"></a> <span class="p">{</span>
-<a name="line-279"></a> <span class="k">return</span> <span class="n">result</span> <span class="o">&lt;</span> <span class="mi">0</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="n">QSizeF</span> <span class="n">sizeLeft</span> <span class="o">=</span> <span class="n">rectLeft</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
-<a name="line-283"></a> <span class="n">QSizeF</span> <span class="n">sizeRight</span> <span class="o">=</span> <span class="n">rectRight</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
-<a name="line-284"></a>
-<a name="line-285"></a> <span class="k">if</span> <span class="p">((</span><span class="n">result</span> <span class="o">=</span> <span class="n">compareByOrder</span><span class="p">(</span><span class="n">sizeLeft</span><span class="p">.</span><span class="n">width</span><span class="p">()</span><span class="o">*</span><span class="n">sizeLeft</span><span class="p">.</span><span class="n">height</span><span class="p">(),</span> <span class="n">sizeRight</span><span class="p">.</span><span class="n">width</span><span class="p">()</span><span class="o">*</span><span class="n">sizeRight</span><span class="p">.</span><span class="n">height</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">))</span> <span class="o">!=</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-286"></a> <span class="p">{</span>
-<a name="line-287"></a> <span class="k">return</span> <span class="n">result</span> <span class="o">&lt;</span> <span class="mi">0</span><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="cp">#if __GNUC__ &gt;= 7 </span><span class="c1">// krazy:exclude=cpp</span>
-<a name="line-291"></a> <span class="p">[[</span><span class="n">fallthrough</span><span class="p">]];</span>
-<a name="line-292"></a><span class="cp">#endif</span>
-<a name="line-293"></a> <span class="p">}</span>
-<a name="line-294"></a> <span class="k">default</span><span class="o">:</span>
-<a name="line-295"></a> <span class="k">return</span> <span class="n">naturalCompare</span><span class="p">(</span><span class="n">left</span><span class="p">.</span><span class="n">toString</span><span class="p">(),</span> <span class="n">right</span><span class="p">.</span><span class="n">toString</span><span class="p">(),</span> <span class="n">currentSortOrder</span><span class="p">,</span> <span class="n">sortCaseSensitivity</span><span class="p">,</span> <span class="n">strTypeNatural</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="p">}</span> <span class="c1">// namespace Digikam</span>
+<a name="line-249"></a> <span class="k">return</span> <span class="n">QModelIndex</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">return</span> <span class="n">createIndex</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-253"></a><span class="p">}</span>
+<a name="line-254"></a>
+<a name="line-255"></a><span class="n">QList</span><span class="o">&lt;</span><span class="n">QModelIndex</span><span class="o">&gt;</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">indexesForCamItemId</span><span class="p">(</span><span class="n">qlonglong</span> <span class="n">id</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-256"></a><span class="p">{</span>
+<a name="line-257"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QModelIndex</span><span class="o">&gt;</span> <span class="n">indexes</span><span class="p">;</span>
+<a name="line-258"></a>
+<a name="line-259"></a> <span class="n">QHash</span><span class="o">&lt;</span><span class="n">qlonglong</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="p">;</span>
+<a name="line-260"></a>
+<a name="line-261"></a> <span class="k">for</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">idHash</span><span class="p">.</span><span class="n">constFind</span><span class="p">(</span><span class="n">id</span><span class="p">)</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">idHash</span><span class="p">.</span><span class="n">constEnd</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">it</span><span class="p">.</span><span class="n">key</span><span class="p">()</span> <span class="o">==</span> <span class="n">id</span> <span class="p">;</span> <span class="o">++</span><span class="n">it</span><span class="p">)</span>
+<a name="line-262"></a> <span class="p">{</span>
+<a name="line-263"></a> <span class="n">indexes</span> <span class="o">&lt;&lt;</span> <span class="n">createIndex</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="mi">0</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="k">return</span> <span class="n">indexes</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">int</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">numberOfIndexesForCamItemInfo</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-270"></a><span class="p">{</span>
+<a name="line-271"></a> <span class="k">return</span> <span class="n">numberOfIndexesForCamItemId</span><span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">id</span><span class="p">);</span>
+<a name="line-272"></a><span class="p">}</span>
+<a name="line-273"></a>
+<a name="line-274"></a><span class="kt">int</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">numberOfIndexesForCamItemId</span><span class="p">(</span><span class="n">qlonglong</span> <span class="n">id</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-275"></a><span class="p">{</span>
+<a name="line-276"></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-277"></a> <span class="n">QHash</span><span class="o">&lt;</span><span class="n">qlonglong</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="p">;</span>
+<a name="line-278"></a>
+<a name="line-279"></a> <span class="k">for</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">idHash</span><span class="p">.</span><span class="n">constFind</span><span class="p">(</span><span class="n">id</span><span class="p">)</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">idHash</span><span class="p">.</span><span class="n">constEnd</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">it</span><span class="p">.</span><span class="n">key</span><span class="p">()</span> <span class="o">==</span> <span class="n">id</span> <span class="p">;</span> <span class="o">++</span><span class="n">it</span><span class="p">)</span>
+<a name="line-280"></a> <span class="p">{</span>
+<a name="line-281"></a> <span class="o">++</span><span class="n">count</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="k">return</span> <span class="n">count</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="c1">// static method</span>
+<a name="line-288"></a><span class="n">CamItemInfo</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">retrieveCamItemInfo</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-289"></a><span class="p">{</span>
+<a name="line-290"></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-291"></a> <span class="p">{</span>
+<a name="line-292"></a> <span class="k">return</span> <span class="n">CamItemInfo</span><span class="p">();</span>
+<a name="line-293"></a> <span class="p">}</span>
+<a name="line-294"></a>
+<a name="line-295"></a> <span class="n">ImportItemModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">model</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">ImportItemModelPointerRole</span><span class="p">).</span><span class="n">value</span><span class="o">&lt;</span><span class="n">ImportItemModel</span><span class="o">*&gt;</span><span class="p">();</span>
+<a name="line-296"></a> <span class="kt">int</span> <span class="n">row</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">ImportItemModelInternalId</span><span class="p">).</span><span class="n">toInt</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="o">!</span><span class="n">model</span><span class="p">)</span>
+<a name="line-299"></a> <span class="p">{</span>
+<a name="line-300"></a> <span class="k">return</span> <span class="n">CamItemInfo</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="k">return</span> <span class="n">model</span><span class="o">-&gt;</span><span class="n">camItemInfo</span><span class="p">(</span><span class="n">row</span><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="c1">// static method</span>
+<a name="line-307"></a><span class="n">qlonglong</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">retrieveCamItemId</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-308"></a><span class="p">{</span>
+<a name="line-309"></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-310"></a> <span class="p">{</span>
+<a name="line-311"></a> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+<a name="line-312"></a> <span class="p">}</span>
+<a name="line-313"></a>
+<a name="line-314"></a> <span class="n">ImportItemModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">model</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">ImportItemModelPointerRole</span><span class="p">).</span><span class="n">value</span><span class="o">&lt;</span><span class="n">ImportItemModel</span><span class="o">*&gt;</span><span class="p">();</span>
+<a name="line-315"></a> <span class="kt">int</span> <span class="n">row</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">ImportItemModelInternalId</span><span class="p">).</span><span class="n">toInt</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">model</span><span class="p">)</span>
+<a name="line-318"></a> <span class="p">{</span>
+<a name="line-319"></a> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
+<a name="line-320"></a> <span class="p">}</span>
+<a name="line-321"></a>
+<a name="line-322"></a> <span class="k">return</span> <span class="n">model</span><span class="o">-&gt;</span><span class="n">camItemId</span><span class="p">(</span><span class="n">row</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">QModelIndex</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">indexForUrl</span><span class="p">(</span><span class="k">const</span> <span class="n">QUrl</span><span class="o">&amp;</span> <span class="n">fileUrl</span><span class="p">)</span> <span class="k">const</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">keepFileUrlCache</span><span class="p">)</span>
+<a name="line-328"></a> <span class="p">{</span>
+<a name="line-329"></a> <span class="k">return</span> <span class="n">indexForCamItemId</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fileUrlHash</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">fileUrl</span><span class="p">.</span><span class="n">toLocalFile</span><span class="p">()));</span>
+<a name="line-330"></a> <span class="p">}</span>
+<a name="line-331"></a> <span class="k">else</span>
+<a name="line-332"></a> <span class="p">{</span>
+<a name="line-333"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">size</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
+<a name="line-334"></a>
+<a name="line-335"></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">size</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-336"></a> <span class="p">{</span>
+<a name="line-337"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</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">url</span><span class="p">()</span> <span class="o">==</span> <span class="n">fileUrl</span><span class="p">)</span>
+<a name="line-338"></a> <span class="p">{</span>
+<a name="line-339"></a> <span class="k">return</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>
+<a name="line-340"></a> <span class="p">}</span>
+<a name="line-341"></a> <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="k">return</span> <span class="n">QModelIndex</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="n">QList</span><span class="o">&lt;</span><span class="n">QModelIndex</span><span class="o">&gt;</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">indexesForUrl</span><span class="p">(</span><span class="k">const</span> <span class="n">QUrl</span><span class="o">&amp;</span> <span class="n">fileUrl</span><span class="p">)</span> <span class="k">const</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">d</span><span class="o">-&gt;</span><span class="n">keepFileUrlCache</span><span class="p">)</span>
+<a name="line-350"></a> <span class="p">{</span>
+<a name="line-351"></a> <span class="k">return</span> <span class="n">indexesForCamItemId</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fileUrlHash</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">fileUrl</span><span class="p">.</span><span class="n">toLocalFile</span><span class="p">()));</span>
+<a name="line-352"></a> <span class="p">}</span>
+<a name="line-353"></a> <span class="k">else</span>
+<a name="line-354"></a> <span class="p">{</span>
+<a name="line-355"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QModelIndex</span><span class="o">&gt;</span> <span class="n">indexes</span><span class="p">;</span>
+<a name="line-356"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">size</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
+<a name="line-357"></a>
+<a name="line-358"></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">size</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-359"></a> <span class="p">{</span>
+<a name="line-360"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</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">url</span><span class="p">()</span> <span class="o">==</span> <span class="n">fileUrl</span><span class="p">)</span>
+<a name="line-361"></a> <span class="p">{</span>
+<a name="line-362"></a> <span class="n">indexes</span> <span class="o">&lt;&lt;</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>
+<a name="line-363"></a> <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="k">return</span> <span class="n">indexes</span><span class="p">;</span>
+<a name="line-367"></a> <span class="p">}</span>
+<a name="line-368"></a><span class="p">}</span>
+<a name="line-369"></a>
+<a name="line-370"></a><span class="n">CamItemInfo</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">camItemInfo</span><span class="p">(</span><span class="k">const</span> <span class="n">QUrl</span><span class="o">&amp;</span> <span class="n">fileUrl</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-371"></a><span class="p">{</span>
+<a name="line-372"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">keepFileUrlCache</span><span class="p">)</span>
+<a name="line-373"></a> <span class="p">{</span>
+<a name="line-374"></a> <span class="n">qlonglong</span> <span class="n">id</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileUrlHash</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">fileUrl</span><span class="p">.</span><span class="n">toLocalFile</span><span class="p">());</span>
+<a name="line-375"></a>
+<a name="line-376"></a> <span class="k">if</span> <span class="p">(</span><span class="n">id</span><span class="p">)</span>
+<a name="line-377"></a> <span class="p">{</span>
+<a name="line-378"></a> <span class="kt">int</span> <span class="n">index</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">idHash</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">);</span>
+<a name="line-379"></a>
+<a name="line-380"></a> <span class="k">if</span> <span class="p">(</span><span class="n">index</span> <span class="o">!=</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
+<a name="line-381"></a> <span class="p">{</span>
+<a name="line-382"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
+<a name="line-383"></a> <span class="p">}</span>
+<a name="line-384"></a> <span class="p">}</span>
+<a name="line-385"></a> <span class="p">}</span>
+<a name="line-386"></a> <span class="k">else</span>
+<a name="line-387"></a> <span class="p">{</span>
+<a name="line-388"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">)</span>
+<a name="line-389"></a> <span class="p">{</span>
+<a name="line-390"></a> <span class="k">if</span> <span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">url</span><span class="p">()</span> <span class="o">==</span> <span class="n">fileUrl</span><span class="p">)</span>
+<a name="line-391"></a> <span class="p">{</span>
+<a name="line-392"></a> <span class="k">return</span> <span class="n">info</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="p">}</span>
+<a name="line-396"></a>
+<a name="line-397"></a> <span class="k">return</span> <span class="n">CamItemInfo</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">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">camItemInfos</span><span class="p">(</span><span class="k">const</span> <span class="n">QUrl</span><span class="o">&amp;</span> <span class="n">fileUrl</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-401"></a><span class="p">{</span>
+<a name="line-402"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;</span> <span class="n">infos</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="n">d</span><span class="o">-&gt;</span><span class="n">keepFileUrlCache</span><span class="p">)</span>
+<a name="line-405"></a> <span class="p">{</span>
+<a name="line-406"></a> <span class="n">qlonglong</span> <span class="n">id</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileUrlHash</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">fileUrl</span><span class="p">.</span><span class="n">toLocalFile</span><span class="p">());</span>
+<a name="line-407"></a>
+<a name="line-408"></a> <span class="k">if</span> <span class="p">(</span><span class="n">id</span><span class="p">)</span>
+<a name="line-409"></a> <span class="p">{</span>
+<a name="line-410"></a> <span class="n">foreach</span> <span class="p">(</span><span class="kt">int</span> <span class="n">index</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">idHash</span><span class="p">.</span><span class="n">values</span><span class="p">(</span><span class="n">id</span><span class="p">))</span>
+<a name="line-411"></a> <span class="p">{</span>
+<a name="line-412"></a> <span class="n">infos</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">index</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> <span class="p">}</span>
+<a name="line-416"></a> <span class="k">else</span>
+<a name="line-417"></a> <span class="p">{</span>
+<a name="line-418"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">)</span>
+<a name="line-419"></a> <span class="p">{</span>
+<a name="line-420"></a> <span class="k">if</span> <span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">url</span><span class="p">()</span> <span class="o">==</span> <span class="n">fileUrl</span><span class="p">)</span>
+<a name="line-421"></a> <span class="p">{</span>
+<a name="line-422"></a> <span class="n">infos</span> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">;</span>
+<a name="line-423"></a> <span class="p">}</span>
+<a name="line-424"></a> <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">return</span> <span class="n">infos</span><span class="p">;</span>
+<a name="line-428"></a><span class="p">}</span>
+<a name="line-429"></a>
+<a name="line-430"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">addCamItemInfo</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">)</span>
+<a name="line-431"></a><span class="p">{</span>
+<a name="line-432"></a> <span class="n">addCamItemInfos</span><span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">);</span>
+<a name="line-433"></a><span class="p">}</span>
+<a name="line-434"></a>
+<a name="line-435"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">addCamItemInfos</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfoList</span><span class="o">&amp;</span> <span class="n">infos</span><span class="p">)</span>
+<a name="line-436"></a><span class="p">{</span>
+<a name="line-437"></a> <span class="k">if</span> <span class="p">(</span><span class="n">infos</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="k">return</span><span class="p">;</span>
+<a name="line-440"></a> <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">d</span><span class="o">-&gt;</span><span class="n">incrementalUpdater</span><span class="p">)</span>
+<a name="line-443"></a> <span class="p">{</span>
+<a name="line-444"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalUpdater</span><span class="o">-&gt;</span><span class="n">appendInfos</span><span class="p">(</span><span class="n">infos</span><span class="p">);</span>
+<a name="line-445"></a> <span class="p">}</span>
+<a name="line-446"></a> <span class="k">else</span>
+<a name="line-447"></a> <span class="p">{</span>
+<a name="line-448"></a> <span class="n">appendInfos</span><span class="p">(</span><span class="n">infos</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="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">addCamItemInfoSynchronously</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">)</span>
+<a name="line-453"></a><span class="p">{</span>
+<a name="line-454"></a> <span class="n">addCamItemInfosSynchronously</span><span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">info</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="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">addCamItemInfosSynchronously</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfoList</span><span class="o">&amp;</span> <span class="n">infos</span><span class="p">)</span>
+<a name="line-458"></a><span class="p">{</span>
+<a name="line-459"></a> <span class="k">if</span> <span class="p">(</span><span class="n">infos</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-460"></a> <span class="p">{</span>
+<a name="line-461"></a> <span class="k">return</span><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="n">publiciseInfos</span><span class="p">(</span><span class="n">infos</span><span class="p">);</span>
+<a name="line-465"></a> <span class="n">emit</span> <span class="nf">processAdded</span><span class="p">(</span><span class="n">infos</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">ImportItemModel</span><span class="o">::</span><span class="n">clearCamItemInfos</span><span class="p">()</span>
+<a name="line-469"></a><span class="p">{</span>
+<a name="line-470"></a> <span class="n">beginResetModel</span><span class="p">();</span>
+<a name="line-471"></a>
+<a name="line-472"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
+<a name="line-473"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">idHash</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
+<a name="line-474"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileUrlHash</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
+<a name="line-475"></a>
+<a name="line-476"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalUpdater</span><span class="p">;</span>
+<a name="line-477"></a>
+<a name="line-478"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalUpdater</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-479"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reAdding</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-480"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">refreshing</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-481"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalRefreshRequested</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-482"></a>
+<a name="line-483"></a> <span class="n">camItemInfosCleared</span><span class="p">();</span>
+<a name="line-484"></a> <span class="n">endResetModel</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="c1">// TODO unused</span>
+<a name="line-488"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">setCamItemInfos</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfoList</span><span class="o">&amp;</span> <span class="n">infos</span><span class="p">)</span>
+<a name="line-489"></a><span class="p">{</span>
+<a name="line-490"></a> <span class="n">clearCamItemInfos</span><span class="p">();</span>
+<a name="line-491"></a> <span class="n">addCamItemInfos</span><span class="p">(</span><span class="n">infos</span><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">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">camItemInfos</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-495"></a><span class="p">{</span>
+<a name="line-496"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">;</span>
+<a name="line-497"></a><span class="p">}</span>
+<a name="line-498"></a>
+<a name="line-499"></a><span class="n">QList</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="o">&gt;</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">camItemIds</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-500"></a><span class="p">{</span>
+<a name="line-501"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">idHash</span><span class="p">.</span><span class="n">keys</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">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">uniqueCamItemInfos</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-505"></a><span class="p">{</span>
+<a name="line-506"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;</span> <span class="n">uniqueInfos</span><span class="p">;</span>
+<a name="line-507"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">size</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">size</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="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">size</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-510"></a> <span class="p">{</span>
+<a name="line-511"></a> <span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</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-512"></a>
+<a name="line-513"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">idHash</span><span class="p">.</span><span class="n">value</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="o">==</span> <span class="n">i</span><span class="p">)</span>
+<a name="line-514"></a> <span class="p">{</span>
+<a name="line-515"></a> <span class="n">uniqueInfos</span> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">;</span>
+<a name="line-516"></a> <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">uniqueInfos</span><span class="p">;</span>
+<a name="line-520"></a><span class="p">}</span>
+<a name="line-521"></a>
+<a name="line-522"></a><span class="kt">bool</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">hasImage</span><span class="p">(</span><span class="n">qlonglong</span> <span class="n">id</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-523"></a><span class="p">{</span>
+<a name="line-524"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">idHash</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-525"></a><span class="p">}</span>
+<a name="line-526"></a>
+<a name="line-527"></a><span class="kt">bool</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">hasImage</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-528"></a><span class="p">{</span>
+<a name="line-529"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileUrlHash</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">url</span><span class="p">().</span><span class="n">toLocalFile</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="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">emitDataChangedForAll</span><span class="p">()</span>
+<a name="line-533"></a><span class="p">{</span>
+<a name="line-534"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-535"></a> <span class="p">{</span>
+<a name="line-536"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-537"></a> <span class="p">}</span>
+<a name="line-538"></a>
+<a name="line-539"></a> <span class="n">QModelIndex</span> <span class="n">first</span> <span class="o">=</span> <span class="n">createIndex</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-540"></a> <span class="n">QModelIndex</span> <span class="n">last</span> <span class="o">=</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">size</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-541"></a> <span class="n">emit</span> <span class="nf">dataChanged</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-542"></a><span class="p">}</span>
+<a name="line-543"></a>
+<a name="line-544"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">emitDataChangedForSelections</span><span class="p">(</span><span class="k">const</span> <span class="n">QItemSelection</span><span class="o">&amp;</span> <span class="n">selection</span><span class="p">)</span>
+<a name="line-545"></a><span class="p">{</span>
+<a name="line-546"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">selection</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-547"></a> <span class="p">{</span>
+<a name="line-548"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">QItemSelectionRange</span><span class="o">&amp;</span> <span class="n">range</span><span class="p">,</span> <span class="n">selection</span><span class="p">)</span>
+<a name="line-549"></a> <span class="p">{</span>
+<a name="line-550"></a> <span class="n">emit</span> <span class="n">dataChanged</span><span class="p">(</span><span class="n">range</span><span class="p">.</span><span class="n">topLeft</span><span class="p">(),</span> <span class="n">range</span><span class="p">.</span><span class="n">bottomRight</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><span class="p">}</span>
+<a name="line-554"></a>
+<a name="line-555"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">appendInfos</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfoList</span><span class="o">&amp;</span> <span class="n">infos</span><span class="p">)</span>
+<a name="line-556"></a><span class="p">{</span>
+<a name="line-557"></a> <span class="k">if</span> <span class="p">(</span><span class="n">infos</span><span class="p">.</span><span class="n">isEmpty</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="p">;</span>
+<a name="line-560"></a> <span class="p">}</span>
+<a name="line-561"></a>
+<a name="line-562"></a> <span class="n">publiciseInfos</span><span class="p">(</span><span class="n">infos</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="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">reAddCamItemInfos</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfoList</span><span class="o">&amp;</span> <span class="n">infos</span><span class="p">)</span>
+<a name="line-566"></a><span class="p">{</span>
+<a name="line-567"></a> <span class="n">publiciseInfos</span><span class="p">(</span><span class="n">infos</span><span class="p">);</span>
+<a name="line-568"></a><span class="p">}</span>
+<a name="line-569"></a>
+<a name="line-570"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">reAddingFinished</span><span class="p">()</span>
+<a name="line-571"></a><span class="p">{</span>
+<a name="line-572"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reAdding</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-573"></a> <span class="n">cleanSituationChecks</span><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="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">slotFileDeleted</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> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">file</span><span class="p">,</span> <span class="kt">bool</span> <span class="n">status</span><span class="p">)</span>
+<a name="line-577"></a><span class="p">{</span>
+<a name="line-578"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">status</span><span class="p">)</span>
+<a name="line-579"></a>
+<a name="line-580"></a> <span class="n">QUrl</span> <span class="n">url</span> <span class="o">=</span> <span class="n">QUrl</span><span class="o">::</span><span class="n">fromLocalFile</span><span class="p">(</span><span class="n">folder</span><span class="p">);</span>
+<a name="line-581"></a> <span class="n">url</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">StripTrailingSlash</span><span class="p">);</span>
+<a name="line-582"></a> <span class="n">url</span><span class="p">.</span><span class="n">setPath</span><span class="p">(</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">file</span><span class="p">);</span>
+<a name="line-583"></a> <span class="n">CamItemInfo</span> <span class="n">info</span> <span class="o">=</span> <span class="n">camItemInfo</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
+<a name="line-584"></a> <span class="n">removeCamItemInfo</span><span class="p">(</span><span class="n">info</span><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="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">slotFileUploaded</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">)</span>
+<a name="line-588"></a><span class="p">{</span>
+<a name="line-589"></a> <span class="n">addCamItemInfo</span><span class="p">(</span><span class="n">info</span><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="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">startRefresh</span><span class="p">()</span>
+<a name="line-593"></a><span class="p">{</span>
+<a name="line-594"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">refreshing</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-595"></a><span class="p">}</span>
+<a name="line-596"></a>
+<a name="line-597"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">finishRefresh</span><span class="p">()</span>
+<a name="line-598"></a><span class="p">{</span>
+<a name="line-599"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">refreshing</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-600"></a> <span class="n">cleanSituationChecks</span><span class="p">();</span>
+<a name="line-601"></a><span class="p">}</span>
+<a name="line-602"></a>
+<a name="line-603"></a><span class="kt">bool</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">isRefreshing</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-604"></a><span class="p">{</span>
+<a name="line-605"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">refreshing</span><span class="p">;</span>
+<a name="line-606"></a><span class="p">}</span>
+<a name="line-607"></a>
+<a name="line-608"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">cleanSituationChecks</span><span class="p">()</span>
+<a name="line-609"></a><span class="p">{</span>
+<a name="line-610"></a> <span class="c1">// For starting an incremental refresh we want a clear situation:</span>
+<a name="line-611"></a> <span class="c1">// Any remaining batches from non-incremental refreshing subclasses have been received in appendInfos(),</span>
+<a name="line-612"></a> <span class="c1">// any batches sent to preprocessor for re-adding have been re-added.</span>
+<a name="line-613"></a>
+<a name="line-614"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">refreshing</span> <span class="o">||</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reAdding</span><span class="p">)</span>
+<a name="line-615"></a> <span class="p">{</span>
+<a name="line-616"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-617"></a> <span class="p">}</span>
+<a name="line-618"></a>
+<a name="line-619"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalRefreshRequested</span><span class="p">)</span>
+<a name="line-620"></a> <span class="p">{</span>
+<a name="line-621"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalRefreshRequested</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-622"></a> <span class="n">emit</span> <span class="nf">readyForIncrementalRefresh</span><span class="p">();</span>
+<a name="line-623"></a> <span class="p">}</span>
+<a name="line-624"></a> <span class="k">else</span>
+<a name="line-625"></a> <span class="p">{</span>
+<a name="line-626"></a> <span class="n">emit</span> <span class="n">allRefreshingFinished</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="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">publiciseInfos</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfoList</span><span class="o">&amp;</span> <span class="n">infos</span><span class="p">)</span>
+<a name="line-631"></a><span class="p">{</span>
+<a name="line-632"></a> <span class="k">if</span> <span class="p">(</span><span class="n">infos</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-633"></a> <span class="p">{</span>
+<a name="line-634"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-635"></a> <span class="p">}</span>
+<a name="line-636"></a>
+<a name="line-637"></a> <span class="n">emit</span> <span class="n">itemInfosAboutToBeAdded</span><span class="p">(</span><span class="n">infos</span><span class="p">);</span>
+<a name="line-638"></a>
+<a name="line-639"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">firstNewIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
+<a name="line-640"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">lastNewIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">+</span> <span class="n">infos</span><span class="p">.</span><span class="n">size</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">beginInsertRows</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">(),</span> <span class="n">firstNewIndex</span><span class="p">,</span> <span class="n">lastNewIndex</span><span class="p">);</span>
+<a name="line-642"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span> <span class="o">&lt;&lt;</span> <span class="n">infos</span><span class="p">;</span>
+<a name="line-643"></a>
+<a name="line-644"></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">firstNewIndex</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;=</span> <span class="n">lastNewIndex</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-645"></a> <span class="p">{</span>
+<a name="line-646"></a> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
+<a name="line-647"></a>
+<a name="line-648"></a> <span class="c1">// TODO move this to a separate thread, see CameraHistoryUpdater</span>
+<a name="line-649"></a> <span class="c1">// TODO can we/do we want to differentiate at all between whether the status is unknown and not downloaded?</span>
+<a name="line-650"></a>
+<a name="line-651"></a> <span class="n">info</span><span class="p">.</span><span class="n">downloaded</span> <span class="o">=</span> <span class="n">CoreDbDownloadHistory</span><span class="o">::</span><span class="n">status</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">d</span><span class="o">-&gt;</span><span class="n">controller</span><span class="o">-&gt;</span><span class="n">cameraMD5ID</span><span class="p">()),</span> <span class="n">info</span><span class="p">.</span><span class="n">name</span><span class="p">,</span> <span class="n">info</span><span class="p">.</span><span class="n">size</span><span class="p">,</span> <span class="n">info</span><span class="p">.</span><span class="n">ctime</span><span class="p">);</span>
+<a name="line-652"></a>
+<a name="line-653"></a> <span class="c1">// TODO is this safe? if so, is there a need to store this inside idHash separately?</span>
+<a name="line-654"></a>
+<a name="line-655"></a> <span class="n">info</span><span class="p">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
+<a name="line-656"></a> <span class="n">qlonglong</span> <span class="n">id</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">id</span><span class="p">;</span>
+<a name="line-657"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">idHash</span><span class="p">.</span><span class="n">insertMulti</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
+<a name="line-658"></a>
+<a name="line-659"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">keepFileUrlCache</span><span class="p">)</span>
+<a name="line-660"></a> <span class="p">{</span>
+<a name="line-661"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileUrlHash</span><span class="p">[</span><span class="n">info</span><span class="p">.</span><span class="n">url</span><span class="p">().</span><span class="n">toLocalFile</span><span class="p">()]</span> <span class="o">=</span> <span class="n">id</span><span class="p">;</span>
+<a name="line-662"></a> <span class="p">}</span>
+<a name="line-663"></a> <span class="p">}</span>
+<a name="line-664"></a>
+<a name="line-665"></a> <span class="n">endInsertRows</span><span class="p">();</span>
+<a name="line-666"></a> <span class="n">emit</span> <span class="nf">processAdded</span><span class="p">(</span><span class="n">infos</span><span class="p">);</span>
+<a name="line-667"></a> <span class="n">emit</span> <span class="nf">itemInfosAdded</span><span class="p">(</span><span class="n">infos</span><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="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">requestIncrementalRefresh</span><span class="p">()</span>
+<a name="line-671"></a><span class="p">{</span>
+<a name="line-672"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">reAdding</span><span class="p">)</span>
+<a name="line-673"></a> <span class="p">{</span>
+<a name="line-674"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalRefreshRequested</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-675"></a> <span class="p">}</span>
+<a name="line-676"></a> <span class="k">else</span>
+<a name="line-677"></a> <span class="p">{</span>
+<a name="line-678"></a> <span class="n">emit</span> <span class="n">readyForIncrementalRefresh</span><span class="p">();</span>
+<a name="line-679"></a> <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="kt">bool</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">hasIncrementalRefreshPending</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-683"></a><span class="p">{</span>
+<a name="line-684"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalRefreshRequested</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">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">startIncrementalRefresh</span><span class="p">()</span>
+<a name="line-688"></a><span class="p">{</span>
+<a name="line-689"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalUpdater</span><span class="p">;</span>
+<a name="line-690"></a>
+<a name="line-691"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalUpdater</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ImportItemModelIncrementalUpdater</span><span class="p">(</span><span class="n">d</span><span class="p">);</span>
+<a name="line-692"></a><span class="p">}</span>
+<a name="line-693"></a>
+<a name="line-694"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">finishIncrementalRefresh</span><span class="p">()</span>
+<a name="line-695"></a><span class="p">{</span>
+<a name="line-696"></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">incrementalUpdater</span><span class="p">)</span>
+<a name="line-697"></a> <span class="p">{</span>
+<a name="line-698"></a> <span class="k">return</span><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="c1">// remove old entries</span>
+<a name="line-702"></a>
+<a name="line-703"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QPair</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">&gt;</span> <span class="n">pairs</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalUpdater</span><span class="o">-&gt;</span><span class="n">oldIndexes</span><span class="p">();</span>
+<a name="line-704"></a> <span class="n">removeRowPairs</span><span class="p">(</span><span class="n">pairs</span><span class="p">);</span>
+<a name="line-705"></a>
+<a name="line-706"></a> <span class="c1">// add new indexes</span>
+<a name="line-707"></a>
+<a name="line-708"></a> <span class="n">appendInfos</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalUpdater</span><span class="o">-&gt;</span><span class="n">newInfos</span><span class="p">);</span>
+<a name="line-709"></a>
+<a name="line-710"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalUpdater</span><span class="p">;</span>
+<a name="line-711"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalUpdater</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-712"></a><span class="p">}</span>
+<a name="line-713"></a>
+<a name="line-714"></a><span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc">List</span><span class="p">,</span> <span class="k">typename</span> <span class="n">T</span><span class="o">&gt;</span>
+<a name="line-715"></a><span class="k">static</span> <span class="kt">bool</span> <span class="n">pairsContain</span><span class="p">(</span><span class="k">const</span> <span class="n">List</span><span class="o">&amp;</span> <span class="n">list</span><span class="p">,</span> <span class="n">T</span> <span class="n">value</span><span class="p">)</span>
+<a name="line-716"></a><span class="p">{</span>
+<a name="line-717"></a> <span class="k">typename</span> <span class="n">List</span><span class="o">::</span><span class="n">const_iterator</span> <span class="n">middle</span><span class="p">;</span>
+<a name="line-718"></a> <span class="k">typename</span> <span class="n">List</span><span class="o">::</span><span class="n">const_iterator</span> <span class="n">begin</span> <span class="o">=</span> <span class="n">list</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span>
+<a name="line-719"></a> <span class="k">typename</span> <span class="n">List</span><span class="o">::</span><span class="n">const_iterator</span> <span class="n">end</span> <span class="o">=</span> <span class="n">list</span><span class="p">.</span><span class="n">end</span><span class="p">();</span>
+<a name="line-720"></a> <span class="kt">int</span> <span class="n">n</span> <span class="o">=</span> <span class="kt">int</span><span class="p">(</span><span class="n">end</span> <span class="o">-</span> <span class="n">begin</span><span class="p">);</span>
+<a name="line-721"></a>
+<a name="line-722"></a> <span class="k">while</span> <span class="p">(</span><span class="n">n</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="kt">int</span> <span class="n">half</span> <span class="o">=</span> <span class="p">(</span><span class="n">n</span> <span class="o">&gt;&gt;</span> <span class="mi">1</span><span class="p">);</span>
+<a name="line-725"></a> <span class="n">middle</span> <span class="o">=</span> <span class="n">begin</span> <span class="o">+</span> <span class="n">half</span><span class="p">;</span>
+<a name="line-726"></a>
+<a name="line-727"></a> <span class="k">if</span> <span class="p">((</span><span class="n">middle</span><span class="o">-&gt;</span><span class="n">first</span> <span class="o">&lt;=</span> <span class="n">value</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">middle</span><span class="o">-&gt;</span><span class="n">second</span> <span class="o">&gt;=</span> <span class="n">value</span><span class="p">))</span>
+<a name="line-728"></a> <span class="p">{</span>
+<a name="line-729"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-730"></a> <span class="p">}</span>
+<a name="line-731"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">middle</span><span class="o">-&gt;</span><span class="n">second</span> <span class="o">&lt;</span> <span class="n">value</span><span class="p">)</span>
+<a name="line-732"></a> <span class="p">{</span>
+<a name="line-733"></a> <span class="n">begin</span> <span class="o">=</span> <span class="n">middle</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
+<a name="line-734"></a> <span class="n">n</span> <span class="o">-=</span> <span class="n">half</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
+<a name="line-735"></a> <span class="p">}</span>
+<a name="line-736"></a> <span class="k">else</span>
+<a name="line-737"></a> <span class="p">{</span>
+<a name="line-738"></a> <span class="n">n</span> <span class="o">=</span> <span class="n">half</span><span class="p">;</span>
+<a name="line-739"></a> <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="nb">false</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">ImportItemModel</span><span class="o">::</span><span class="n">removeIndex</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-746"></a><span class="p">{</span>
+<a name="line-747"></a> <span class="n">removeIndexs</span><span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">QModelIndex</span><span class="o">&gt;</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">index</span><span class="p">);</span>
+<a name="line-748"></a><span class="p">}</span>
+<a name="line-749"></a>
+<a name="line-750"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">removeIndexs</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QModelIndex</span><span class="o">&gt;&amp;</span> <span class="n">indexes</span><span class="p">)</span>
+<a name="line-751"></a><span class="p">{</span>
+<a name="line-752"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">indexesList</span><span class="p">;</span>
+<a name="line-753"></a>
+<a name="line-754"></a> <span class="n">foreach</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="n">indexes</span><span class="p">)</span>
+<a name="line-755"></a> <span class="p">{</span>
+<a name="line-756"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">isValid</span><span class="p">(</span><span class="n">index</span><span class="p">))</span>
+<a name="line-757"></a> <span class="p">{</span>
+<a name="line-758"></a> <span class="n">indexesList</span> <span class="o">&lt;&lt;</span> <span class="n">index</span><span class="p">.</span><span class="n">row</span><span class="p">();</span>
+<a name="line-759"></a> <span class="p">}</span>
+<a name="line-760"></a> <span class="p">}</span>
+<a name="line-761"></a>
+<a name="line-762"></a> <span class="k">if</span> <span class="p">(</span><span class="n">indexesList</span><span class="p">.</span><span class="n">isEmpty</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="p">;</span>
+<a name="line-765"></a> <span class="p">}</span>
+<a name="line-766"></a>
+<a name="line-767"></a> <span class="n">removeRowPairsWithCheck</span><span class="p">(</span><span class="n">ImportItemModelIncrementalUpdater</span><span class="o">::</span><span class="n">toContiguousPairs</span><span class="p">(</span><span class="n">indexesList</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="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">removeCamItemInfo</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">)</span>
+<a name="line-771"></a><span class="p">{</span>
+<a name="line-772"></a> <span class="n">removeCamItemInfos</span><span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">info</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="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">removeCamItemInfos</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;&amp;</span> <span class="n">infos</span><span class="p">)</span>
+<a name="line-776"></a><span class="p">{</span>
+<a name="line-777"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">indexesList</span><span class="p">;</span>
+<a name="line-778"></a>
+<a name="line-779"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">,</span> <span class="n">infos</span><span class="p">)</span>
+<a name="line-780"></a> <span class="p">{</span>
+<a name="line-781"></a> <span class="n">QModelIndex</span> <span class="n">index</span> <span class="o">=</span> <span class="n">indexForCamItemId</span><span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">id</span><span class="p">);</span>
+<a name="line-782"></a>
+<a name="line-783"></a> <span class="k">if</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-784"></a> <span class="p">{</span>
+<a name="line-785"></a> <span class="n">indexesList</span> <span class="o">&lt;&lt;</span> <span class="n">index</span><span class="p">.</span><span class="n">row</span><span class="p">();</span>
+<a name="line-786"></a> <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="n">removeRowPairsWithCheck</span><span class="p">(</span><span class="n">ImportItemModelIncrementalUpdater</span><span class="o">::</span><span class="n">toContiguousPairs</span><span class="p">(</span><span class="n">indexesList</span><span class="p">));</span>
+<a name="line-790"></a><span class="p">}</span>
+<a name="line-791"></a>
+<a name="line-792"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">setSendRemovalSignals</span><span class="p">(</span><span class="kt">bool</span> <span class="n">send</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">sendRemovalSignals</span> <span class="o">=</span> <span class="n">send</span><span class="p">;</span>
+<a name="line-795"></a><span class="p">}</span>
+<a name="line-796"></a>
+<a name="line-797"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">removeRowPairsWithCheck</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QPair</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">&gt;&amp;</span> <span class="n">toRemove</span><span class="p">)</span>
+<a name="line-798"></a><span class="p">{</span>
+<a name="line-799"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalUpdater</span><span class="p">)</span>
+<a name="line-800"></a> <span class="p">{</span>
+<a name="line-801"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalUpdater</span><span class="o">-&gt;</span><span class="n">aboutToBeRemovedInModel</span><span class="p">(</span><span class="n">toRemove</span><span class="p">);</span>
+<a name="line-802"></a> <span class="p">}</span>
+<a name="line-803"></a>
+<a name="line-804"></a> <span class="n">removeRowPairs</span><span class="p">(</span><span class="n">toRemove</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">ImportItemModel</span><span class="o">::</span><span class="n">removeRowPairs</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QPair</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">&gt;&amp;</span> <span class="n">toRemove</span><span class="p">)</span>
+<a name="line-808"></a><span class="p">{</span>
+<a name="line-809"></a> <span class="k">if</span> <span class="p">(</span><span class="n">toRemove</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="k">return</span><span class="p">;</span>
+<a name="line-812"></a> <span class="p">}</span>
+<a name="line-813"></a>
+<a name="line-814"></a> <span class="c1">// Remove old indexes</span>
+<a name="line-815"></a> <span class="c1">// Keep in mind that when calling beginRemoveRows all structures announced to be removed</span>
+<a name="line-816"></a> <span class="c1">// must still be valid, and this includes our hashes as well, which limits what we can optimize</span>
+<a name="line-817"></a>
+<a name="line-818"></a> <span class="kt">int</span> <span class="n">removedRows</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-819"></a> <span class="kt">int</span> <span class="n">offset</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-820"></a>
+<a name="line-821"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">IntPair</span><span class="o">&amp;</span> <span class="n">pair</span><span class="p">,</span> <span class="n">toRemove</span><span class="p">)</span>
+<a name="line-822"></a> <span class="p">{</span>
+<a name="line-823"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">begin</span> <span class="o">=</span> <span class="n">pair</span><span class="p">.</span><span class="n">first</span> <span class="o">-</span> <span class="n">offset</span><span class="p">;</span>
+<a name="line-824"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">end</span> <span class="o">=</span> <span class="n">pair</span><span class="p">.</span><span class="n">second</span> <span class="o">-</span> <span class="n">offset</span><span class="p">;</span>
+<a name="line-825"></a> <span class="n">removedRows</span> <span class="o">=</span> <span class="n">end</span> <span class="o">-</span> <span class="n">begin</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
+<a name="line-826"></a>
+<a name="line-827"></a> <span class="c1">// when removing from the list, all subsequent indexes are affected</span>
+<a name="line-828"></a>
+<a name="line-829"></a> <span class="n">offset</span> <span class="o">+=</span> <span class="n">removedRows</span><span class="p">;</span>
+<a name="line-830"></a>
+<a name="line-831"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;</span> <span class="n">removedInfos</span><span class="p">;</span>
+<a name="line-832"></a>
+<a name="line-833"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sendRemovalSignals</span><span class="p">)</span>
+<a name="line-834"></a> <span class="p">{</span>
+<a name="line-835"></a> <span class="n">std</span><span class="o">::</span><span class="n">copy</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">begin</span><span class="p">()</span> <span class="o">+</span> <span class="n">begin</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">begin</span><span class="p">()</span> <span class="o">+</span> <span class="n">end</span><span class="p">,</span> <span class="n">removedInfos</span><span class="p">.</span><span class="n">begin</span><span class="p">());</span>
+<a name="line-836"></a> <span class="n">emit</span> <span class="nf">itemInfosAboutToBeRemoved</span><span class="p">(</span><span class="n">removedInfos</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="n">itemInfosAboutToBeRemoved</span><span class="p">(</span><span class="n">begin</span><span class="p">,</span> <span class="n">end</span><span class="p">);</span>
+<a name="line-840"></a> <span class="n">beginRemoveRows</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">(),</span> <span class="n">begin</span><span class="p">,</span> <span class="n">end</span><span class="p">);</span>
+<a name="line-841"></a>
+<a name="line-842"></a> <span class="c1">// update idHash - which points to indexes of d-&gt;infos</span>
+<a name="line-843"></a>
+<a name="line-844"></a> <span class="n">QHash</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;::</span><span class="n">iterator</span> <span class="n">it</span><span class="p">;</span>
+<a name="line-845"></a>
+<a name="line-846"></a> <span class="k">for</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">idHash</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">d</span><span class="o">-&gt;</span><span class="n">idHash</span><span class="p">.</span><span class="n">end</span><span class="p">()</span> <span class="p">;</span> <span class="p">)</span>
+<a name="line-847"></a> <span class="p">{</span>
+<a name="line-848"></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">begin</span><span class="p">)</span>
+<a name="line-849"></a> <span class="p">{</span>
+<a name="line-850"></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">end</span><span class="p">)</span>
+<a name="line-851"></a> <span class="p">{</span>
+<a name="line-852"></a> <span class="c1">// after the removed interval, adjust index</span>
+<a name="line-853"></a>
+<a name="line-854"></a> <span class="n">it</span><span class="p">.</span><span class="n">value</span><span class="p">()</span> <span class="o">-=</span> <span class="n">removedRows</span><span class="p">;</span>
+<a name="line-855"></a> <span class="p">}</span>
+<a name="line-856"></a> <span class="k">else</span>
+<a name="line-857"></a> <span class="p">{</span>
+<a name="line-858"></a> <span class="c1">// in the removed interval</span>
+<a name="line-859"></a>
+<a name="line-860"></a> <span class="n">it</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">idHash</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">it</span><span class="p">);</span>
+<a name="line-861"></a> <span class="k">continue</span><span class="p">;</span>
+<a name="line-862"></a> <span class="p">}</span>
+<a name="line-863"></a> <span class="p">}</span>
+<a name="line-864"></a>
+<a name="line-865"></a> <span class="o">++</span><span class="n">it</span><span class="p">;</span>
+<a name="line-866"></a> <span class="p">}</span>
+<a name="line-867"></a>
+<a name="line-868"></a> <span class="c1">// remove from list</span>
+<a name="line-869"></a>
+<a name="line-870"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">begin</span><span class="p">()</span> <span class="o">+</span> <span class="n">begin</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">begin</span><span class="p">()</span> <span class="o">+</span> <span class="p">(</span><span class="n">end</span> <span class="o">+</span> <span class="mi">1</span><span class="p">));</span>
+<a name="line-871"></a>
+<a name="line-872"></a> <span class="n">endRemoveRows</span><span class="p">();</span>
+<a name="line-873"></a>
+<a name="line-874"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sendRemovalSignals</span><span class="p">)</span>
+<a name="line-875"></a> <span class="p">{</span>
+<a name="line-876"></a> <span class="n">emit</span> <span class="n">itemInfosRemoved</span><span class="p">(</span><span class="n">removedInfos</span><span class="p">);</span>
+<a name="line-877"></a> <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="c1">// tidy up: remove old indexes from file path hash now</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">keepFileUrlCache</span><span class="p">)</span>
+<a name="line-883"></a> <span class="p">{</span>
+<a name="line-884"></a> <span class="n">QHash</span><span class="o">&lt;</span><span class="n">QString</span><span class="p">,</span> <span class="n">qlonglong</span><span class="o">&gt;::</span><span class="n">iterator</span> <span class="n">it</span><span class="p">;</span>
+<a name="line-885"></a>
+<a name="line-886"></a> <span class="k">for</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">fileUrlHash</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">d</span><span class="o">-&gt;</span><span class="n">fileUrlHash</span><span class="p">.</span><span class="n">end</span><span class="p">()</span> <span class="p">;</span> <span class="p">)</span>
+<a name="line-887"></a> <span class="p">{</span>
+<a name="line-888"></a> <span class="k">if</span> <span class="p">(</span><span class="n">pairsContain</span><span class="p">(</span><span class="n">toRemove</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-889"></a> <span class="p">{</span>
+<a name="line-890"></a> <span class="n">it</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileUrlHash</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">it</span><span class="p">);</span>
+<a name="line-891"></a> <span class="p">}</span>
+<a name="line-892"></a> <span class="k">else</span>
+<a name="line-893"></a> <span class="p">{</span>
+<a name="line-894"></a> <span class="o">++</span><span class="n">it</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="p">}</span>
+<a name="line-899"></a>
+<a name="line-900"></a><span class="c1">// ------------ ImportItemModelIncrementalUpdater ------------</span>
+<a name="line-901"></a>
+<a name="line-902"></a><span class="n">ImportItemModelIncrementalUpdater</span><span class="o">::</span><span class="n">ImportItemModelIncrementalUpdater</span><span class="p">(</span><span class="n">ImportItemModel</span><span class="o">::</span><span class="n">Private</span><span class="o">*</span> <span class="k">const</span> <span class="n">d</span><span class="p">)</span>
+<a name="line-903"></a><span class="p">{</span>
+<a name="line-904"></a><span class="hll"> <span class="n">oldIds</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">idHash</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'oldIds' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;oldIds&apos; a value by passing the value to the constructor in the initialization list.</div></div>
+</span><a name="line-905"></a><span class="p">}</span>
+<a name="line-906"></a>
+<a name="line-907"></a><span class="kt">void</span> <span class="n">ImportItemModelIncrementalUpdater</span><span class="o">::</span><span class="n">aboutToBeRemovedInModel</span><span class="p">(</span><span class="k">const</span> <span class="n">IntPairList</span><span class="o">&amp;</span> <span class="n">toRemove</span><span class="p">)</span>
+<a name="line-908"></a><span class="p">{</span>
+<a name="line-909"></a> <span class="n">modelRemovals</span> <span class="o">&lt;&lt;</span> <span class="n">toRemove</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="kt">void</span> <span class="n">ImportItemModelIncrementalUpdater</span><span class="o">::</span><span class="n">appendInfos</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;&amp;</span> <span class="n">infos</span><span class="p">)</span>
+<a name="line-913"></a><span class="p">{</span>
+<a name="line-914"></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">infos</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-915"></a> <span class="p">{</span>
+<a name="line-916"></a> <span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span> <span class="o">=</span> <span class="n">infos</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-917"></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-918"></a> <span class="n">QHash</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;::</span><span class="n">iterator</span> <span class="n">it</span><span class="p">;</span>
+<a name="line-919"></a>
+<a name="line-920"></a> <span class="k">for</span> <span class="p">(</span><span class="n">it</span> <span class="o">=</span> <span class="n">oldIds</span><span class="p">.</span><span class="n">find</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="p">;</span> <span class="n">it</span> <span class="o">!=</span> <span class="n">oldIds</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-921"></a> <span class="p">{</span>
+<a name="line-922"></a> <span class="k">if</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="o">==</span> <span class="n">info</span><span class="p">.</span><span class="n">id</span><span class="p">)</span>
+<a name="line-923"></a> <span class="p">{</span>
+<a name="line-924"></a> <span class="n">found</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
+<a name="line-925"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-926"></a> <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">if</span> <span class="p">(</span><span class="n">found</span><span class="p">)</span>
+<a name="line-930"></a> <span class="p">{</span>
+<a name="line-931"></a> <span class="n">oldIds</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">it</span><span class="p">);</span>
+<a name="line-932"></a> <span class="p">}</span>
+<a name="line-933"></a> <span class="k">else</span>
+<a name="line-934"></a> <span class="p">{</span>
+<a name="line-935"></a> <span class="n">newInfos</span> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">;</span>
+<a name="line-936"></a> <span class="p">}</span>
+<a name="line-937"></a> <span class="p">}</span>
+<a name="line-938"></a><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="kt">int</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">ImportItemModelIncrementalUpdater</span><span class="o">::</span><span class="n">toContiguousPairs</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;&amp;</span> <span class="n">unsorted</span><span class="p">)</span>
+<a name="line-941"></a><span class="p">{</span>
+<a name="line-942"></a> <span class="c1">// Take the given indices and return them as contiguous pairs [begin, end]</span>
+<a name="line-943"></a>
+<a name="line-944"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QPair</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">&gt;</span> <span class="n">pairs</span><span class="p">;</span>
+<a name="line-945"></a>
+<a name="line-946"></a> <span class="k">if</span> <span class="p">(</span><span class="n">unsorted</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
+<a name="line-947"></a> <span class="p">{</span>
+<a name="line-948"></a> <span class="k">return</span> <span class="n">pairs</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="n">QList</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">indices</span><span class="p">(</span><span class="n">unsorted</span><span class="p">);</span>
+<a name="line-952"></a> <span class="n">std</span><span class="o">::</span><span class="n">sort</span><span class="p">(</span><span class="n">indices</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span> <span class="n">indices</span><span class="p">.</span><span class="n">end</span><span class="p">());</span>
+<a name="line-953"></a>
+<a name="line-954"></a> <span class="n">QPair</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="n">pair</span><span class="p">(</span><span class="n">indices</span><span class="p">.</span><span class="n">first</span><span class="p">(),</span> <span class="n">indices</span><span class="p">.</span><span class="n">first</span><span class="p">());</span>
+<a name="line-955"></a>
+<a name="line-956"></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">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-957"></a> <span class="p">{</span>
+<a name="line-958"></a> <span class="k">const</span> <span class="kt">int</span> <span class="o">&amp;</span><span class="n">index</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>
+<a name="line-959"></a>
+<a name="line-960"></a> <span class="k">if</span> <span class="p">(</span><span class="n">index</span> <span class="o">==</span> <span class="n">pair</span><span class="p">.</span><span class="n">second</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
+<a name="line-961"></a> <span class="p">{</span>
+<a name="line-962"></a> <span class="n">pair</span><span class="p">.</span><span class="n">second</span> <span class="o">=</span> <span class="n">index</span><span class="p">;</span>
+<a name="line-963"></a> <span class="k">continue</span><span class="p">;</span>
+<a name="line-964"></a> <span class="p">}</span>
+<a name="line-965"></a>
+<a name="line-966"></a> <span class="n">pairs</span> <span class="o">&lt;&lt;</span> <span class="n">pair</span><span class="p">;</span> <span class="c1">// insert last pair</span>
+<a name="line-967"></a> <span class="n">pair</span><span class="p">.</span><span class="n">first</span> <span class="o">=</span> <span class="n">index</span><span class="p">;</span>
+<a name="line-968"></a> <span class="n">pair</span><span class="p">.</span><span class="n">second</span> <span class="o">=</span> <span class="n">index</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="n">pairs</span> <span class="o">&lt;&lt;</span> <span class="n">pair</span><span class="p">;</span>
+<a name="line-972"></a>
+<a name="line-973"></a> <span class="k">return</span> <span class="n">pairs</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="n">QList</span><span class="o">&lt;</span><span class="n">QPair</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">&gt;</span> <span class="n">ImportItemModelIncrementalUpdater</span><span class="o">::</span><span class="n">oldIndexes</span><span class="p">()</span>
+<a name="line-977"></a><span class="p">{</span>
+<a name="line-978"></a> <span class="c1">// first, apply all changes to indexes by direct removal in model</span>
+<a name="line-979"></a> <span class="c1">// while the updater was active</span>
+<a name="line-980"></a>
+<a name="line-981"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">IntPairList</span><span class="o">&amp;</span> <span class="n">list</span><span class="p">,</span> <span class="n">modelRemovals</span><span class="p">)</span>
+<a name="line-982"></a> <span class="p">{</span>
+<a name="line-983"></a> <span class="kt">int</span> <span class="n">removedRows</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-984"></a> <span class="kt">int</span> <span class="n">offset</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-985"></a>
+<a name="line-986"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">IntPair</span><span class="o">&amp;</span> <span class="n">pair</span><span class="p">,</span> <span class="n">list</span><span class="p">)</span>
+<a name="line-987"></a> <span class="p">{</span>
+<a name="line-988"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">begin</span> <span class="o">=</span> <span class="n">pair</span><span class="p">.</span><span class="n">first</span> <span class="o">-</span> <span class="n">offset</span><span class="p">;</span>
+<a name="line-989"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">end</span> <span class="o">=</span> <span class="n">pair</span><span class="p">.</span><span class="n">second</span> <span class="o">-</span> <span class="n">offset</span><span class="p">;</span> <span class="c1">// inclusive</span>
+<a name="line-990"></a> <span class="n">removedRows</span> <span class="o">=</span> <span class="n">end</span> <span class="o">-</span> <span class="n">begin</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
+<a name="line-991"></a>
+<a name="line-992"></a> <span class="c1">// when removing from the list, all subsequent indexes are affected</span>
+<a name="line-993"></a>
+<a name="line-994"></a> <span class="n">offset</span> <span class="o">+=</span> <span class="n">removedRows</span><span class="p">;</span>
+<a name="line-995"></a>
+<a name="line-996"></a> <span class="c1">// update idHash - which points to indexes of d-&gt;infos, and these change now!</span>
+<a name="line-997"></a>
+<a name="line-998"></a> <span class="n">QHash</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;::</span><span class="n">iterator</span> <span class="n">it</span><span class="p">;</span>
+<a name="line-999"></a>
+<a name="line-1000"></a> <span class="k">for</span> <span class="p">(</span><span class="n">it</span> <span class="o">=</span> <span class="n">oldIds</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">oldIds</span><span class="p">.</span><span class="n">end</span><span class="p">()</span> <span class="p">;</span> <span class="p">)</span>
+<a name="line-1001"></a> <span class="p">{</span>
+<a name="line-1002"></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">begin</span><span class="p">)</span>
+<a name="line-1003"></a> <span class="p">{</span>
+<a name="line-1004"></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">end</span><span class="p">)</span>
+<a name="line-1005"></a> <span class="p">{</span>
+<a name="line-1006"></a> <span class="c1">// after the removed interval: adjust index</span>
+<a name="line-1007"></a>
+<a name="line-1008"></a> <span class="n">it</span><span class="p">.</span><span class="n">value</span><span class="p">()</span> <span class="o">-=</span> <span class="n">removedRows</span><span class="p">;</span>
+<a name="line-1009"></a> <span class="p">}</span>
+<a name="line-1010"></a> <span class="k">else</span>
+<a name="line-1011"></a> <span class="p">{</span>
+<a name="line-1012"></a> <span class="c1">// in the removed interval</span>
+<a name="line-1013"></a>
+<a name="line-1014"></a> <span class="n">it</span> <span class="o">=</span> <span class="n">oldIds</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">it</span><span class="p">);</span>
+<a name="line-1015"></a> <span class="k">continue</span><span class="p">;</span>
+<a name="line-1016"></a> <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="o">++</span><span class="n">it</span><span class="p">;</span>
+<a name="line-1020"></a> <span class="p">}</span>
+<a name="line-1021"></a> <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">modelRemovals</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
+<a name="line-1025"></a>
+<a name="line-1026"></a> <span class="k">return</span> <span class="nf">toContiguousPairs</span><span class="p">(</span><span class="n">oldIds</span><span class="p">.</span><span class="n">values</span><span class="p">());</span>
+<a name="line-1027"></a><span class="p">}</span>
+<a name="line-1028"></a>
+<a name="line-1029"></a><span class="c1">// ------------ QAbstractItemModel implementation -------------</span>
+<a name="line-1030"></a>
+<a name="line-1031"></a><span class="n">QVariant</span> <span class="n">ImportItemModel</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-1032"></a><span class="p">{</span>
+<a name="line-1033"></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">isValid</span><span class="p">(</span><span class="n">index</span><span class="p">))</span>
+<a name="line-1034"></a> <span class="p">{</span>
+<a name="line-1035"></a> <span class="k">return</span> <span class="n">QVariant</span><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">switch</span><span class="p">(</span><span class="n">role</span><span class="p">)</span>
+<a name="line-1039"></a> <span class="p">{</span>
+<a name="line-1040"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">DisplayRole</span><span class="p">:</span>
+<a name="line-1041"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">ToolTipRole</span><span class="p">:</span>
+<a name="line-1042"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">index</span><span class="p">.</span><span class="n">row</span><span class="p">()).</span><span class="n">name</span><span class="p">;</span>
+<a name="line-1043"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-1044"></a>
+<a name="line-1045"></a> <span class="k">case</span> <span class="nl">ImportItemModelPointerRole</span><span class="p">:</span>
+<a name="line-1046"></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="k">const_cast</span><span class="o">&lt;</span><span class="n">ImportItemModel</span><span class="o">*&gt;</span><span class="p">(</span><span class="k">this</span><span class="p">));</span>
+<a name="line-1047"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-1048"></a>
+<a name="line-1049"></a> <span class="k">case</span> <span class="nl">ImportItemModelInternalId</span><span class="p">:</span>
+<a name="line-1050"></a> <span class="k">return</span> <span class="n">index</span><span class="p">.</span><span class="n">row</span><span class="p">();</span>
+<a name="line-1051"></a> <span class="k">break</span><span class="p">;</span>
+<a name="line-1052"></a> <span class="p">}</span>
+<a name="line-1053"></a>
+<a name="line-1054"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="p">();</span>
+<a name="line-1055"></a><span class="p">}</span>
+<a name="line-1056"></a>
+<a name="line-1057"></a><span class="n">QVariant</span> <span class="n">ImportItemModel</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-1058"></a><span class="p">{</span>
+<a name="line-1059"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">section</span><span class="p">)</span>
+<a name="line-1060"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">orientation</span><span class="p">)</span>
+<a name="line-1061"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">role</span><span class="p">)</span>
+<a name="line-1062"></a>
+<a name="line-1063"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="p">();</span>
+<a name="line-1064"></a><span class="p">}</span>
+<a name="line-1065"></a>
+<a name="line-1066"></a><span class="kt">int</span> <span class="n">ImportItemModel</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-1067"></a><span class="p">{</span>
+<a name="line-1068"></a> <span class="k">if</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-1069"></a> <span class="p">{</span>
+<a name="line-1070"></a> <span class="k">return</span> <span class="mi">0</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">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">size</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="n">Qt</span><span class="o">::</span><span class="n">ItemFlags</span> <span class="n">ImportItemModel</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-1077"></a><span class="p">{</span>
+<a name="line-1078"></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">isValid</span><span class="p">(</span><span class="n">index</span><span class="p">))</span>
+<a name="line-1079"></a> <span class="p">{</span>
+<a name="line-1080"></a> <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-1081"></a> <span class="p">}</span>
+<a name="line-1082"></a>
+<a name="line-1083"></a> <span class="n">Qt</span><span class="o">::</span><span class="n">ItemFlags</span> <span class="n">f</span> <span class="o">=</span> <span class="n">Qt</span><span class="o">::</span><span class="n">ItemIsSelectable</span> <span class="o">|</span> <span class="n">Qt</span><span class="o">::</span><span class="n">ItemIsEnabled</span><span class="p">;</span>
+<a name="line-1084"></a>
+<a name="line-1085"></a> <span class="n">f</span> <span class="o">|=</span> <span class="n">dragDropFlags</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
+<a name="line-1086"></a>
+<a name="line-1087"></a> <span class="k">return</span> <span class="n">f</span><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="n">QModelIndex</span> <span class="n">ImportItemModel</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-1091"></a><span class="p">{</span>
+<a name="line-1092"></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> <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="p">(</span><span class="n">row</span> <span class="o">&gt;=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">size</span><span class="p">()))</span>
+<a name="line-1093"></a> <span class="p">{</span>
+<a name="line-1094"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
+<a name="line-1095"></a> <span class="p">}</span>
+<a name="line-1096"></a>
+<a name="line-1097"></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="mi">0</span><span class="p">);</span>
+<a name="line-1098"></a><span class="p">}</span>
+<a name="line-1099"></a>
+<a name="line-1100"></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/58.html b/static/reports/cppcheck/master/58.html
index e942aed6a..61f44e65c 100644
--- a/static/reports/cppcheck/master/58.html
+++ b/static/reports/cppcheck/master/58.html
@@ -1,2311 +1,1973 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/utilities/import/models/importimagemodel.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/utilities/setup/metadata/setupmetadata.cpp </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> importimagemodel.cpp</p>
-<a href='58.html#line-892'> useInitializationList 892</a>
+ <p id="filename"><a href="index.html">Defects:</a> setupmetadata.cpp</p>
+<a href='58.html#line-879'> shadowVar 879</a><a href='58.html#line-891'> shadowVar 891</a><a href='58.html#line-896'> shadowVar 896</a><a href='58.html#line-901'> shadowVar 901</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</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</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 : 2012-05-22</span>
-<a name="line-7"></a><span class="cm"> * Description : Qt item model for camera entries</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) 2012 by Islam Wazery &lt;wazery at ubuntu 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;importimagemodel.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;QHash&gt;</span><span class="cp"></span>
-<a name="line-29"></a>
-<a name="line-30"></a><span class="c1">// Local includes</span>
-<a name="line-31"></a>
-<a name="line-32"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
-<a name="line-33"></a><span class="cp">#include</span> <span class="cpf">&quot;coredbdownloadhistory.h&quot;</span><span class="cp"></span>
-<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&quot;cameracontroller.h&quot;</span><span class="cp"></span>
-<a name="line-35"></a>
-<a name="line-36"></a><span class="k">namespace</span> <span class="n">Digikam</span>
-<a name="line-37"></a><span class="p">{</span>
-<a name="line-38"></a>
-<a name="line-39"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">Private</span>
-<a name="line-40"></a><span class="p">{</span>
-<a name="line-41"></a><span class="k">public</span><span class="o">:</span>
-<a name="line-42"></a>
-<a name="line-43"></a> <span class="k">explicit</span> <span class="n">Private</span><span class="p">()</span>
-<a name="line-44"></a> <span class="o">:</span> <span class="n">controller</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-45"></a> <span class="n">keepFileUrlCache</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
-<a name="line-46"></a> <span class="n">refreshing</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
-<a name="line-47"></a> <span class="n">reAdding</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
-<a name="line-48"></a> <span class="n">incrementalRefreshRequested</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
-<a name="line-49"></a> <span class="n">sendRemovalSignals</span><span class="p">(</span><span class="nb">false</span><span class="p">),</span>
-<a name="line-50"></a> <span class="n">incrementalUpdater</span><span class="p">(</span><span class="k">nullptr</span><span class="p">)</span>
-<a name="line-51"></a> <span class="p">{</span>
-<a name="line-52"></a> <span class="p">}</span>
-<a name="line-53"></a>
-<a name="line-54"></a> <span class="kr">inline</span> <span class="kt">bool</span> <span class="n">isValid</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-55"></a> <span class="p">{</span>
-<a name="line-56"></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">&amp;&amp;</span>
-<a name="line-57"></a> <span class="p">(</span><span class="n">index</span><span class="p">.</span><span class="n">row</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-58"></a> <span class="p">(</span><span class="n">index</span><span class="p">.</span><span class="n">row</span><span class="p">()</span> <span class="o">&lt;</span> <span class="n">infos</span><span class="p">.</span><span class="n">size</span><span class="p">())</span>
-<a name="line-59"></a> <span class="p">);</span>
-<a name="line-60"></a> <span class="p">}</span>
-<a name="line-61"></a>
-<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="n">CameraController</span><span class="o">*</span> <span class="n">controller</span><span class="p">;</span>
-<a name="line-65"></a> <span class="n">CamItemInfoList</span> <span class="n">infos</span><span class="p">;</span>
-<a name="line-66"></a> <span class="n">CamItemInfo</span> <span class="n">camItemInfo</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="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="n">QHash</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">idHash</span><span class="p">;</span>
-<a name="line-69"></a> <span class="n">QHash</span><span class="o">&lt;</span><span class="n">QString</span><span class="p">,</span> <span class="n">qlonglong</span><span class="o">&gt;</span> <span class="n">fileUrlHash</span><span class="p">;</span>
-<a name="line-70"></a>
-<a name="line-71"></a> <span class="kt">bool</span> <span class="n">keepFileUrlCache</span><span class="p">;</span>
-<a name="line-72"></a>
-<a name="line-73"></a> <span class="kt">bool</span> <span class="n">refreshing</span><span class="p">;</span>
-<a name="line-74"></a> <span class="kt">bool</span> <span class="n">reAdding</span><span class="p">;</span>
-<a name="line-75"></a> <span class="kt">bool</span> <span class="n">incrementalRefreshRequested</span><span class="p">;</span>
-<a name="line-76"></a>
-<a name="line-77"></a> <span class="kt">bool</span> <span class="n">sendRemovalSignals</span><span class="p">;</span>
-<a name="line-78"></a>
-<a name="line-79"></a> <span class="k">class</span> <span class="nc">ImportItemModelIncrementalUpdater</span><span class="o">*</span> <span class="n">incrementalUpdater</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="c1">// ----------------------------------------------------------------------------------------------------</span>
-<a name="line-83"></a>
-<a name="line-84"></a><span class="k">typedef</span> <span class="n">QPair</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="n">IntPair</span><span class="p">;</span>
-<a name="line-85"></a><span class="k">typedef</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">IntPair</span><span class="o">&gt;</span> <span class="n">IntPairList</span><span class="p">;</span>
-<a name="line-86"></a>
-<a name="line-87"></a><span class="k">class</span> <span class="nc">Q_DECL_HIDDEN</span> <span class="n">ImportItemModelIncrementalUpdater</span>
-<a name="line-88"></a><span class="p">{</span>
-<a name="line-89"></a><span class="k">public</span><span class="o">:</span>
-<a name="line-90"></a>
-<a name="line-91"></a> <span class="k">explicit</span> <span class="n">ImportItemModelIncrementalUpdater</span><span class="p">(</span><span class="n">ImportItemModel</span><span class="o">::</span><span class="n">Private</span><span class="o">*</span> <span class="k">const</span> <span class="n">d</span><span class="p">);</span>
-<a name="line-92"></a>
-<a name="line-93"></a> <span class="kt">void</span> <span class="nf">appendInfos</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;&amp;</span> <span class="n">infos</span><span class="p">);</span>
-<a name="line-94"></a> <span class="kt">void</span> <span class="nf">aboutToBeRemovedInModel</span><span class="p">(</span><span class="k">const</span> <span class="n">IntPairList</span><span class="o">&amp;</span> <span class="n">aboutToBeRemoved</span><span class="p">);</span>
-<a name="line-95"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">IntPair</span><span class="o">&gt;</span> <span class="n">oldIndexes</span><span class="p">();</span>
-<a name="line-96"></a>
-<a name="line-97"></a> <span class="k">static</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">IntPair</span><span class="o">&gt;</span> <span class="n">toContiguousPairs</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;&amp;</span> <span class="n">ids</span><span class="p">);</span>
-<a name="line-98"></a>
-<a name="line-99"></a><span class="k">public</span><span class="o">:</span>
-<a name="line-100"></a>
-<a name="line-101"></a> <span class="n">QHash</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="n">oldIds</span><span class="p">;</span>
-<a name="line-102"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;</span> <span class="n">newInfos</span><span class="p">;</span>
-<a name="line-103"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">IntPairList</span><span class="o">&gt;</span> <span class="n">modelRemovals</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">// ----------------------------------------------------------------------------------------------------</span>
-<a name="line-107"></a>
-<a name="line-108"></a><span class="n">ImportItemModel</span><span class="o">::</span><span class="n">ImportItemModel</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-109"></a> <span class="o">:</span> <span class="n">QAbstractListModel</span><span class="p">(</span><span class="n">parent</span><span class="p">),</span>
-<a name="line-110"></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-111"></a><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">ImportItemModel</span><span class="o">::~</span><span class="n">ImportItemModel</span><span class="p">()</span>
-<a name="line-115"></a><span class="p">{</span>
-<a name="line-116"></a> <span class="k">delete</span> <span class="n">d</span><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">ImportItemModel</span><span class="o">::</span><span class="n">setCameraThumbsController</span><span class="p">(</span><span class="n">CameraThumbsCtrl</span><span class="o">*</span> <span class="k">const</span> <span class="n">thumbsCtrl</span><span class="p">)</span>
-<a name="line-120"></a><span class="p">{</span>
-<a name="line-121"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">controller</span> <span class="o">=</span> <span class="n">thumbsCtrl</span><span class="o">-&gt;</span><span class="n">cameraController</span><span class="p">();</span>
-<a name="line-122"></a>
-<a name="line-123"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">controller</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalFileList</span><span class="p">(</span><span class="n">CamItemInfoList</span><span class="p">)),</span>
-<a name="line-124"></a> <span class="n">SLOT</span><span class="p">(</span><span class="n">addCamItemInfos</span><span class="p">(</span><span class="n">CamItemInfoList</span><span class="p">)));</span>
-<a name="line-125"></a>
-<a name="line-126"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">controller</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalDeleted</span><span class="p">(</span><span class="n">QString</span><span class="p">,</span><span class="n">QString</span><span class="p">,</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-127"></a> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotFileDeleted</span><span class="p">(</span><span class="n">QString</span><span class="p">,</span><span class="n">QString</span><span class="p">,</span><span class="kt">bool</span><span class="p">)));</span>
-<a name="line-128"></a>
-<a name="line-129"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">controller</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalUploaded</span><span class="p">(</span><span class="n">CamItemInfo</span><span class="p">)),</span>
-<a name="line-130"></a> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotFileUploaded</span><span class="p">(</span><span class="n">CamItemInfo</span><span class="p">)));</span>
-<a name="line-131"></a><span class="p">}</span>
-<a name="line-132"></a>
-<a name="line-133"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">setKeepsFileUrlCache</span><span class="p">(</span><span class="kt">bool</span> <span class="n">keepCache</span><span class="p">)</span>
-<a name="line-134"></a><span class="p">{</span>
-<a name="line-135"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">keepFileUrlCache</span> <span class="o">=</span> <span class="n">keepCache</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">bool</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">keepsFileUrlCache</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-139"></a><span class="p">{</span>
-<a name="line-140"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">keepFileUrlCache</span><span class="p">;</span>
-<a name="line-141"></a><span class="p">}</span>
-<a name="line-142"></a>
-<a name="line-143"></a><span class="kt">bool</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">isEmpty</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-144"></a><span class="p">{</span>
-<a name="line-145"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">();</span>
-<a name="line-146"></a><span class="p">}</span>
+<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">CamItemInfo</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">camItemInfo</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-149"></a><span class="p">{</span>
-<a name="line-150"></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">isValid</span><span class="p">(</span><span class="n">index</span><span class="p">))</span>
-<a name="line-151"></a> <span class="p">{</span>
-<a name="line-152"></a> <span class="k">return</span> <span class="n">CamItemInfo</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="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">index</span><span class="p">.</span><span class="n">row</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">CamItemInfo</span><span class="o">&amp;</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">camItemInfoRef</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-159"></a><span class="p">{</span>
-<a name="line-160"></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">isValid</span><span class="p">(</span><span class="n">index</span><span class="p">))</span>
-<a name="line-161"></a> <span class="p">{</span>
-<a name="line-162"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">camItemInfo</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="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">[</span><span class="n">index</span><span class="p">.</span><span class="n">row</span><span class="p">()];</span>
-<a name="line-166"></a><span class="p">}</span>
+<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">qlonglong</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">camItemId</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-169"></a><span class="p">{</span>
-<a name="line-170"></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">isValid</span><span class="p">(</span><span class="n">index</span><span class="p">))</span>
-<a name="line-171"></a> <span class="p">{</span>
-<a name="line-172"></a> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
-<a name="line-173"></a> <span class="p">}</span>
-<a name="line-174"></a>
-<a name="line-175"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">index</span><span class="p">.</span><span class="n">row</span><span class="p">()).</span><span class="n">id</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="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">camItemInfos</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QModelIndex</span><span class="o">&gt;&amp;</span> <span class="n">indexes</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-179"></a><span class="p">{</span>
-<a name="line-180"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;</span> <span class="n">infos</span><span class="p">;</span>
-<a name="line-181"></a>
-<a name="line-182"></a> <span class="n">foreach</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="n">indexes</span><span class="p">)</span>
-<a name="line-183"></a> <span class="p">{</span>
-<a name="line-184"></a> <span class="n">infos</span> <span class="o">&lt;&lt;</span> <span class="n">camItemInfo</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
-<a name="line-185"></a> <span class="p">}</span>
+<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="k">return</span> <span class="n">infos</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="n">QList</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="o">&gt;</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">camItemIds</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QModelIndex</span><span class="o">&gt;&amp;</span> <span class="n">indexes</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-191"></a><span class="p">{</span>
-<a name="line-192"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="o">&gt;</span> <span class="n">ids</span><span class="p">;</span>
+<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">foreach</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="n">indexes</span><span class="p">)</span>
-<a name="line-195"></a> <span class="p">{</span>
-<a name="line-196"></a> <span class="n">ids</span> <span class="o">&lt;&lt;</span> <span class="n">camItemId</span><span class="p">(</span><span class="n">index</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="k">return</span> <span class="n">ids</span><span class="p">;</span>
-<a name="line-200"></a><span class="p">}</span>
-<a name="line-201"></a>
-<a name="line-202"></a><span class="n">CamItemInfo</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">camItemInfo</span><span class="p">(</span><span class="kt">int</span> <span class="n">row</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-203"></a><span class="p">{</span>
-<a name="line-204"></a> <span class="k">if</span> <span class="p">(</span><span class="n">row</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="o">||</span> <span class="n">row</span> <span class="o">&gt;=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">size</span><span class="p">())</span>
-<a name="line-205"></a> <span class="p">{</span>
-<a name="line-206"></a> <span class="k">return</span> <span class="n">CamItemInfo</span><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="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">row</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">CamItemInfo</span><span class="o">&amp;</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">camItemInfoRef</span><span class="p">(</span><span class="kt">int</span> <span class="n">row</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-213"></a><span class="p">{</span>
-<a name="line-214"></a> <span class="k">if</span> <span class="p">(</span><span class="n">row</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="o">||</span> <span class="n">row</span> <span class="o">&gt;=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">size</span><span class="p">())</span>
-<a name="line-215"></a> <span class="p">{</span>
-<a name="line-216"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">camItemInfo</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="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">[</span><span class="n">row</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="n">qlonglong</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">camItemId</span><span class="p">(</span><span class="kt">int</span> <span class="n">row</span><span class="p">)</span> <span class="k">const</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">row</span> <span class="o">&lt;</span> <span class="mi">0</span> <span class="o">||</span> <span class="n">row</span> <span class="o">&gt;=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">size</span><span class="p">())</span>
-<a name="line-225"></a> <span class="p">{</span>
-<a name="line-226"></a> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
-<a name="line-227"></a> <span class="p">}</span>
-<a name="line-228"></a>
-<a name="line-229"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">row</span><span class="p">).</span><span class="n">id</span><span class="p">;</span>
-<a name="line-230"></a><span class="p">}</span>
-<a name="line-231"></a>
-<a name="line-232"></a><span class="n">QModelIndex</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">indexForCamItemInfo</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-233"></a><span class="p">{</span>
-<a name="line-234"></a> <span class="k">return</span> <span class="n">indexForCamItemId</span><span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">id</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">QList</span><span class="o">&lt;</span><span class="n">QModelIndex</span><span class="o">&gt;</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">indexesForCamItemInfo</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-238"></a><span class="p">{</span>
-<a name="line-239"></a> <span class="k">return</span> <span class="n">indexesForCamItemId</span><span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">id</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="n">QModelIndex</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">indexForCamItemId</span><span class="p">(</span><span class="n">qlonglong</span> <span class="n">id</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-243"></a><span class="p">{</span>
-<a name="line-244"></a> <span class="kt">int</span> <span class="n">index</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">idHash</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><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">index</span> <span class="o">==</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
-<a name="line-247"></a> <span class="p">{</span>
-<a name="line-248"></a> <span class="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-249"></a> <span class="p">}</span>
+<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="k">return</span> <span class="n">createIndex</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-252"></a><span class="p">}</span>
-<a name="line-253"></a>
-<a name="line-254"></a><span class="n">QList</span><span class="o">&lt;</span><span class="n">QModelIndex</span><span class="o">&gt;</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">indexesForCamItemId</span><span class="p">(</span><span class="n">qlonglong</span> <span class="n">id</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-255"></a><span class="p">{</span>
-<a name="line-256"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QModelIndex</span><span class="o">&gt;</span> <span class="n">indexes</span><span class="p">;</span>
-<a name="line-257"></a>
-<a name="line-258"></a> <span class="n">QHash</span><span class="o">&lt;</span><span class="n">qlonglong</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="p">;</span>
-<a name="line-259"></a>
-<a name="line-260"></a> <span class="k">for</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">idHash</span><span class="p">.</span><span class="n">constFind</span><span class="p">(</span><span class="n">id</span><span class="p">)</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">idHash</span><span class="p">.</span><span class="n">constEnd</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">it</span><span class="p">.</span><span class="n">key</span><span class="p">()</span> <span class="o">==</span> <span class="n">id</span> <span class="p">;</span> <span class="o">++</span><span class="n">it</span><span class="p">)</span>
-<a name="line-261"></a> <span class="p">{</span>
-<a name="line-262"></a> <span class="n">indexes</span> <span class="o">&lt;&lt;</span> <span class="n">createIndex</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="mi">0</span><span class="p">);</span>
-<a name="line-263"></a> <span class="p">}</span>
+<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="k">return</span> <span class="n">indexes</span><span class="p">;</span>
-<a name="line-266"></a><span class="p">}</span>
-<a name="line-267"></a>
-<a name="line-268"></a><span class="kt">int</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">numberOfIndexesForCamItemInfo</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-269"></a><span class="p">{</span>
-<a name="line-270"></a> <span class="k">return</span> <span class="n">numberOfIndexesForCamItemId</span><span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">id</span><span class="p">);</span>
-<a name="line-271"></a><span class="p">}</span>
+<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="kt">int</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">numberOfIndexesForCamItemId</span><span class="p">(</span><span class="n">qlonglong</span> <span class="n">id</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-274"></a><span class="p">{</span>
-<a name="line-275"></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-276"></a> <span class="n">QHash</span><span class="o">&lt;</span><span class="n">qlonglong</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="p">;</span>
-<a name="line-277"></a>
-<a name="line-278"></a> <span class="k">for</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">idHash</span><span class="p">.</span><span class="n">constFind</span><span class="p">(</span><span class="n">id</span><span class="p">)</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">idHash</span><span class="p">.</span><span class="n">constEnd</span><span class="p">()</span> <span class="o">&amp;&amp;</span> <span class="n">it</span><span class="p">.</span><span class="n">key</span><span class="p">()</span> <span class="o">==</span> <span class="n">id</span> <span class="p">;</span> <span class="o">++</span><span class="n">it</span><span class="p">)</span>
-<a name="line-279"></a> <span class="p">{</span>
-<a name="line-280"></a> <span class="o">++</span><span class="n">count</span><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="k">return</span> <span class="n">count</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="c1">// static method</span>
-<a name="line-287"></a><span class="n">CamItemInfo</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">retrieveCamItemInfo</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-288"></a><span class="p">{</span>
-<a name="line-289"></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-290"></a> <span class="p">{</span>
-<a name="line-291"></a> <span class="k">return</span> <span class="n">CamItemInfo</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="n">ImportItemModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">model</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">ImportItemModelPointerRole</span><span class="p">).</span><span class="n">value</span><span class="o">&lt;</span><span class="n">ImportItemModel</span><span class="o">*&gt;</span><span class="p">();</span>
-<a name="line-295"></a> <span class="kt">int</span> <span class="n">row</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">ImportItemModelInternalId</span><span class="p">).</span><span class="n">toInt</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">model</span><span class="p">)</span>
-<a name="line-298"></a> <span class="p">{</span>
-<a name="line-299"></a> <span class="k">return</span> <span class="n">CamItemInfo</span><span class="p">();</span>
-<a name="line-300"></a> <span class="p">}</span>
+<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="k">return</span> <span class="n">model</span><span class="o">-&gt;</span><span class="n">camItemInfo</span><span class="p">(</span><span class="n">row</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="c1">// static method</span>
-<a name="line-306"></a><span class="n">qlonglong</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">retrieveCamItemId</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-307"></a><span class="p">{</span>
-<a name="line-308"></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-309"></a> <span class="p">{</span>
-<a name="line-310"></a> <span class="k">return</span> <span class="o">-</span><span class="mi">1</span><span class="p">;</span>
-<a name="line-311"></a> <span class="p">}</span>
-<a name="line-312"></a>
-<a name="line-313"></a> <span class="n">ImportItemModel</span><span class="o">*</span> <span class="k">const</span> <span class="n">model</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">ImportItemModelPointerRole</span><span class="p">).</span><span class="n">value</span><span class="o">&lt;</span><span class="n">ImportItemModel</span><span class="o">*&gt;</span><span class="p">();</span>
-<a name="line-314"></a> <span class="kt">int</span> <span class="n">row</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">ImportItemModelInternalId</span><span class="p">).</span><span class="n">toInt</span><span class="p">();</span>
+<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="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">model</span><span class="p">)</span>
-<a name="line-317"></a> <span class="p">{</span>
-<a name="line-318"></a> <span class="k">return</span> <span class="o">-</span><span class="mi">1</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="k">return</span> <span class="n">model</span><span class="o">-&gt;</span><span class="n">camItemId</span><span class="p">(</span><span class="n">row</span><span class="p">);</span>
-<a name="line-322"></a><span class="p">}</span>
+<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="n">QModelIndex</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">indexForUrl</span><span class="p">(</span><span class="k">const</span> <span class="n">QUrl</span><span class="o">&amp;</span> <span class="n">fileUrl</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-325"></a><span class="p">{</span>
-<a name="line-326"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">keepFileUrlCache</span><span class="p">)</span>
-<a name="line-327"></a> <span class="p">{</span>
-<a name="line-328"></a> <span class="k">return</span> <span class="n">indexForCamItemId</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fileUrlHash</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">fileUrl</span><span class="p">.</span><span class="n">toLocalFile</span><span class="p">()));</span>
-<a name="line-329"></a> <span class="p">}</span>
-<a name="line-330"></a> <span class="k">else</span>
-<a name="line-331"></a> <span class="p">{</span>
-<a name="line-332"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">size</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
-<a name="line-333"></a>
-<a name="line-334"></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">size</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-335"></a> <span class="p">{</span>
-<a name="line-336"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</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">url</span><span class="p">()</span> <span class="o">==</span> <span class="n">fileUrl</span><span class="p">)</span>
-<a name="line-337"></a> <span class="p">{</span>
-<a name="line-338"></a> <span class="k">return</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>
-<a name="line-339"></a> <span class="p">}</span>
-<a name="line-340"></a> <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="k">return</span> <span class="n">QModelIndex</span><span class="p">();</span>
-<a name="line-344"></a><span class="p">}</span>
+<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="n">QList</span><span class="o">&lt;</span><span class="n">QModelIndex</span><span class="o">&gt;</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">indexesForUrl</span><span class="p">(</span><span class="k">const</span> <span class="n">QUrl</span><span class="o">&amp;</span> <span class="n">fileUrl</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-347"></a><span class="p">{</span>
-<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">keepFileUrlCache</span><span class="p">)</span>
-<a name="line-349"></a> <span class="p">{</span>
-<a name="line-350"></a> <span class="k">return</span> <span class="n">indexesForCamItemId</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">fileUrlHash</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">fileUrl</span><span class="p">.</span><span class="n">toLocalFile</span><span class="p">()));</span>
-<a name="line-351"></a> <span class="p">}</span>
-<a name="line-352"></a> <span class="k">else</span>
-<a name="line-353"></a> <span class="p">{</span>
-<a name="line-354"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QModelIndex</span><span class="o">&gt;</span> <span class="n">indexes</span><span class="p">;</span>
-<a name="line-355"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">size</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
-<a name="line-356"></a>
-<a name="line-357"></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">size</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-358"></a> <span class="p">{</span>
-<a name="line-359"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</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">url</span><span class="p">()</span> <span class="o">==</span> <span class="n">fileUrl</span><span class="p">)</span>
-<a name="line-360"></a> <span class="p">{</span>
-<a name="line-361"></a> <span class="n">indexes</span> <span class="o">&lt;&lt;</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>
-<a name="line-362"></a> <span class="p">}</span>
-<a name="line-363"></a> <span class="p">}</span>
-<a name="line-364"></a>
-<a name="line-365"></a> <span class="k">return</span> <span class="n">indexes</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="n">CamItemInfo</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">camItemInfo</span><span class="p">(</span><span class="k">const</span> <span class="n">QUrl</span><span class="o">&amp;</span> <span class="n">fileUrl</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-370"></a><span class="p">{</span>
-<a name="line-371"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">keepFileUrlCache</span><span class="p">)</span>
-<a name="line-372"></a> <span class="p">{</span>
-<a name="line-373"></a> <span class="n">qlonglong</span> <span class="n">id</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileUrlHash</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">fileUrl</span><span class="p">.</span><span class="n">toLocalFile</span><span class="p">());</span>
-<a name="line-374"></a>
-<a name="line-375"></a> <span class="k">if</span> <span class="p">(</span><span class="n">id</span><span class="p">)</span>
-<a name="line-376"></a> <span class="p">{</span>
-<a name="line-377"></a> <span class="kt">int</span> <span class="n">index</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">idHash</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</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">index</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="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
-<a name="line-382"></a> <span class="p">}</span>
-<a name="line-383"></a> <span class="p">}</span>
-<a name="line-384"></a> <span class="p">}</span>
-<a name="line-385"></a> <span class="k">else</span>
-<a name="line-386"></a> <span class="p">{</span>
-<a name="line-387"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</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">info</span><span class="p">.</span><span class="n">url</span><span class="p">()</span> <span class="o">==</span> <span class="n">fileUrl</span><span class="p">)</span>
-<a name="line-390"></a> <span class="p">{</span>
-<a name="line-391"></a> <span class="k">return</span> <span class="n">info</span><span class="p">;</span>
-<a name="line-392"></a> <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">return</span> <span class="n">CamItemInfo</span><span class="p">();</span>
-<a name="line-397"></a><span class="p">}</span>
-<a name="line-398"></a>
-<a name="line-399"></a><span class="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">camItemInfos</span><span class="p">(</span><span class="k">const</span> <span class="n">QUrl</span><span class="o">&amp;</span> <span class="n">fileUrl</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-400"></a><span class="p">{</span>
-<a name="line-401"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;</span> <span class="n">infos</span><span class="p">;</span>
+<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="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">keepFileUrlCache</span><span class="p">)</span>
-<a name="line-404"></a> <span class="p">{</span>
-<a name="line-405"></a> <span class="n">qlonglong</span> <span class="n">id</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileUrlHash</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">fileUrl</span><span class="p">.</span><span class="n">toLocalFile</span><span class="p">());</span>
-<a name="line-406"></a>
-<a name="line-407"></a> <span class="k">if</span> <span class="p">(</span><span class="n">id</span><span class="p">)</span>
-<a name="line-408"></a> <span class="p">{</span>
-<a name="line-409"></a> <span class="n">foreach</span> <span class="p">(</span><span class="kt">int</span> <span class="n">index</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">idHash</span><span class="p">.</span><span class="n">values</span><span class="p">(</span><span class="n">id</span><span class="p">))</span>
-<a name="line-410"></a> <span class="p">{</span>
-<a name="line-411"></a> <span class="n">infos</span> <span class="o">&lt;&lt;</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
-<a name="line-412"></a> <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> <span class="k">else</span>
-<a name="line-416"></a> <span class="p">{</span>
-<a name="line-417"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">)</span>
-<a name="line-418"></a> <span class="p">{</span>
-<a name="line-419"></a> <span class="k">if</span> <span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">url</span><span class="p">()</span> <span class="o">==</span> <span class="n">fileUrl</span><span class="p">)</span>
-<a name="line-420"></a> <span class="p">{</span>
-<a name="line-421"></a> <span class="n">infos</span> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">;</span>
-<a name="line-422"></a> <span class="p">}</span>
-<a name="line-423"></a> <span class="p">}</span>
-<a name="line-424"></a> <span class="p">}</span>
-<a name="line-425"></a>
-<a name="line-426"></a> <span class="k">return</span> <span class="n">infos</span><span class="p">;</span>
-<a name="line-427"></a><span class="p">}</span>
+<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="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">addCamItemInfo</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">)</span>
-<a name="line-430"></a><span class="p">{</span>
-<a name="line-431"></a> <span class="n">addCamItemInfos</span><span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">);</span>
-<a name="line-432"></a><span class="p">}</span>
+<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="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">addCamItemInfos</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfoList</span><span class="o">&amp;</span> <span class="n">infos</span><span class="p">)</span>
-<a name="line-435"></a><span class="p">{</span>
-<a name="line-436"></a> <span class="k">if</span> <span class="p">(</span><span class="n">infos</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-437"></a> <span class="p">{</span>
-<a name="line-438"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-439"></a> <span class="p">}</span>
+<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="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalUpdater</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">incrementalUpdater</span><span class="o">-&gt;</span><span class="n">appendInfos</span><span class="p">(</span><span class="n">infos</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">appendInfos</span><span class="p">(</span><span class="n">infos</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-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="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">addCamItemInfoSynchronously</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">)</span>
-<a name="line-452"></a><span class="p">{</span>
-<a name="line-453"></a> <span class="n">addCamItemInfosSynchronously</span><span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">);</span>
-<a name="line-454"></a><span class="p">}</span>
-<a name="line-455"></a>
-<a name="line-456"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">addCamItemInfosSynchronously</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfoList</span><span class="o">&amp;</span> <span class="n">infos</span><span class="p">)</span>
-<a name="line-457"></a><span class="p">{</span>
-<a name="line-458"></a> <span class="k">if</span> <span class="p">(</span><span class="n">infos</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-459"></a> <span class="p">{</span>
-<a name="line-460"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-461"></a> <span class="p">}</span>
-<a name="line-462"></a>
-<a name="line-463"></a> <span class="n">publiciseInfos</span><span class="p">(</span><span class="n">infos</span><span class="p">);</span>
-<a name="line-464"></a> <span class="n">emit</span> <span class="nf">processAdded</span><span class="p">(</span><span class="n">infos</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="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">clearCamItemInfos</span><span class="p">()</span>
-<a name="line-468"></a><span class="p">{</span>
-<a name="line-469"></a> <span class="n">beginResetModel</span><span class="p">();</span>
-<a name="line-470"></a>
-<a name="line-471"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
-<a name="line-472"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">idHash</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
-<a name="line-473"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileUrlHash</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
-<a name="line-474"></a>
-<a name="line-475"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalUpdater</span><span class="p">;</span>
+<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">d</span><span class="o">-&gt;</span><span class="n">incrementalUpdater</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-478"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reAdding</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-479"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">refreshing</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-480"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalRefreshRequested</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
+<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="n">camItemInfosCleared</span><span class="p">();</span>
-<a name="line-483"></a> <span class="n">endResetModel</span><span class="p">();</span>
-<a name="line-484"></a><span class="p">}</span>
-<a name="line-485"></a>
-<a name="line-486"></a><span class="c1">// TODO unused</span>
-<a name="line-487"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">setCamItemInfos</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfoList</span><span class="o">&amp;</span> <span class="n">infos</span><span class="p">)</span>
-<a name="line-488"></a><span class="p">{</span>
-<a name="line-489"></a> <span class="n">clearCamItemInfos</span><span class="p">();</span>
-<a name="line-490"></a> <span class="n">addCamItemInfos</span><span class="p">(</span><span class="n">infos</span><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="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">camItemInfos</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-494"></a><span class="p">{</span>
-<a name="line-495"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</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="n">QList</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="o">&gt;</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">camItemIds</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-499"></a><span class="p">{</span>
-<a name="line-500"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">idHash</span><span class="p">.</span><span class="n">keys</span><span class="p">();</span>
-<a name="line-501"></a><span class="p">}</span>
-<a name="line-502"></a>
-<a name="line-503"></a><span class="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">uniqueCamItemInfos</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-504"></a><span class="p">{</span>
-<a name="line-505"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;</span> <span class="n">uniqueInfos</span><span class="p">;</span>
-<a name="line-506"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">size</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
+<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="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">size</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-509"></a> <span class="p">{</span>
-<a name="line-510"></a> <span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</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-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="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">idHash</span><span class="p">.</span><span class="n">value</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="o">==</span> <span class="n">i</span><span class="p">)</span>
-<a name="line-513"></a> <span class="p">{</span>
-<a name="line-514"></a> <span class="n">uniqueInfos</span> <span class="o">&lt;&lt;</span> <span class="n">info</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="k">return</span> <span class="n">uniqueInfos</span><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="kt">bool</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">hasImage</span><span class="p">(</span><span class="n">qlonglong</span> <span class="n">id</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-522"></a><span class="p">{</span>
-<a name="line-523"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">idHash</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-524"></a><span class="p">}</span>
+<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="kt">bool</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">hasImage</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-527"></a><span class="p">{</span>
-<a name="line-528"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileUrlHash</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">url</span><span class="p">().</span><span class="n">toLocalFile</span><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">ImportItemModel</span><span class="o">::</span><span class="n">emitDataChangedForAll</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">d</span><span class="o">-&gt;</span><span class="n">infos</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">QModelIndex</span> <span class="n">first</span> <span class="o">=</span> <span class="n">createIndex</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-539"></a> <span class="n">QModelIndex</span> <span class="n">last</span> <span class="o">=</span> <span class="n">createIndex</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">size</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-540"></a> <span class="n">emit</span> <span class="nf">dataChanged</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-541"></a><span class="p">}</span>
-<a name="line-542"></a>
-<a name="line-543"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">emitDataChangedForSelections</span><span class="p">(</span><span class="k">const</span> <span class="n">QItemSelection</span><span class="o">&amp;</span> <span class="n">selection</span><span class="p">)</span>
-<a name="line-544"></a><span class="p">{</span>
-<a name="line-545"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">selection</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-546"></a> <span class="p">{</span>
-<a name="line-547"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">QItemSelectionRange</span><span class="o">&amp;</span> <span class="n">range</span><span class="p">,</span> <span class="n">selection</span><span class="p">)</span>
-<a name="line-548"></a> <span class="p">{</span>
-<a name="line-549"></a> <span class="n">emit</span> <span class="n">dataChanged</span><span class="p">(</span><span class="n">range</span><span class="p">.</span><span class="n">topLeft</span><span class="p">(),</span> <span class="n">range</span><span class="p">.</span><span class="n">bottomRight</span><span class="p">());</span>
-<a name="line-550"></a> <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-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="c1">//balooLayout-&gt;addWidget(d-&gt;resyncButton, 0, Qt::AlignRight);</span>
+<a name="line-538"></a> <span class="n">balooLayout</span><span class="o">-&gt;</span><span class="n">addStretch</span><span class="p">();</span>
+<a name="line-539"></a>
+<a name="line-540"></a><span class="cp">#endif </span><span class="c1">// HAVE_KFILEMETADATA</span>
+<a name="line-541"></a>
+<a name="line-542"></a> <span class="c1">//--------------Advanced Metadata Configuration --------------</span>
+<a name="line-543"></a>
+<a name="line-544"></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-545"></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-546"></a>
+<a name="line-547"></a> <span class="c1">//------------------------Sidecars-------------------------</span>
+<a name="line-548"></a>
+<a name="line-549"></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-550"></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-551"></a>
+<a name="line-552"></a> <span class="c1">// --------------------------------------------------------</span>
<a name="line-553"></a>
-<a name="line-554"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">appendInfos</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfoList</span><span class="o">&amp;</span> <span class="n">infos</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">infos</span><span class="p">.</span><span class="n">isEmpty</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="n">publiciseInfos</span><span class="p">(</span><span class="n">infos</span><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="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">reAddCamItemInfos</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfoList</span><span class="o">&amp;</span> <span class="n">infos</span><span class="p">)</span>
-<a name="line-565"></a><span class="p">{</span>
-<a name="line-566"></a> <span class="n">publiciseInfos</span><span class="p">(</span><span class="n">infos</span><span class="p">);</span>
-<a name="line-567"></a><span class="p">}</span>
-<a name="line-568"></a>
-<a name="line-569"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">reAddingFinished</span><span class="p">()</span>
-<a name="line-570"></a><span class="p">{</span>
-<a name="line-571"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reAdding</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-572"></a> <span class="n">cleanSituationChecks</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">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">slotFileDeleted</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> <span class="k">const</span> <span class="n">QString</span><span class="o">&amp;</span> <span class="n">file</span><span class="p">,</span> <span class="kt">bool</span> <span class="n">status</span><span class="p">)</span>
-<a name="line-576"></a><span class="p">{</span>
-<a name="line-577"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">status</span><span class="p">)</span>
-<a name="line-578"></a>
-<a name="line-579"></a> <span class="n">QUrl</span> <span class="n">url</span> <span class="o">=</span> <span class="n">QUrl</span><span class="o">::</span><span class="n">fromLocalFile</span><span class="p">(</span><span class="n">folder</span><span class="p">);</span>
-<a name="line-580"></a> <span class="n">url</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">StripTrailingSlash</span><span class="p">);</span>
-<a name="line-581"></a> <span class="n">url</span><span class="p">.</span><span class="n">setPath</span><span class="p">(</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">file</span><span class="p">);</span>
-<a name="line-582"></a> <span class="n">CamItemInfo</span> <span class="n">info</span> <span class="o">=</span> <span class="n">camItemInfo</span><span class="p">(</span><span class="n">url</span><span class="p">);</span>
-<a name="line-583"></a> <span class="n">removeCamItemInfo</span><span class="p">(</span><span class="n">info</span><span class="p">);</span>
-<a name="line-584"></a><span class="p">}</span>
+<a name="line-554"></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-555"></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-556"></a>
+<a name="line-557"></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-558"></a>
+<a name="line-559"></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-560"></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-561"></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-562"></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-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">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-564"></a>
+<a name="line-565"></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-566"></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-567"></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-568"></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-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">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-570"></a>
+<a name="line-571"></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-572"></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-573"></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-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 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-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">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-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">setEnabled</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
+<a name="line-577"></a>
+<a name="line-578"></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-579"></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-580"></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-581"></a> <span class="s">&quot;Turn on this option to create the XMP sidecar files with a compatible &quot;</span>
+<a name="line-582"></a> <span class="s">&quot;file name (BASENAME.xmp) used by many commercial programs. &quot;</span>
+<a name="line-583"></a> <span class="s">&quot;For Darktable do not enable this option.&quot;</span><span class="p">));</span>
+<a name="line-584"></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-585"></a>
-<a name="line-586"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">slotFileUploaded</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">)</span>
-<a name="line-587"></a><span class="p">{</span>
-<a name="line-588"></a> <span class="n">addCamItemInfo</span><span class="p">(</span><span class="n">info</span><span class="p">);</span>
-<a name="line-589"></a><span class="p">}</span>
-<a name="line-590"></a>
-<a name="line-591"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">startRefresh</span><span class="p">()</span>
-<a name="line-592"></a><span class="p">{</span>
-<a name="line-593"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">refreshing</span> <span class="o">=</span> <span class="nb">true</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">ImportItemModel</span><span class="o">::</span><span class="n">finishRefresh</span><span class="p">()</span>
-<a name="line-597"></a><span class="p">{</span>
-<a name="line-598"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">refreshing</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-599"></a> <span class="n">cleanSituationChecks</span><span class="p">();</span>
-<a name="line-600"></a><span class="p">}</span>
+<a name="line-586"></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-587"></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-588"></a>
+<a name="line-589"></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-590"></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-591"></a>
+<a name="line-592"></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-593"></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-594"></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-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">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-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">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-597"></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-598"></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-599"></a>
+<a name="line-600"></a> <span class="c1">// --------------------------------------------------------</span>
<a name="line-601"></a>
-<a name="line-602"></a><span class="kt">bool</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">isRefreshing</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-603"></a><span class="p">{</span>
-<a name="line-604"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">refreshing</span><span class="p">;</span>
-<a name="line-605"></a><span class="p">}</span>
-<a name="line-606"></a>
-<a name="line-607"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">cleanSituationChecks</span><span class="p">()</span>
-<a name="line-608"></a><span class="p">{</span>
-<a name="line-609"></a> <span class="c1">// For starting an incremental refresh we want a clear situation:</span>
-<a name="line-610"></a> <span class="c1">// Any remaining batches from non-incremental refreshing subclasses have been received in appendInfos(),</span>
-<a name="line-611"></a> <span class="c1">// any batches sent to preprocessor for re-adding have been re-added.</span>
-<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">refreshing</span> <span class="o">||</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">reAdding</span><span class="p">)</span>
-<a name="line-613"></a> <span class="p">{</span>
-<a name="line-614"></a> <span class="k">return</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="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalRefreshRequested</span><span class="p">)</span>
-<a name="line-618"></a> <span class="p">{</span>
-<a name="line-619"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalRefreshRequested</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-620"></a> <span class="n">emit</span> <span class="nf">readyForIncrementalRefresh</span><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">emit</span> <span class="n">allRefreshingFinished</span><span class="p">();</span>
-<a name="line-625"></a> <span class="p">}</span>
-<a name="line-626"></a><span class="p">}</span>
-<a name="line-627"></a>
-<a name="line-628"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">publiciseInfos</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfoList</span><span class="o">&amp;</span> <span class="n">infos</span><span class="p">)</span>
-<a name="line-629"></a><span class="p">{</span>
-<a name="line-630"></a> <span class="k">if</span> <span class="p">(</span><span class="n">infos</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-631"></a> <span class="p">{</span>
-<a name="line-632"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-633"></a> <span class="p">}</span>
-<a name="line-634"></a>
-<a name="line-635"></a> <span class="n">emit</span> <span class="n">itemInfosAboutToBeAdded</span><span class="p">(</span><span class="n">infos</span><span class="p">);</span>
-<a name="line-636"></a>
-<a name="line-637"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">firstNewIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
-<a name="line-638"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">lastNewIndex</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">+</span> <span class="n">infos</span><span class="p">.</span><span class="n">size</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">beginInsertRows</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">(),</span> <span class="n">firstNewIndex</span><span class="p">,</span> <span class="n">lastNewIndex</span><span class="p">);</span>
-<a name="line-640"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span> <span class="o">&lt;&lt;</span> <span class="n">infos</span><span class="p">;</span>
+<a name="line-602"></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-603"></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-604"></a>
+<a name="line-605"></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-606"></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-607"></a> <span class="s">&quot;&lt;p&gt;digiKam (optionally) writes metadata to *.xmp sidecar &quot;</span>
+<a name="line-608"></a> <span class="s">&quot;files. Other programs might use different types, which &quot;</span>
+<a name="line-609"></a> <span class="s">&quot;can be specified below. digiKam will neither display these &quot;</span>
+<a name="line-610"></a> <span class="s">&quot;nor read from or write to them. But whenever a matching album &quot;</span>
+<a name="line-611"></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-612"></a> <span class="s">&quot;moved, copied or deleted, the same operation will be done &quot;</span>
+<a name="line-613"></a> <span class="s">&quot;on these sidecar files.&lt;/p&gt;&quot;</span>
+<a name="line-614"></a> <span class="s">&quot;&lt;p&gt;Multiple extensions must be separated by a semicolon &quot;</span>
+<a name="line-615"></a> <span class="s">&quot;or a space.&lt;/p&gt;&quot;</span><span class="p">));</span>
+<a name="line-616"></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-617"></a>
+<a name="line-618"></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-619"></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-620"></a>
+<a name="line-621"></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-622"></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-623"></a> <span class="s">&quot;of sidecars files to be processed alongside &quot;</span>
+<a name="line-624"></a> <span class="s">&quot;regular items. These files will not be visible, &quot;</span>
+<a name="line-625"></a> <span class="s">&quot;but regarded as an extension of the main file. &quot;</span>
+<a name="line-626"></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-627"></a> <span class="s">&quot;the *.xyz and *.abc extensions. The internally &quot;</span>
+<a name="line-628"></a> <span class="s">&quot;used sidecars type *.xmp is always included.&lt;/p&gt;&quot;</span><span class="p">));</span>
+<a name="line-629"></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-630"></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-631"></a>
+<a name="line-632"></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-633"></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-634"></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-635"></a>
+<a name="line-636"></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-637"></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-638"></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-639"></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-640"></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-641"></a>
-<a name="line-642"></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">firstNewIndex</span> <span class="p">;</span> <span class="n">i</span> <span class="o">&lt;=</span> <span class="n">lastNewIndex</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-643"></a> <span class="p">{</span>
-<a name="line-644"></a> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">[</span><span class="n">i</span><span class="p">];</span>
-<a name="line-645"></a>
-<a name="line-646"></a> <span class="c1">// TODO move this to a separate thread, see CameraHistoryUpdater</span>
-<a name="line-647"></a> <span class="c1">// TODO can we/do we want to differentiate at all between whether the status is unknown and not downloaded?</span>
-<a name="line-648"></a> <span class="n">info</span><span class="p">.</span><span class="n">downloaded</span> <span class="o">=</span> <span class="n">CoreDbDownloadHistory</span><span class="o">::</span><span class="n">status</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">d</span><span class="o">-&gt;</span><span class="n">controller</span><span class="o">-&gt;</span><span class="n">cameraMD5ID</span><span class="p">()),</span> <span class="n">info</span><span class="p">.</span><span class="n">name</span><span class="p">,</span> <span class="n">info</span><span class="p">.</span><span class="n">size</span><span class="p">,</span> <span class="n">info</span><span class="p">.</span><span class="n">ctime</span><span class="p">);</span>
-<a name="line-649"></a> <span class="c1">// TODO is this safe? if so, is there a need to store this inside idHash separately?</span>
-<a name="line-650"></a>
-<a name="line-651"></a> <span class="n">info</span><span class="p">.</span><span class="n">id</span> <span class="o">=</span> <span class="n">i</span><span class="p">;</span>
-<a name="line-652"></a> <span class="n">qlonglong</span> <span class="n">id</span> <span class="o">=</span> <span class="n">info</span><span class="p">.</span><span class="n">id</span><span class="p">;</span>
-<a name="line-653"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">idHash</span><span class="p">.</span><span class="n">insertMulti</span><span class="p">(</span><span class="n">id</span><span class="p">,</span> <span class="n">i</span><span class="p">);</span>
-<a name="line-654"></a>
-<a name="line-655"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">keepFileUrlCache</span><span class="p">)</span>
-<a name="line-656"></a> <span class="p">{</span>
-<a name="line-657"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileUrlHash</span><span class="p">[</span><span class="n">info</span><span class="p">.</span><span class="n">url</span><span class="p">().</span><span class="n">toLocalFile</span><span class="p">()]</span> <span class="o">=</span> <span class="n">id</span><span class="p">;</span>
-<a name="line-658"></a> <span class="p">}</span>
-<a name="line-659"></a> <span class="p">}</span>
-<a name="line-660"></a>
-<a name="line-661"></a> <span class="n">endInsertRows</span><span class="p">();</span>
-<a name="line-662"></a> <span class="n">emit</span> <span class="nf">processAdded</span><span class="p">(</span><span class="n">infos</span><span class="p">);</span>
-<a name="line-663"></a> <span class="n">emit</span> <span class="nf">itemInfosAdded</span><span class="p">(</span><span class="n">infos</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="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">requestIncrementalRefresh</span><span class="p">()</span>
-<a name="line-667"></a><span class="p">{</span>
-<a name="line-668"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">reAdding</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">incrementalRefreshRequested</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-671"></a> <span class="p">}</span>
-<a name="line-672"></a> <span class="k">else</span>
-<a name="line-673"></a> <span class="p">{</span>
-<a name="line-674"></a> <span class="n">emit</span> <span class="n">readyForIncrementalRefresh</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>
-<a name="line-678"></a><span class="kt">bool</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">hasIncrementalRefreshPending</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-679"></a><span class="p">{</span>
-<a name="line-680"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalRefreshRequested</span><span class="p">;</span>
-<a name="line-681"></a><span class="p">}</span>
+<a name="line-642"></a> <span class="c1">// --------------------------------------------------------</span>
+<a name="line-643"></a>
+<a name="line-644"></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-645"></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-646"></a> <span class="n">sidecarsLayout</span><span class="o">-&gt;</span><span class="n">addStretch</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">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-649"></a>
+<a name="line-650"></a> <span class="c1">// --------------------------------------------------------</span>
+<a name="line-651"></a>
+<a name="line-652"></a> <span class="n">readSettings</span><span class="p">();</span>
+<a name="line-653"></a>
+<a name="line-654"></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-655"></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-656"></a>
+<a name="line-657"></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-658"></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-659"></a>
+<a name="line-660"></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-661"></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-662"></a><span class="p">}</span>
+<a name="line-663"></a>
+<a name="line-664"></a><span class="n">SetupMetadata</span><span class="o">::~</span><span class="n">SetupMetadata</span><span class="p">()</span>
+<a name="line-665"></a><span class="p">{</span>
+<a name="line-666"></a> <span class="k">delete</span> <span class="n">d</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="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-670"></a><span class="p">{</span>
+<a name="line-671"></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-672"></a><span class="p">}</span>
+<a name="line-673"></a>
+<a name="line-674"></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-675"></a><span class="p">{</span>
+<a name="line-676"></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-677"></a><span class="p">}</span>
+<a name="line-678"></a>
+<a name="line-679"></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-680"></a><span class="p">{</span>
+<a name="line-681"></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-682"></a>
-<a name="line-683"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">startIncrementalRefresh</span><span class="p">()</span>
-<a name="line-684"></a><span class="p">{</span>
-<a name="line-685"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalUpdater</span><span class="p">;</span>
-<a name="line-686"></a>
-<a name="line-687"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalUpdater</span> <span class="o">=</span> <span class="k">new</span> <span class="n">ImportItemModelIncrementalUpdater</span><span class="p">(</span><span class="n">d</span><span class="p">);</span>
-<a name="line-688"></a><span class="p">}</span>
+<a name="line-683"></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-684"></a> <span class="p">{</span>
+<a name="line-685"></a> <span class="k">return</span><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">MetaEngineSettingsContainer</span> <span class="n">set</span><span class="p">;</span>
<a name="line-689"></a>
-<a name="line-690"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">finishIncrementalRefresh</span><span class="p">()</span>
-<a name="line-691"></a><span class="p">{</span>
-<a name="line-692"></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">incrementalUpdater</span><span class="p">)</span>
+<a name="line-690"></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-691"></a>
+<a name="line-692"></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-693"></a> <span class="p">{</span>
-<a name="line-694"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-694"></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-695"></a> <span class="p">}</span>
<a name="line-696"></a>
-<a name="line-697"></a> <span class="c1">// remove old entries</span>
-<a name="line-698"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QPair</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">&gt;</span> <span class="n">pairs</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalUpdater</span><span class="o">-&gt;</span><span class="n">oldIndexes</span><span class="p">();</span>
-<a name="line-699"></a> <span class="n">removeRowPairs</span><span class="p">(</span><span class="n">pairs</span><span class="p">);</span>
+<a name="line-697"></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-698"></a> <span class="p">{</span>
+<a name="line-699"></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-700"></a>
-<a name="line-701"></a> <span class="c1">// add new indexes</span>
-<a name="line-702"></a> <span class="n">appendInfos</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalUpdater</span><span class="o">-&gt;</span><span class="n">newInfos</span><span class="p">);</span>
-<a name="line-703"></a>
-<a name="line-704"></a> <span class="k">delete</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalUpdater</span><span class="p">;</span>
-<a name="line-705"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalUpdater</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-706"></a><span class="p">}</span>
-<a name="line-707"></a>
-<a name="line-708"></a><span class="k">template</span> <span class="o">&lt;</span><span class="k">class</span> <span class="nc">List</span><span class="p">,</span> <span class="k">typename</span> <span class="n">T</span><span class="o">&gt;</span>
-<a name="line-709"></a><span class="k">static</span> <span class="kt">bool</span> <span class="n">pairsContain</span><span class="p">(</span><span class="k">const</span> <span class="n">List</span><span class="o">&amp;</span> <span class="n">list</span><span class="p">,</span> <span class="n">T</span> <span class="n">value</span><span class="p">)</span>
-<a name="line-710"></a><span class="p">{</span>
-<a name="line-711"></a> <span class="k">typename</span> <span class="n">List</span><span class="o">::</span><span class="n">const_iterator</span> <span class="n">middle</span><span class="p">;</span>
-<a name="line-712"></a> <span class="k">typename</span> <span class="n">List</span><span class="o">::</span><span class="n">const_iterator</span> <span class="n">begin</span> <span class="o">=</span> <span class="n">list</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span>
-<a name="line-713"></a> <span class="k">typename</span> <span class="n">List</span><span class="o">::</span><span class="n">const_iterator</span> <span class="n">end</span> <span class="o">=</span> <span class="n">list</span><span class="p">.</span><span class="n">end</span><span class="p">();</span>
-<a name="line-714"></a> <span class="kt">int</span> <span class="n">n</span> <span class="o">=</span> <span class="kt">int</span><span class="p">(</span><span class="n">end</span> <span class="o">-</span> <span class="n">begin</span><span class="p">);</span>
-<a name="line-715"></a>
-<a name="line-716"></a> <span class="k">while</span> <span class="p">(</span><span class="n">n</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">)</span>
-<a name="line-717"></a> <span class="p">{</span>
-<a name="line-718"></a> <span class="kt">int</span> <span class="n">half</span> <span class="o">=</span> <span class="n">n</span> <span class="o">&gt;&gt;</span> <span class="mi">1</span><span class="p">;</span>
-<a name="line-719"></a> <span class="n">middle</span> <span class="o">=</span> <span class="n">begin</span> <span class="o">+</span> <span class="n">half</span><span class="p">;</span>
-<a name="line-720"></a>
-<a name="line-721"></a> <span class="k">if</span> <span class="p">((</span><span class="n">middle</span><span class="o">-&gt;</span><span class="n">first</span> <span class="o">&lt;=</span> <span class="n">value</span><span class="p">)</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="n">middle</span><span class="o">-&gt;</span><span class="n">second</span> <span class="o">&gt;=</span> <span class="n">value</span><span class="p">))</span>
-<a name="line-722"></a> <span class="p">{</span>
-<a name="line-723"></a> <span class="k">return</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-724"></a> <span class="p">}</span>
-<a name="line-725"></a> <span class="k">else</span> <span class="k">if</span> <span class="p">(</span><span class="n">middle</span><span class="o">-&gt;</span><span class="n">second</span> <span class="o">&lt;</span> <span class="n">value</span><span class="p">)</span>
-<a name="line-726"></a> <span class="p">{</span>
-<a name="line-727"></a> <span class="n">begin</span> <span class="o">=</span> <span class="n">middle</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
-<a name="line-728"></a> <span class="n">n</span> <span class="o">-=</span> <span class="n">half</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
-<a name="line-729"></a> <span class="p">}</span>
-<a name="line-730"></a> <span class="k">else</span>
-<a name="line-731"></a> <span class="p">{</span>
-<a name="line-732"></a> <span class="n">n</span> <span class="o">=</span> <span class="n">half</span><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>
-<a name="line-736"></a> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-737"></a><span class="p">}</span>
-<a name="line-738"></a>
-<a name="line-739"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">removeIndex</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-740"></a><span class="p">{</span>
-<a name="line-741"></a> <span class="n">removeIndexs</span><span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">QModelIndex</span><span class="o">&gt;</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">index</span><span class="p">);</span>
-<a name="line-742"></a><span class="p">}</span>
+<a name="line-701"></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-702"></a> <span class="p">{</span>
+<a name="line-703"></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-704"></a> <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="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-708"></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-709"></a>
+<a name="line-710"></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-711"></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-712"></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-713"></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-714"></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-715"></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-716"></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-717"></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-718"></a>
+<a name="line-719"></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-720"></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-721"></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-722"></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-723"></a>
+<a name="line-724"></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-725"></a> <span class="p">{</span>
+<a name="line-726"></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-727"></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-728"></a> <span class="p">}</span>
+<a name="line-729"></a> <span class="k">else</span>
+<a name="line-730"></a> <span class="p">{</span>
+<a name="line-731"></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-732"></a> <span class="p">}</span>
+<a name="line-733"></a>
+<a name="line-734"></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-735"></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-736"></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-737"></a>
+<a name="line-738"></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-739"></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-740"></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-741"></a>
+<a name="line-742"></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-743"></a>
-<a name="line-744"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">removeIndexs</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QModelIndex</span><span class="o">&gt;&amp;</span> <span class="n">indexes</span><span class="p">)</span>
-<a name="line-745"></a><span class="p">{</span>
-<a name="line-746"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">indexesList</span><span class="p">;</span>
-<a name="line-747"></a>
-<a name="line-748"></a> <span class="n">foreach</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="n">indexes</span><span class="p">)</span>
-<a name="line-749"></a> <span class="p">{</span>
-<a name="line-750"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">isValid</span><span class="p">(</span><span class="n">index</span><span class="p">))</span>
-<a name="line-751"></a> <span class="p">{</span>
-<a name="line-752"></a> <span class="n">indexesList</span> <span class="o">&lt;&lt;</span> <span class="n">index</span><span class="p">.</span><span class="n">row</span><span class="p">();</span>
-<a name="line-753"></a> <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="k">if</span> <span class="p">(</span><span class="n">indexesList</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-757"></a> <span class="p">{</span>
-<a name="line-758"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-759"></a> <span class="p">}</span>
+<a name="line-744"></a>
+<a name="line-745"></a><span class="cp">#ifdef HAVE_KFILEMETADATA</span>
+<a name="line-746"></a>
+<a name="line-747"></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-748"></a>
+<a name="line-749"></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-750"></a> <span class="p">{</span>
+<a name="line-751"></a> <span class="k">return</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="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-755"></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-756"></a>
+<a name="line-757"></a> <span class="n">aSettings</span><span class="o">-&gt;</span><span class="n">saveSettings</span><span class="p">();</span>
+<a name="line-758"></a>
+<a name="line-759"></a><span class="cp">#endif </span><span class="c1">// HAVE_KFILEMETADATA</span>
<a name="line-760"></a>
-<a name="line-761"></a> <span class="n">removeRowPairsWithCheck</span><span class="p">(</span><span class="n">ImportItemModelIncrementalUpdater</span><span class="o">::</span><span class="n">toContiguousPairs</span><span class="p">(</span><span class="n">indexesList</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">ImportItemModel</span><span class="o">::</span><span class="n">removeCamItemInfo</span><span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">)</span>
-<a name="line-765"></a><span class="p">{</span>
-<a name="line-766"></a> <span class="n">removeCamItemInfos</span><span class="p">(</span><span class="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">info</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">ImportItemModel</span><span class="o">::</span><span class="n">removeCamItemInfos</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;&amp;</span> <span class="n">infos</span><span class="p">)</span>
-<a name="line-770"></a><span class="p">{</span>
-<a name="line-771"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">indexesList</span><span class="p">;</span>
-<a name="line-772"></a>
-<a name="line-773"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span><span class="p">,</span> <span class="n">infos</span><span class="p">)</span>
-<a name="line-774"></a> <span class="p">{</span>
-<a name="line-775"></a> <span class="n">QModelIndex</span> <span class="n">index</span> <span class="o">=</span> <span class="n">indexForCamItemId</span><span class="p">(</span><span class="n">info</span><span class="p">.</span><span class="n">id</span><span class="p">);</span>
+<a name="line-761"></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-762"></a>
+<a name="line-763"></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-764"></a><span class="p">}</span>
+<a name="line-765"></a>
+<a name="line-766"></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-767"></a><span class="p">{</span>
+<a name="line-768"></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-769"></a>
+<a name="line-770"></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-771"></a> <span class="p">{</span>
+<a name="line-772"></a> <span class="k">return</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="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-776"></a>
-<a name="line-777"></a> <span class="k">if</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-778"></a> <span class="p">{</span>
-<a name="line-779"></a> <span class="n">indexesList</span> <span class="o">&lt;&lt;</span> <span class="n">index</span><span class="p">.</span><span class="n">row</span><span class="p">();</span>
-<a name="line-780"></a> <span class="p">}</span>
-<a name="line-781"></a> <span class="p">}</span>
-<a name="line-782"></a>
-<a name="line-783"></a> <span class="n">removeRowPairsWithCheck</span><span class="p">(</span><span class="n">ImportItemModelIncrementalUpdater</span><span class="o">::</span><span class="n">toContiguousPairs</span><span class="p">(</span><span class="n">indexesList</span><span class="p">));</span>
-<a name="line-784"></a><span class="p">}</span>
+<a name="line-777"></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-778"></a> <span class="p">{</span>
+<a name="line-779"></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-780"></a> <span class="p">}</span>
+<a name="line-781"></a> <span class="k">else</span>
+<a name="line-782"></a> <span class="p">{</span>
+<a name="line-783"></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-784"></a> <span class="p">}</span>
<a name="line-785"></a>
-<a name="line-786"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">setSendRemovalSignals</span><span class="p">(</span><span class="kt">bool</span> <span class="n">send</span><span class="p">)</span>
-<a name="line-787"></a><span class="p">{</span>
-<a name="line-788"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">sendRemovalSignals</span> <span class="o">=</span> <span class="n">send</span><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="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">removeRowPairsWithCheck</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QPair</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">&gt;&amp;</span> <span class="n">toRemove</span><span class="p">)</span>
-<a name="line-792"></a><span class="p">{</span>
-<a name="line-793"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalUpdater</span><span class="p">)</span>
-<a name="line-794"></a> <span class="p">{</span>
-<a name="line-795"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">incrementalUpdater</span><span class="o">-&gt;</span><span class="n">aboutToBeRemovedInModel</span><span class="p">(</span><span class="n">toRemove</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="n">removeRowPairs</span><span class="p">(</span><span class="n">toRemove</span><span class="p">);</span>
-<a name="line-799"></a><span class="p">}</span>
-<a name="line-800"></a>
-<a name="line-801"></a><span class="kt">void</span> <span class="n">ImportItemModel</span><span class="o">::</span><span class="n">removeRowPairs</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QPair</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">&gt;&amp;</span> <span class="n">toRemove</span><span class="p">)</span>
-<a name="line-802"></a><span class="p">{</span>
-<a name="line-803"></a> <span class="k">if</span> <span class="p">(</span><span class="n">toRemove</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-804"></a> <span class="p">{</span>
-<a name="line-805"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-806"></a> <span class="p">}</span>
-<a name="line-807"></a>
-<a name="line-808"></a> <span class="c1">// Remove old indexes</span>
-<a name="line-809"></a> <span class="c1">// Keep in mind that when calling beginRemoveRows all structures announced to be removed</span>
-<a name="line-810"></a> <span class="c1">// must still be valid, and this includes our hashes as well, which limits what we can optimize</span>
-<a name="line-811"></a>
-<a name="line-812"></a> <span class="kt">int</span> <span class="n">removedRows</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-813"></a> <span class="kt">int</span> <span class="n">offset</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-814"></a>
-<a name="line-815"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">IntPair</span><span class="o">&amp;</span> <span class="n">pair</span><span class="p">,</span> <span class="n">toRemove</span><span class="p">)</span>
-<a name="line-816"></a> <span class="p">{</span>
-<a name="line-817"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">begin</span> <span class="o">=</span> <span class="n">pair</span><span class="p">.</span><span class="n">first</span> <span class="o">-</span> <span class="n">offset</span><span class="p">;</span>
-<a name="line-818"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">end</span> <span class="o">=</span> <span class="n">pair</span><span class="p">.</span><span class="n">second</span> <span class="o">-</span> <span class="n">offset</span><span class="p">;</span>
-<a name="line-819"></a> <span class="n">removedRows</span> <span class="o">=</span> <span class="n">end</span> <span class="o">-</span> <span class="n">begin</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
-<a name="line-820"></a>
-<a name="line-821"></a> <span class="c1">// when removing from the list, all subsequent indexes are affected</span>
-<a name="line-822"></a> <span class="n">offset</span> <span class="o">+=</span> <span class="n">removedRows</span><span class="p">;</span>
+<a name="line-786"></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-787"></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-788"></a>
+<a name="line-789"></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-790"></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-791"></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-792"></a>
+<a name="line-793"></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-794"></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-795"></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-796"></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-797"></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-798"></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-799"></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-800"></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-801"></a>
+<a name="line-802"></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-803"></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-804"></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-805"></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-806"></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-807"></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-808"></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-809"></a>
+<a name="line-810"></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-811"></a> <span class="p">{</span>
+<a name="line-812"></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-813"></a> <span class="p">}</span>
+<a name="line-814"></a> <span class="k">else</span>
+<a name="line-815"></a> <span class="p">{</span>
+<a name="line-816"></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-817"></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-818"></a> <span class="p">}</span>
+<a name="line-819"></a>
+<a name="line-820"></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-821"></a>
+<a name="line-822"></a><span class="cp">#ifdef HAVE_KFILEMETADATA</span>
<a name="line-823"></a>
-<a name="line-824"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;</span> <span class="n">removedInfos</span><span class="p">;</span>
+<a name="line-824"></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-825"></a>
-<a name="line-826"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sendRemovalSignals</span><span class="p">)</span>
-<a name="line-827"></a> <span class="p">{</span>
-<a name="line-828"></a> <span class="n">std</span><span class="o">::</span><span class="n">copy</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">begin</span><span class="p">()</span> <span class="o">+</span> <span class="n">begin</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">begin</span><span class="p">()</span> <span class="o">+</span> <span class="n">end</span><span class="p">,</span> <span class="n">removedInfos</span><span class="p">.</span><span class="n">begin</span><span class="p">());</span>
-<a name="line-829"></a> <span class="n">emit</span> <span class="nf">itemInfosAboutToBeRemoved</span><span class="p">(</span><span class="n">removedInfos</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">itemInfosAboutToBeRemoved</span><span class="p">(</span><span class="n">begin</span><span class="p">,</span> <span class="n">end</span><span class="p">);</span>
-<a name="line-833"></a> <span class="n">beginRemoveRows</span><span class="p">(</span><span class="n">QModelIndex</span><span class="p">(),</span> <span class="n">begin</span><span class="p">,</span> <span class="n">end</span><span class="p">);</span>
-<a name="line-834"></a>
-<a name="line-835"></a> <span class="c1">// update idHash - which points to indexes of d-&gt;infos</span>
-<a name="line-836"></a> <span class="n">QHash</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;::</span><span class="n">iterator</span> <span class="n">it</span><span class="p">;</span>
+<a name="line-826"></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-827"></a> <span class="p">{</span>
+<a name="line-828"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-829"></a> <span class="p">}</span>
+<a name="line-830"></a>
+<a name="line-831"></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-832"></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-833"></a>
+<a name="line-834"></a><span class="cp">#endif </span><span class="c1">// HAVE_KFILEMETADATA</span>
+<a name="line-835"></a>
+<a name="line-836"></a><span class="p">}</span>
<a name="line-837"></a>
-<a name="line-838"></a> <span class="k">for</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">idHash</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">d</span><span class="o">-&gt;</span><span class="n">idHash</span><span class="p">.</span><span class="n">end</span><span class="p">()</span> <span class="p">;</span> <span class="p">)</span>
-<a name="line-839"></a> <span class="p">{</span>
-<a name="line-840"></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">begin</span><span class="p">)</span>
-<a name="line-841"></a> <span class="p">{</span>
-<a name="line-842"></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">end</span><span class="p">)</span>
-<a name="line-843"></a> <span class="p">{</span>
-<a name="line-844"></a> <span class="c1">// after the removed interval, adjust index</span>
-<a name="line-845"></a> <span class="n">it</span><span class="p">.</span><span class="n">value</span><span class="p">()</span> <span class="o">-=</span> <span class="n">removedRows</span><span class="p">;</span>
-<a name="line-846"></a> <span class="p">}</span>
-<a name="line-847"></a> <span class="k">else</span>
-<a name="line-848"></a> <span class="p">{</span>
-<a name="line-849"></a> <span class="c1">// in the removed interval</span>
-<a name="line-850"></a> <span class="n">it</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">idHash</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">it</span><span class="p">);</span>
-<a name="line-851"></a> <span class="k">continue</span><span class="p">;</span>
-<a name="line-852"></a> <span class="p">}</span>
-<a name="line-853"></a> <span class="p">}</span>
-<a name="line-854"></a>
-<a name="line-855"></a> <span class="o">++</span><span class="n">it</span><span class="p">;</span>
-<a name="line-856"></a> <span class="p">}</span>
-<a name="line-857"></a>
-<a name="line-858"></a> <span class="c1">// remove from list</span>
-<a name="line-859"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">begin</span><span class="p">()</span> <span class="o">+</span> <span class="n">begin</span><span class="p">,</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">begin</span><span class="p">()</span> <span class="o">+</span> <span class="p">(</span><span class="n">end</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">endRemoveRows</span><span class="p">();</span>
-<a name="line-862"></a>
-<a name="line-863"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">sendRemovalSignals</span><span class="p">)</span>
-<a name="line-864"></a> <span class="p">{</span>
-<a name="line-865"></a> <span class="n">emit</span> <span class="n">itemInfosRemoved</span><span class="p">(</span><span class="n">removedInfos</span><span class="p">);</span>
-<a name="line-866"></a> <span class="p">}</span>
-<a name="line-867"></a> <span class="p">}</span>
-<a name="line-868"></a>
-<a name="line-869"></a> <span class="c1">// tidy up: remove old indexes from file path hash now</span>
-<a name="line-870"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">keepFileUrlCache</span><span class="p">)</span>
-<a name="line-871"></a> <span class="p">{</span>
-<a name="line-872"></a> <span class="n">QHash</span><span class="o">&lt;</span><span class="n">QString</span><span class="p">,</span> <span class="n">qlonglong</span><span class="o">&gt;::</span><span class="n">iterator</span> <span class="n">it</span><span class="p">;</span>
-<a name="line-873"></a>
-<a name="line-874"></a> <span class="k">for</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">fileUrlHash</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">d</span><span class="o">-&gt;</span><span class="n">fileUrlHash</span><span class="p">.</span><span class="n">end</span><span class="p">()</span> <span class="p">;</span> <span class="p">)</span>
-<a name="line-875"></a> <span class="p">{</span>
-<a name="line-876"></a> <span class="k">if</span> <span class="p">(</span><span class="n">pairsContain</span><span class="p">(</span><span class="n">toRemove</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-877"></a> <span class="p">{</span>
-<a name="line-878"></a> <span class="n">it</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">fileUrlHash</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">it</span><span class="p">);</span>
-<a name="line-879"></a> <span class="p">}</span>
-<a name="line-880"></a> <span class="k">else</span>
-<a name="line-881"></a> <span class="p">{</span>
-<a name="line-882"></a> <span class="o">++</span><span class="n">it</span><span class="p">;</span>
-<a name="line-883"></a> <span class="p">}</span>
-<a name="line-884"></a> <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-838"></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-839"></a><span class="p">{</span>
+<a name="line-840"></a> <span class="k">return</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-841"></a><span class="p">}</span>
+<a name="line-842"></a>
+<a name="line-843"></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-844"></a><span class="p">{</span>
+<a name="line-845"></a> <span class="c1">// Show info if rotation was switched off, and only once.</span>
+<a name="line-846"></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-847"></a> <span class="p">{</span>
+<a name="line-848"></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-849"></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-850"></a> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info&quot;</span><span class="p">,</span>
+<a name="line-851"></a> <span class="s">&quot;Switching off exif auto rotation will most probably show &quot;</span>
+<a name="line-852"></a> <span class="s">&quot;your images in a wrong orientation, so only change this &quot;</span>
+<a name="line-853"></a> <span class="s">&quot;option if you explicitly require this.&quot;</span><span class="p">));</span>
+<a name="line-854"></a> <span class="p">}</span>
+<a name="line-855"></a><span class="p">}</span>
+<a name="line-856"></a>
+<a name="line-857"></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-858"></a><span class="p">{</span>
+<a name="line-859"></a> <span class="c1">// Show info if delete metadata from the database was switched on, and only once.</span>
+<a name="line-860"></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-861"></a> <span class="p">{</span>
+<a name="line-862"></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-863"></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-864"></a> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info&quot;</span><span class="p">,</span>
+<a name="line-865"></a> <span class="s">&quot;Switching on this option and your metadata has been written to the &quot;</span>
+<a name="line-866"></a> <span class="s">&quot;database only and not to the file or sidecar, you will be able to &quot;</span>
+<a name="line-867"></a> <span class="s">&quot;lose inserted metadata such as tags, keywords, or geographic &quot;</span>
+<a name="line-868"></a> <span class="s">&quot;coordinates.&quot;</span><span class="p">));</span>
+<a name="line-869"></a> <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">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-873"></a><span class="p">{</span>
+<a name="line-874"></a> <span class="c1">// Show info if write metadata to raw files was switched on</span>
+<a name="line-875"></a> <span class="k">if</span> <span class="p">(</span><span class="n">b</span><span class="p">)</span>
+<a name="line-876"></a> <span class="p">{</span>
+<a name="line-877"></a> <span class="n">QApplication</span><span class="o">::</span><span class="n">beep</span><span class="p">();</span>
+<a name="line-878"></a>
+<a name="line-879"></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-880"></a> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">applicationName</span><span class="p">(),</span>
+<a name="line-881"></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-882"></a> <span class="s">&quot;&lt;p&gt;DigiKam delegates this task to the Exiv2 library. With different RAW &quot;</span>
+<a name="line-883"></a> <span class="s">&quot;formats, problems are known which can lead to the destruction of RAW &quot;</span>
+<a name="line-884"></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-885"></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-886"></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-887"></a>
-<a name="line-888"></a><span class="c1">// ------------ ImportItemModelIncrementalUpdater ------------</span>
-<a name="line-889"></a>
-<a name="line-890"></a><span class="n">ImportItemModelIncrementalUpdater</span><span class="o">::</span><span class="n">ImportItemModelIncrementalUpdater</span><span class="p">(</span><span class="n">ImportItemModel</span><span class="o">::</span><span class="n">Private</span><span class="o">*</span> <span class="k">const</span> <span class="n">d</span><span class="p">)</span>
-<a name="line-891"></a><span class="p">{</span>
-<a name="line-892"></a><span class="hll"> <span class="n">oldIds</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">idHash</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'oldIds' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;oldIds&apos; a value by passing the value to the constructor in the initialization list.</div></div>
-</span><a name="line-893"></a><span class="p">}</span>
-<a name="line-894"></a>
-<a name="line-895"></a><span class="kt">void</span> <span class="n">ImportItemModelIncrementalUpdater</span><span class="o">::</span><span class="n">aboutToBeRemovedInModel</span><span class="p">(</span><span class="k">const</span> <span class="n">IntPairList</span><span class="o">&amp;</span> <span class="n">toRemove</span><span class="p">)</span>
-<a name="line-896"></a><span class="p">{</span>
-<a name="line-897"></a> <span class="n">modelRemovals</span> <span class="o">&lt;&lt;</span> <span class="n">toRemove</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="kt">void</span> <span class="n">ImportItemModelIncrementalUpdater</span><span class="o">::</span><span class="n">appendInfos</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="n">CamItemInfo</span><span class="o">&gt;&amp;</span> <span class="n">infos</span><span class="p">)</span>
-<a name="line-901"></a><span class="p">{</span>
-<a name="line-902"></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">infos</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-903"></a> <span class="p">{</span>
-<a name="line-904"></a> <span class="k">const</span> <span class="n">CamItemInfo</span><span class="o">&amp;</span> <span class="n">info</span> <span class="o">=</span> <span class="n">infos</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-905"></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-906"></a> <span class="n">QHash</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;::</span><span class="n">iterator</span> <span class="n">it</span><span class="p">;</span>
-<a name="line-907"></a>
-<a name="line-908"></a> <span class="k">for</span> <span class="p">(</span><span class="n">it</span> <span class="o">=</span> <span class="n">oldIds</span><span class="p">.</span><span class="n">find</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="p">;</span> <span class="n">it</span> <span class="o">!=</span> <span class="n">oldIds</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-909"></a> <span class="p">{</span>
-<a name="line-910"></a> <span class="k">if</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="o">==</span> <span class="n">info</span><span class="p">.</span><span class="n">id</span><span class="p">)</span>
-<a name="line-911"></a> <span class="p">{</span>
-<a name="line-912"></a> <span class="n">found</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-913"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-914"></a> <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="k">if</span> <span class="p">(</span><span class="n">found</span><span class="p">)</span>
-<a name="line-918"></a> <span class="p">{</span>
-<a name="line-919"></a> <span class="n">oldIds</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">it</span><span class="p">);</span>
-<a name="line-920"></a> <span class="p">}</span>
-<a name="line-921"></a> <span class="k">else</span>
-<a name="line-922"></a> <span class="p">{</span>
-<a name="line-923"></a> <span class="n">newInfos</span> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="p">;</span>
-<a name="line-924"></a> <span class="p">}</span>
-<a name="line-925"></a> <span class="p">}</span>
-<a name="line-926"></a><span class="p">}</span>
-<a name="line-927"></a>
-<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="kt">int</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;</span> <span class="o">&gt;</span> <span class="n">ImportItemModelIncrementalUpdater</span><span class="o">::</span><span class="n">toContiguousPairs</span><span class="p">(</span><span class="k">const</span> <span class="n">QList</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;&amp;</span> <span class="n">unsorted</span><span class="p">)</span>
-<a name="line-929"></a><span class="p">{</span>
-<a name="line-930"></a> <span class="c1">// Take the given indices and return them as contiguous pairs [begin, end]</span>
-<a name="line-931"></a>
-<a name="line-932"></a> <span class="n">QList</span><span class="o">&lt;</span><span class="n">QPair</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">&gt;</span> <span class="n">pairs</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">unsorted</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-935"></a> <span class="p">{</span>
-<a name="line-936"></a> <span class="k">return</span> <span class="n">pairs</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="n">QList</span><span class="o">&lt;</span><span class="kt">int</span><span class="o">&gt;</span> <span class="n">indices</span><span class="p">(</span><span class="n">unsorted</span><span class="p">);</span>
-<a name="line-940"></a> <span class="n">std</span><span class="o">::</span><span class="n">sort</span><span class="p">(</span><span class="n">indices</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span> <span class="n">indices</span><span class="p">.</span><span class="n">end</span><span class="p">());</span>
-<a name="line-941"></a>
-<a name="line-942"></a> <span class="n">QPair</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="n">pair</span><span class="p">(</span><span class="n">indices</span><span class="p">.</span><span class="n">first</span><span class="p">(),</span> <span class="n">indices</span><span class="p">.</span><span class="n">first</span><span class="p">());</span>
-<a name="line-943"></a>
-<a name="line-944"></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">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-945"></a> <span class="p">{</span>
-<a name="line-946"></a> <span class="k">const</span> <span class="kt">int</span> <span class="o">&amp;</span><span class="n">index</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>
-<a name="line-947"></a>
-<a name="line-948"></a> <span class="k">if</span> <span class="p">(</span><span class="n">index</span> <span class="o">==</span> <span class="n">pair</span><span class="p">.</span><span class="n">second</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
-<a name="line-949"></a> <span class="p">{</span>
-<a name="line-950"></a> <span class="n">pair</span><span class="p">.</span><span class="n">second</span> <span class="o">=</span> <span class="n">index</span><span class="p">;</span>
-<a name="line-951"></a> <span class="k">continue</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="n">pairs</span> <span class="o">&lt;&lt;</span> <span class="n">pair</span><span class="p">;</span> <span class="c1">// insert last pair</span>
-<a name="line-955"></a> <span class="n">pair</span><span class="p">.</span><span class="n">first</span> <span class="o">=</span> <span class="n">index</span><span class="p">;</span>
-<a name="line-956"></a> <span class="n">pair</span><span class="p">.</span><span class="n">second</span> <span class="o">=</span> <span class="n">index</span><span class="p">;</span>
-<a name="line-957"></a> <span class="p">}</span>
-<a name="line-958"></a>
-<a name="line-959"></a> <span class="n">pairs</span> <span class="o">&lt;&lt;</span> <span class="n">pair</span><span class="p">;</span>
-<a name="line-960"></a>
-<a name="line-961"></a> <span class="k">return</span> <span class="n">pairs</span><span class="p">;</span>
-<a name="line-962"></a><span class="p">}</span>
-<a name="line-963"></a>
-<a name="line-964"></a><span class="n">QList</span><span class="o">&lt;</span><span class="n">QPair</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">&gt;</span> <span class="n">ImportItemModelIncrementalUpdater</span><span class="o">::</span><span class="n">oldIndexes</span><span class="p">()</span>
-<a name="line-965"></a><span class="p">{</span>
-<a name="line-966"></a> <span class="c1">// first, apply all changes to indexes by direct removal in model</span>
-<a name="line-967"></a> <span class="c1">// while the updater was active</span>
-<a name="line-968"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">IntPairList</span><span class="o">&amp;</span> <span class="n">list</span><span class="p">,</span> <span class="n">modelRemovals</span><span class="p">)</span>
-<a name="line-969"></a> <span class="p">{</span>
-<a name="line-970"></a> <span class="kt">int</span> <span class="n">removedRows</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-971"></a> <span class="kt">int</span> <span class="n">offset</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-972"></a>
-<a name="line-973"></a> <span class="n">foreach</span> <span class="p">(</span><span class="k">const</span> <span class="n">IntPair</span><span class="o">&amp;</span> <span class="n">pair</span><span class="p">,</span> <span class="n">list</span><span class="p">)</span>
-<a name="line-974"></a> <span class="p">{</span>
-<a name="line-975"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">begin</span> <span class="o">=</span> <span class="n">pair</span><span class="p">.</span><span class="n">first</span> <span class="o">-</span> <span class="n">offset</span><span class="p">;</span>
-<a name="line-976"></a> <span class="k">const</span> <span class="kt">int</span> <span class="n">end</span> <span class="o">=</span> <span class="n">pair</span><span class="p">.</span><span class="n">second</span> <span class="o">-</span> <span class="n">offset</span><span class="p">;</span> <span class="c1">// inclusive</span>
-<a name="line-977"></a> <span class="n">removedRows</span> <span class="o">=</span> <span class="n">end</span> <span class="o">-</span> <span class="n">begin</span> <span class="o">+</span> <span class="mi">1</span><span class="p">;</span>
-<a name="line-978"></a>
-<a name="line-979"></a> <span class="c1">// when removing from the list, all subsequent indexes are affected</span>
-<a name="line-980"></a> <span class="n">offset</span> <span class="o">+=</span> <span class="n">removedRows</span><span class="p">;</span>
-<a name="line-981"></a>
-<a name="line-982"></a> <span class="c1">// update idHash - which points to indexes of d-&gt;infos, and these change now!</span>
-<a name="line-983"></a> <span class="n">QHash</span><span class="o">&lt;</span><span class="n">qlonglong</span><span class="p">,</span> <span class="kt">int</span><span class="o">&gt;::</span><span class="n">iterator</span> <span class="n">it</span><span class="p">;</span>
-<a name="line-984"></a>
-<a name="line-985"></a> <span class="k">for</span> <span class="p">(</span><span class="n">it</span> <span class="o">=</span> <span class="n">oldIds</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">oldIds</span><span class="p">.</span><span class="n">end</span><span class="p">()</span> <span class="p">;</span> <span class="p">)</span>
-<a name="line-986"></a> <span class="p">{</span>
-<a name="line-987"></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">begin</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">it</span><span class="p">.</span><span class="n">value</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">end</span><span class="p">)</span>
-<a name="line-990"></a> <span class="p">{</span>
-<a name="line-991"></a> <span class="c1">// after the removed interval: adjust index</span>
-<a name="line-992"></a> <span class="n">it</span><span class="p">.</span><span class="n">value</span><span class="p">()</span> <span class="o">-=</span> <span class="n">removedRows</span><span class="p">;</span>
-<a name="line-993"></a> <span class="p">}</span>
-<a name="line-994"></a> <span class="k">else</span>
-<a name="line-995"></a> <span class="p">{</span>
-<a name="line-996"></a> <span class="c1">// in the removed interval</span>
-<a name="line-997"></a> <span class="n">it</span> <span class="o">=</span> <span class="n">oldIds</span><span class="p">.</span><span class="n">erase</span><span class="p">(</span><span class="n">it</span><span class="p">);</span>
-<a name="line-998"></a> <span class="k">continue</span><span class="p">;</span>
-<a name="line-999"></a> <span class="p">}</span>
-<a name="line-1000"></a> <span class="p">}</span>
-<a name="line-1001"></a>
-<a name="line-1002"></a> <span class="o">++</span><span class="n">it</span><span class="p">;</span>
-<a name="line-1003"></a> <span class="p">}</span>
-<a name="line-1004"></a> <span class="p">}</span>
-<a name="line-1005"></a> <span class="p">}</span>
-<a name="line-1006"></a>
-<a name="line-1007"></a> <span class="n">modelRemovals</span><span class="p">.</span><span class="n">clear</span><span class="p">();</span>
-<a name="line-1008"></a>
-<a name="line-1009"></a> <span class="k">return</span> <span class="nf">toContiguousPairs</span><span class="p">(</span><span class="n">oldIds</span><span class="p">.</span><span class="n">values</span><span class="p">());</span>
-<a name="line-1010"></a><span class="p">}</span>
-<a name="line-1011"></a>
-<a name="line-1012"></a><span class="c1">// ------------ QAbstractItemModel implementation -------------</span>
-<a name="line-1013"></a>
-<a name="line-1014"></a><span class="n">QVariant</span> <span class="n">ImportItemModel</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-1015"></a><span class="p">{</span>
-<a name="line-1016"></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">isValid</span><span class="p">(</span><span class="n">index</span><span class="p">))</span>
-<a name="line-1017"></a> <span class="p">{</span>
-<a name="line-1018"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="p">();</span>
-<a name="line-1019"></a> <span class="p">}</span>
-<a name="line-1020"></a>
-<a name="line-1021"></a> <span class="k">switch</span><span class="p">(</span><span class="n">role</span><span class="p">)</span>
-<a name="line-1022"></a> <span class="p">{</span>
-<a name="line-1023"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">DisplayRole</span><span class="p">:</span>
-<a name="line-1024"></a> <span class="k">case</span> <span class="n">Qt</span><span class="o">::</span><span class="nl">ToolTipRole</span><span class="p">:</span>
-<a name="line-1025"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">at</span><span class="p">(</span><span class="n">index</span><span class="p">.</span><span class="n">row</span><span class="p">()).</span><span class="n">name</span><span class="p">;</span>
-<a name="line-1026"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-1027"></a>
-<a name="line-1028"></a> <span class="k">case</span> <span class="nl">ImportItemModelPointerRole</span><span class="p">:</span>
-<a name="line-1029"></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="k">const_cast</span><span class="o">&lt;</span><span class="n">ImportItemModel</span><span class="o">*&gt;</span><span class="p">(</span><span class="k">this</span><span class="p">));</span>
-<a name="line-1030"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-1031"></a>
-<a name="line-1032"></a> <span class="k">case</span> <span class="nl">ImportItemModelInternalId</span><span class="p">:</span>
-<a name="line-1033"></a> <span class="k">return</span> <span class="n">index</span><span class="p">.</span><span class="n">row</span><span class="p">();</span>
-<a name="line-1034"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-1035"></a> <span class="p">}</span>
-<a name="line-1036"></a>
-<a name="line-1037"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="p">();</span>
-<a name="line-1038"></a><span class="p">}</span>
-<a name="line-1039"></a>
-<a name="line-1040"></a><span class="n">QVariant</span> <span class="n">ImportItemModel</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-1041"></a><span class="p">{</span>
-<a name="line-1042"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">section</span><span class="p">)</span>
-<a name="line-1043"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">orientation</span><span class="p">)</span>
-<a name="line-1044"></a> <span class="n">Q_UNUSED</span><span class="p">(</span><span class="n">role</span><span class="p">)</span>
-<a name="line-1045"></a>
-<a name="line-1046"></a> <span class="k">return</span> <span class="n">QVariant</span><span class="p">();</span>
-<a name="line-1047"></a><span class="p">}</span>
-<a name="line-1048"></a>
-<a name="line-1049"></a><span class="kt">int</span> <span class="n">ImportItemModel</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-1050"></a><span class="p">{</span>
-<a name="line-1051"></a> <span class="k">if</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-1052"></a> <span class="p">{</span>
-<a name="line-1053"></a> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-1054"></a> <span class="p">}</span>
-<a name="line-1055"></a>
-<a name="line-1056"></a> <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">size</span><span class="p">();</span>
-<a name="line-1057"></a><span class="p">}</span>
-<a name="line-1058"></a>
-<a name="line-1059"></a><span class="n">Qt</span><span class="o">::</span><span class="n">ItemFlags</span> <span class="n">ImportItemModel</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-1060"></a><span class="p">{</span>
-<a name="line-1061"></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">isValid</span><span class="p">(</span><span class="n">index</span><span class="p">))</span>
-<a name="line-1062"></a> <span class="p">{</span>
-<a name="line-1063"></a> <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-1064"></a> <span class="p">}</span>
-<a name="line-1065"></a>
-<a name="line-1066"></a> <span class="n">Qt</span><span class="o">::</span><span class="n">ItemFlags</span> <span class="n">f</span> <span class="o">=</span> <span class="n">Qt</span><span class="o">::</span><span class="n">ItemIsSelectable</span> <span class="o">|</span> <span class="n">Qt</span><span class="o">::</span><span class="n">ItemIsEnabled</span><span class="p">;</span>
-<a name="line-1067"></a>
-<a name="line-1068"></a> <span class="n">f</span> <span class="o">|=</span> <span class="n">dragDropFlags</span><span class="p">(</span><span class="n">index</span><span class="p">);</span>
-<a name="line-1069"></a>
-<a name="line-1070"></a> <span class="k">return</span> <span class="n">f</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="n">QModelIndex</span> <span class="n">ImportItemModel</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-1074"></a><span class="p">{</span>
-<a name="line-1075"></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="o">||</span> <span class="n">row</span> <span class="o">&lt;</span> <span class="mi">0</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="n">row</span> <span class="o">&gt;=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">infos</span><span class="p">.</span><span class="n">size</span><span class="p">())</span>
-<a name="line-1076"></a> <span class="p">{</span>
-<a name="line-1077"></a> <span class="k">return</span> <span class="n">QModelIndex</span><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">return</span> <span class="n">createIndex</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-1081"></a><span class="p">}</span>
-<a name="line-1082"></a>
-<a name="line-1083"></a><span class="p">}</span> <span class="c1">// namespace Digikam</span>
+<a name="line-888"></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-889"></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-890"></a>
+<a name="line-891"></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-892"></a> <span class="k">delete</span> <span class="n">msgBox</span><span class="p">;</span>
+<a name="line-893"></a>
+<a name="line-894"></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-895"></a> <span class="p">{</span>
+<a name="line-896"></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-897"></a> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">applicationName</span><span class="p">(),</span>
+<a name="line-898"></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-899"></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-900"></a>
+<a name="line-901"></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-902"></a> <span class="k">delete</span> <span class="n">msgBox</span><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">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-905"></a> <span class="p">{</span>
+<a name="line-906"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-907"></a> <span class="p">}</span>
+<a name="line-908"></a> <span class="p">}</span>
+<a name="line-909"></a>
+<a name="line-910"></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-911"></a> <span class="p">}</span>
+<a name="line-912"></a><span class="p">}</span>
+<a name="line-913"></a>
+<a name="line-914"></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/59.html b/static/reports/cppcheck/master/59.html
index eb2c90cae..67829a018 100644
--- a/static/reports/cppcheck/master/59.html
+++ b/static/reports/cppcheck/master/59.html
@@ -1,1973 +1,1315 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/utilities/setup/metadata/setupmetadata.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/utilities/setup/setup.cpp </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> setupmetadata.cpp</p>
-<a href='59.html#line-879'> shadowVar 879</a><a href='59.html#line-891'> shadowVar 891</a><a href='59.html#line-896'> shadowVar 896</a><a href='59.html#line-901'> shadowVar 901</a>
+ <p id="filename"><a href="index.html">Defects:</a> setup.cpp</p>
+<a href='59.html#line-301'> shadowVar 301</a><a href='59.html#line-319'> shadowVar 319</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</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
+585</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-6"></a><span class="cm"> * Date : 2003-02-03</span>
+<a name="line-7"></a><span class="cm"> * Description : digiKam setup dialog.</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-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) 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-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 Album</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 Album 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;setup.h&quot;</span><span class="cp"></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-27"></a><span class="c1">// Qt includes</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-29"></a><span class="cp">#include</span> <span class="cpf">&lt;QPointer&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;QMessageBox&gt;</span><span class="cp"></span>
+<a name="line-32"></a>
+<a name="line-33"></a><span class="c1">// KDE includes</span>
+<a name="line-34"></a>
+<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&lt;kconfiggroup.h&gt;</span><span class="cp"></span>
+<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><span class="cp">#include</span> <span class="cpf">&lt;ksharedconfig.h&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;digikam_debug.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;applicationsettings.h&quot;</span><span class="cp"></span>
+<a name="line-44"></a><span class="cp">#include</span> <span class="cpf">&quot;setupalbumview.h&quot;</span><span class="cp"></span>
+<a name="line-45"></a><span class="cp">#include</span> <span class="cpf">&quot;setupcamera.h&quot;</span><span class="cp"></span>
+<a name="line-46"></a><span class="cp">#include</span> <span class="cpf">&quot;setupcollections.h&quot;</span><span class="cp"></span>
+<a name="line-47"></a><span class="cp">#include</span> <span class="cpf">&quot;setupeditor.h&quot;</span><span class="cp"></span>
+<a name="line-48"></a><span class="cp">#include</span> <span class="cpf">&quot;setupicc.h&quot;</span><span class="cp"></span>
+<a name="line-49"></a><span class="cp">#include</span> <span class="cpf">&quot;setuplighttable.h&quot;</span><span class="cp"></span>
+<a name="line-50"></a><span class="cp">#include</span> <span class="cpf">&quot;setupmetadata.h&quot;</span><span class="cp"></span>
+<a name="line-51"></a><span class="cp">#include</span> <span class="cpf">&quot;setupmisc.h&quot;</span><span class="cp"></span>
+<a name="line-52"></a><span class="cp">#include</span> <span class="cpf">&quot;setupslideshow.h&quot;</span><span class="cp"></span>
+<a name="line-53"></a><span class="cp">#include</span> <span class="cpf">&quot;setupimagequalitysorter.h&quot;</span><span class="cp"></span>
+<a name="line-54"></a><span class="cp">#include</span> <span class="cpf">&quot;setuptooltip.h&quot;</span><span class="cp"></span>
+<a name="line-55"></a><span class="cp">#include</span> <span class="cpf">&quot;setupdatabase.h&quot;</span><span class="cp"></span>
+<a name="line-56"></a><span class="cp">#include</span> <span class="cpf">&quot;setupplugins.h&quot;</span><span class="cp"></span>
+<a name="line-57"></a><span class="cp">#include</span> <span class="cpf">&quot;importsettings.h&quot;</span><span class="cp"></span>
+<a name="line-58"></a><span class="cp">#include</span> <span class="cpf">&quot;dxmlguiwindow.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">Digikam</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">Setup</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">explicit</span> <span class="n">Private</span><span class="p">()</span>
+<a name="line-68"></a> <span class="o">:</span> <span class="n">page_database</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-69"></a> <span class="n">page_collections</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-70"></a> <span class="n">page_albumView</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-71"></a> <span class="n">page_tooltip</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-72"></a> <span class="n">page_metadata</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-73"></a> <span class="n">page_template</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-74"></a> <span class="n">page_lighttable</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-75"></a> <span class="n">page_editor</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-76"></a> <span class="n">page_slideshow</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-77"></a> <span class="n">page_imagequalitysorter</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-78"></a> <span class="n">page_icc</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-79"></a> <span class="n">page_camera</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-80"></a> <span class="n">page_plugins</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-81"></a> <span class="n">page_misc</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-82"></a> <span class="n">databasePage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-83"></a> <span class="n">collectionsPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-84"></a> <span class="n">albumViewPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-85"></a> <span class="n">tooltipPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-86"></a> <span class="n">metadataPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-87"></a> <span class="n">templatePage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-88"></a> <span class="n">lighttablePage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-89"></a> <span class="n">editorPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-90"></a> <span class="n">slideshowPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-91"></a> <span class="n">imageQualitySorterPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-92"></a> <span class="n">iccPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-93"></a> <span class="n">cameraPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-94"></a> <span class="n">pluginsPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
+<a name="line-95"></a> <span class="n">miscPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">)</span>
+<a name="line-96"></a> <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="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_database</span><span class="p">;</span>
+<a name="line-100"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_collections</span><span class="p">;</span>
+<a name="line-101"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_albumView</span><span class="p">;</span>
+<a name="line-102"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_tooltip</span><span class="p">;</span>
+<a name="line-103"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_metadata</span><span class="p">;</span>
+<a name="line-104"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_template</span><span class="p">;</span>
+<a name="line-105"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_lighttable</span><span class="p">;</span>
+<a name="line-106"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_editor</span><span class="p">;</span>
+<a name="line-107"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_slideshow</span><span class="p">;</span>
+<a name="line-108"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_imagequalitysorter</span><span class="p">;</span>
+<a name="line-109"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_icc</span><span class="p">;</span>
+<a name="line-110"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_camera</span><span class="p">;</span>
+<a name="line-111"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_plugins</span><span class="p">;</span>
+<a name="line-112"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_misc</span><span class="p">;</span>
+<a name="line-113"></a>
+<a name="line-114"></a> <span class="n">SetupDatabase</span><span class="o">*</span> <span class="n">databasePage</span><span class="p">;</span>
+<a name="line-115"></a> <span class="n">SetupCollections</span><span class="o">*</span> <span class="n">collectionsPage</span><span class="p">;</span>
+<a name="line-116"></a> <span class="n">SetupAlbumView</span><span class="o">*</span> <span class="n">albumViewPage</span><span class="p">;</span>
+<a name="line-117"></a> <span class="n">SetupToolTip</span><span class="o">*</span> <span class="n">tooltipPage</span><span class="p">;</span>
+<a name="line-118"></a> <span class="n">SetupMetadata</span><span class="o">*</span> <span class="n">metadataPage</span><span class="p">;</span>
+<a name="line-119"></a> <span class="n">SetupTemplate</span><span class="o">*</span> <span class="n">templatePage</span><span class="p">;</span>
+<a name="line-120"></a> <span class="n">SetupLightTable</span><span class="o">*</span> <span class="n">lighttablePage</span><span class="p">;</span>
+<a name="line-121"></a> <span class="n">SetupEditor</span><span class="o">*</span> <span class="n">editorPage</span><span class="p">;</span>
+<a name="line-122"></a> <span class="n">SetupSlideShow</span><span class="o">*</span> <span class="n">slideshowPage</span><span class="p">;</span>
+<a name="line-123"></a> <span class="n">SetupImageQualitySorter</span><span class="o">*</span> <span class="n">imageQualitySorterPage</span><span class="p">;</span>
+<a name="line-124"></a> <span class="n">SetupICC</span><span class="o">*</span> <span class="n">iccPage</span><span class="p">;</span>
+<a name="line-125"></a> <span class="n">SetupCamera</span><span class="o">*</span> <span class="n">cameraPage</span><span class="p">;</span>
+<a name="line-126"></a> <span class="n">SetupPlugins</span><span class="o">*</span> <span class="n">pluginsPage</span><span class="p">;</span>
+<a name="line-127"></a> <span class="n">SetupMisc</span><span class="o">*</span> <span class="n">miscPage</span><span class="p">;</span>
+<a name="line-128"></a>
+<a name="line-129"></a><span class="k">public</span><span class="o">:</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-131"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">pageItem</span><span class="p">(</span><span class="n">Setup</span><span class="o">::</span><span class="n">Page</span> <span class="n">page</span><span class="p">)</span> <span class="k">const</span><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">Setup</span><span class="o">::</span><span class="n">Setup</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-135"></a> <span class="o">:</span> <span class="n">DConfigDlg</span><span class="p">(</span><span class="n">parent</span><span class="p">),</span>
+<a name="line-136"></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-137"></a><span class="p">{</span>
+<a name="line-138"></a> <span class="n">setWindowFlags</span><span class="p">((</span><span class="n">windowFlags</span><span class="p">()</span> <span class="o">&amp;</span> <span class="o">~</span><span class="n">Qt</span><span class="o">::</span><span class="n">Dialog</span><span class="p">)</span> <span class="o">|</span>
+<a name="line-139"></a> <span class="n">Qt</span><span class="o">::</span><span class="n">Window</span> <span class="o">|</span>
+<a name="line-140"></a> <span class="n">Qt</span><span class="o">::</span><span class="n">WindowCloseButtonHint</span> <span class="o">|</span>
+<a name="line-141"></a> <span class="n">Qt</span><span class="o">::</span><span class="n">WindowMinMaxButtonsHint</span><span class="p">);</span>
+<a name="line-142"></a>
+<a name="line-143"></a> <span class="n">setWindowTitle</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Configure&quot;</span><span class="p">));</span>
+<a name="line-144"></a> <span class="n">setStandardButtons</span><span class="p">(</span><span class="n">QDialogButtonBox</span><span class="o">::</span><span class="n">Help</span> <span class="o">|</span> <span class="n">QDialogButtonBox</span><span class="o">::</span><span class="n">Ok</span> <span class="o">|</span> <span class="n">QDialogButtonBox</span><span class="o">::</span><span class="n">Cancel</span><span class="p">);</span>
+<a name="line-145"></a> <span class="n">button</span><span class="p">(</span><span class="n">QDialogButtonBox</span><span class="o">::</span><span class="n">Ok</span><span class="p">)</span><span class="o">-&gt;</span><span class="n">setDefault</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-146"></a> <span class="n">setFaceType</span><span class="p">(</span><span class="n">List</span><span class="p">);</span>
+<a name="line-147"></a> <span class="n">setModal</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
+<a name="line-148"></a>
+<a name="line-149"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">databasePage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupDatabase</span><span class="p">();</span>
+<a name="line-150"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_database</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">databasePage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Database&quot;</span><span class="p">));</span>
+<a name="line-151"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_database</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Database Settings&lt;br/&gt;&quot;</span>
+<a name="line-152"></a> <span class="s">&quot;&lt;i&gt;Customize database settings&lt;/i&gt;&lt;/qt&gt;&quot;</span><span class="p">));</span>
+<a name="line-153"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_database</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;network-server-database&quot;</span><span class="p">)));</span>
+<a name="line-154"></a>
+<a name="line-155"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">collectionsPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupCollections</span><span class="p">();</span>
+<a name="line-156"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_collections</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">collectionsPage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Collections&quot;</span><span class="p">));</span>
+<a name="line-157"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_collections</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Collections Settings&lt;br/&gt;&quot;</span>
+<a name="line-158"></a> <span class="s">&quot;&lt;i&gt;Set root albums locations&lt;/i&gt;&lt;/qt&gt;&quot;</span><span class="p">));</span>
+<a name="line-159"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_collections</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;folder-pictures&quot;</span><span class="p">)));</span>
+<a name="line-160"></a>
+<a name="line-161"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albumViewPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupAlbumView</span><span class="p">();</span>
+<a name="line-162"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_albumView</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">albumViewPage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Views&quot;</span><span class="p">));</span>
+<a name="line-163"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_albumView</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Application Views Settings&lt;br/&gt;&quot;</span>
+<a name="line-164"></a> <span class="s">&quot;&lt;i&gt;Customize the look of the views&lt;/i&gt;&lt;/qt&gt;&quot;</span><span class="p">));</span>
+<a name="line-165"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_albumView</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;view-list-icons&quot;</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">tooltipPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupToolTip</span><span class="p">();</span>
+<a name="line-168"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_tooltip</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tooltipPage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Tool-Tip&quot;</span><span class="p">));</span>
+<a name="line-169"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_tooltip</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Items Tool-Tip Settings&lt;br/&gt;&quot;</span>
+<a name="line-170"></a> <span class="s">&quot;&lt;i&gt;Customize information in item tool-tips&lt;/i&gt;&lt;/qt&gt;&quot;</span><span class="p">));</span>
+<a name="line-171"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_tooltip</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-information&quot;</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">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-173"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">metadataPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupMetadata</span><span class="p">();</span>
+<a name="line-174"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_metadata</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">metadataPage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Metadata&quot;</span><span class="p">));</span>
+<a name="line-175"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_metadata</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Embedded Image Information Management&lt;br/&gt;&quot;</span>
+<a name="line-176"></a> <span class="s">&quot;&lt;i&gt;Setup relations between images and metadata&lt;/i&gt;&lt;/qt&gt;&quot;</span><span class="p">));</span>
+<a name="line-177"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_metadata</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;format-text-code&quot;</span><span class="p">)));</span> <span class="c1">// krazy:exclude=iconnames</span>
+<a name="line-178"></a>
+<a name="line-179"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">templatePage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupTemplate</span><span class="p">();</span>
+<a name="line-180"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_template</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">templatePage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Templates&quot;</span><span class="p">));</span>
+<a name="line-181"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_template</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Metadata templates&lt;br/&gt;&quot;</span>
+<a name="line-182"></a> <span class="s">&quot;&lt;i&gt;Manage your collection of metadata templates&lt;/i&gt;&lt;/qt&gt;&quot;</span><span class="p">));</span>
+<a name="line-183"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_template</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;im-user&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">editorPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupEditor</span><span class="p">();</span>
+<a name="line-186"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_editor</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">editorPage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Image Editor&quot;</span><span class="p">));</span>
+<a name="line-187"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_editor</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Image Editor Settings&lt;br/&gt;&quot;</span>
+<a name="line-188"></a> <span class="s">&quot;&lt;i&gt;Customize the image editor settings&lt;/i&gt;&lt;/qt&gt;&quot;</span><span class="p">));</span>
+<a name="line-189"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_editor</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;document-edit&quot;</span><span class="p">)));</span>
+<a name="line-190"></a>
+<a name="line-191"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">iccPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupICC</span><span class="p">(</span><span class="n">buttonBox</span><span class="p">());</span>
+<a name="line-192"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_icc</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">iccPage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Color Management&quot;</span><span class="p">));</span>
+<a name="line-193"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_icc</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Settings for Color Management&lt;br/&gt;&quot;</span>
+<a name="line-194"></a> <span class="s">&quot;&lt;i&gt;Customize the color management settings&lt;/i&gt;&lt;/qt&gt;&quot;</span><span class="p">));</span>
+<a name="line-195"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_icc</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;preferences-desktop-display-color&quot;</span><span class="p">)));</span>
+<a name="line-196"></a>
+<a name="line-197"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">lighttablePage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupLightTable</span><span class="p">();</span>
+<a name="line-198"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_lighttable</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">lighttablePage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Light Table&quot;</span><span class="p">));</span>
+<a name="line-199"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_lighttable</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Light Table Settings&lt;br/&gt;&quot;</span>
+<a name="line-200"></a> <span class="s">&quot;&lt;i&gt;Customize tool used to compare images&lt;/i&gt;&lt;/qt&gt;&quot;</span><span class="p">));</span>
+<a name="line-201"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_lighttable</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;lighttable&quot;</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">slideshowPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupSlideShow</span><span class="p">();</span>
+<a name="line-204"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_slideshow</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">slideshowPage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Slide Show&quot;</span><span class="p">));</span>
+<a name="line-205"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_slideshow</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Slide Show Settings&lt;br/&gt;&quot;</span>
+<a name="line-206"></a> <span class="s">&quot;&lt;i&gt;Customize slideshow settings&lt;/i&gt;&lt;/qt&gt;&quot;</span><span class="p">));</span>
+<a name="line-207"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_slideshow</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;view-presentation&quot;</span><span class="p">)));</span>
+<a name="line-208"></a>
+<a name="line-209"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageQualitySorterPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupImageQualitySorter</span><span class="p">();</span>
+<a name="line-210"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_imagequalitysorter</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">imageQualitySorterPage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Image Quality Sorter&quot;</span><span class="p">));</span>
+<a name="line-211"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_imagequalitysorter</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Image Quality Sorter Settings&lt;/qt&gt;&quot;</span><span class="p">));</span>
+<a name="line-212"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_imagequalitysorter</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;flag-green&quot;</span><span class="p">)));</span>
+<a name="line-213"></a>
+<a name="line-214"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cameraPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupCamera</span><span class="p">();</span>
+<a name="line-215"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_camera</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cameraPage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Cameras&quot;</span><span class="p">));</span>
+<a name="line-216"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_camera</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Camera Settings&lt;br/&gt;&quot;</span>
+<a name="line-217"></a> <span class="s">&quot;&lt;i&gt;Manage your camera devices&lt;/i&gt;&lt;/qt&gt;&quot;</span><span class="p">));</span>
+<a name="line-218"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_camera</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;camera-photo&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-220"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cameraPage</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalUseFileMetadataChanged</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
+<a name="line-221"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tooltipPage</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotUseFileMetadataChanged</span><span class="p">(</span><span class="kt">bool</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">pluginsPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupPlugins</span><span class="p">();</span>
+<a name="line-224"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_plugins</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">pluginsPage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Plugins&quot;</span><span class="p">));</span>
+<a name="line-225"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_plugins</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Plug-in Settings&lt;br/&gt;&quot;</span>
+<a name="line-226"></a> <span class="s">&quot;&lt;i&gt;Set which plugins will be accessible from application&lt;/i&gt;&lt;/qt&gt;&quot;</span><span class="p">));</span>
+<a name="line-227"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_plugins</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;preferences-plugin&quot;</span><span class="p">)));</span>
+<a name="line-228"></a>
+<a name="line-229"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">miscPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupMisc</span><span class="p">();</span>
+<a name="line-230"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_misc</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">miscPage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Miscellaneous&quot;</span><span class="p">));</span>
+<a name="line-231"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_misc</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Miscellaneous Settings&lt;br/&gt;&quot;</span>
+<a name="line-232"></a> <span class="s">&quot;&lt;i&gt;Customize behavior of the other parts of digiKam&lt;/i&gt;&lt;/qt&gt;&quot;</span><span class="p">));</span>
+<a name="line-233"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_misc</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;preferences-other&quot;</span><span class="p">)));</span>
+<a name="line-234"></a>
+<a name="line-235"></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">!=</span> <span class="n">SetupPageEnumLast</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
+<a name="line-236"></a> <span class="p">{</span>
+<a name="line-237"></a> <span class="n">DConfigDlgWdgItem</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">pageItem</span><span class="p">((</span><span class="n">Page</span><span class="p">)</span><span class="n">i</span><span class="p">);</span>
+<a name="line-238"></a>
+<a name="line-239"></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-240"></a> <span class="p">{</span>
+<a name="line-241"></a> <span class="k">continue</span><span class="p">;</span>
+<a name="line-242"></a> <span class="p">}</span>
+<a name="line-243"></a>
+<a name="line-244"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">wgt</span> <span class="o">=</span> <span class="n">item</span><span class="o">-&gt;</span><span class="n">widget</span><span class="p">();</span>
+<a name="line-245"></a> <span class="n">QScrollArea</span><span class="o">*</span> <span class="k">const</span> <span class="n">scrollArea</span> <span class="o">=</span> <span class="n">qobject_cast</span><span class="o">&lt;</span><span class="n">QScrollArea</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">wgt</span><span class="p">);</span>
+<a name="line-246"></a>
+<a name="line-247"></a> <span class="k">if</span> <span class="p">(</span><span class="n">scrollArea</span><span class="p">)</span>
+<a name="line-248"></a> <span class="p">{</span>
+<a name="line-249"></a> <span class="n">scrollArea</span><span class="o">-&gt;</span><span class="n">setFrameShape</span><span class="p">(</span><span class="n">QFrame</span><span class="o">::</span><span class="n">NoFrame</span><span class="p">);</span>
+<a name="line-250"></a> <span class="p">}</span>
+<a name="line-251"></a> <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-253"></a> <span class="n">connect</span><span class="p">(</span><span class="n">buttonBox</span><span class="p">(),</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">helpRequested</span><span class="p">()),</span>
+<a name="line-254"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotHelp</span><span class="p">()));</span>
+<a name="line-255"></a>
+<a name="line-256"></a> <span class="n">connect</span><span class="p">(</span><span class="n">buttonBox</span><span class="p">()</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">Ok</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-257"></a> <span class="k">this</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">Setup</span><span class="o">::</span><span class="n">slotOkClicked</span><span class="p">);</span>
+<a name="line-258"></a>
+<a name="line-259"></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-260"></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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Setup Dialog&quot;</span><span class="p">));</span>
+<a name="line-261"></a>
+<a name="line-262"></a> <span class="n">winId</span><span class="p">();</span>
+<a name="line-263"></a> <span class="n">windowHandle</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">resize</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-264"></a> <span class="n">DXmlGuiWindow</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">group</span><span class="p">);</span>
+<a name="line-265"></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-266"></a><span class="p">}</span>
+<a name="line-267"></a>
+<a name="line-268"></a><span class="n">Setup</span><span class="o">::~</span><span class="n">Setup</span><span class="p">()</span>
+<a name="line-269"></a><span class="p">{</span>
+<a name="line-270"></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-271"></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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Setup Dialog&quot;</span><span class="p">));</span>
+<a name="line-272"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Setup Page&quot;</span><span class="p">),</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">activePageIndex</span><span class="p">());</span>
+<a name="line-273"></a> <span class="n">DXmlGuiWindow</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">group</span><span class="p">);</span>
+<a name="line-274"></a> <span class="n">config</span><span class="o">-&gt;</span><span class="n">sync</span><span class="p">();</span>
+<a name="line-275"></a> <span class="k">delete</span> <span class="n">d</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">void</span> <span class="n">Setup</span><span class="o">::</span><span class="n">slotHelp</span><span class="p">()</span>
+<a name="line-279"></a><span class="p">{</span>
+<a name="line-280"></a> <span class="n">DXmlGuiWindow</span><span class="o">::</span><span class="n">openHandbook</span><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="kt">void</span> <span class="n">Setup</span><span class="o">::</span><span class="n">setTemplate</span><span class="p">(</span><span class="k">const</span> <span class="n">Template</span><span class="o">&amp;</span> <span class="n">t</span><span class="p">)</span>
+<a name="line-284"></a><span class="p">{</span>
+<a name="line-285"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">templatePage</span><span class="p">)</span>
+<a name="line-286"></a> <span class="p">{</span>
+<a name="line-287"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">templatePage</span><span class="o">-&gt;</span><span class="n">setTemplate</span><span class="p">(</span><span class="n">t</span><span class="p">);</span>
+<a name="line-288"></a> <span class="p">}</span>
+<a name="line-289"></a><span class="p">}</span>
+<a name="line-290"></a>
+<a name="line-291"></a><span class="n">QSize</span> <span class="n">Setup</span><span class="o">::</span><span class="n">sizeHint</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-292"></a><span class="p">{</span>
+<a name="line-293"></a> <span class="c1">// The minimum size is very small. But the default initial size is such</span>
+<a name="line-294"></a> <span class="c1">// that some important tabs get a scroll bar, although the dialog could be larger</span>
+<a name="line-295"></a> <span class="c1">// on a normal display (QScrollArea size hint does not take widget into account)</span>
+<a name="line-296"></a> <span class="c1">// Adjust size hint here so that certain selected tabs are display full per default.</span>
+<a name="line-297"></a> <span class="n">QSize</span> <span class="n">hint</span> <span class="o">=</span> <span class="n">DConfigDlg</span><span class="o">::</span><span class="n">sizeHint</span><span class="p">();</span>
+<a name="line-298"></a> <span class="kt">int</span> <span class="n">maxHintHeight</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-299"></a> <span class="kt">int</span> <span class="n">maxWidgetHeight</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-300"></a>
+<a name="line-301"></a><span class="hll"> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">page</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">page</span> <span class="o">!=</span> <span class="n">SetupPageEnumLast</span> <span class="p">;</span> <span class="o">++</span><span class="n">page</span><span class="p">)</span><span class='error2'>&lt;--- Shadowed declaration</span>
+</span><a name="line-302"></a> <span class="p">{</span>
+<a name="line-303"></a> <span class="c1">// only take tabs into account here that should better be displayed without scrolling</span>
+<a name="line-304"></a> <span class="k">if</span> <span class="p">(</span><span class="n">page</span> <span class="o">==</span> <span class="n">CollectionsPage</span> <span class="o">||</span>
+<a name="line-305"></a> <span class="n">page</span> <span class="o">==</span> <span class="n">AlbumViewPage</span> <span class="o">||</span>
+<a name="line-306"></a> <span class="n">page</span> <span class="o">==</span> <span class="n">TemplatePage</span> <span class="o">||</span>
+<a name="line-307"></a> <span class="n">page</span> <span class="o">==</span> <span class="n">LightTablePage</span> <span class="o">||</span>
+<a name="line-308"></a> <span class="n">page</span> <span class="o">==</span> <span class="n">EditorPage</span> <span class="o">||</span>
+<a name="line-309"></a> <span class="n">page</span> <span class="o">==</span> <span class="n">PluginsPage</span> <span class="o">||</span>
+<a name="line-310"></a> <span class="n">page</span> <span class="o">==</span> <span class="n">MiscellaneousPage</span><span class="p">)</span>
+<a name="line-311"></a> <span class="p">{</span>
+<a name="line-312"></a> <span class="n">DConfigDlgWdgItem</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">pageItem</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-313"></a>
+<a name="line-314"></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-315"></a> <span class="p">{</span>
+<a name="line-316"></a> <span class="k">continue</span><span class="p">;</span>
+<a name="line-317"></a> <span class="p">}</span>
+<a name="line-318"></a>
+<a name="line-319"></a><span class="hll"> <span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">page</span> <span class="o">=</span> <span class="n">item</span><span class="o">-&gt;</span><span class="n">widget</span><span class="p">();</span><span class='error2'>&lt;--- Shadow variable</span>
+</span><a name="line-320"></a> <span class="n">maxHintHeight</span> <span class="o">=</span> <span class="n">qMax</span><span class="p">(</span><span class="n">maxHintHeight</span><span class="p">,</span> <span class="n">page</span><span class="o">-&gt;</span><span class="n">sizeHint</span><span class="p">().</span><span class="n">height</span><span class="p">());</span>
+<a name="line-321"></a> <span class="n">QScrollArea</span><span class="o">*</span> <span class="k">const</span> <span class="n">scrollArea</span> <span class="o">=</span> <span class="n">qobject_cast</span><span class="o">&lt;</span><span class="n">QScrollArea</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">page</span><span class="p">);</span>
+<a name="line-322"></a>
+<a name="line-323"></a> <span class="k">if</span> <span class="p">(</span><span class="n">scrollArea</span><span class="p">)</span>
+<a name="line-324"></a> <span class="p">{</span>
+<a name="line-325"></a> <span class="n">maxWidgetHeight</span> <span class="o">=</span> <span class="n">qMax</span><span class="p">(</span><span class="n">maxWidgetHeight</span><span class="p">,</span> <span class="n">scrollArea</span><span class="o">-&gt;</span><span class="n">widget</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">sizeHint</span><span class="p">().</span><span class="n">height</span><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> <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-330"></a> <span class="c1">// The additional 20 is a hack to make it work.</span>
+<a name="line-331"></a> <span class="c1">// Don&#39;t know why, the largest page would have scroll bars without this</span>
+<a name="line-332"></a> <span class="k">if</span> <span class="p">(</span><span class="n">maxWidgetHeight</span> <span class="o">&gt;</span> <span class="n">maxHintHeight</span><span class="p">)</span>
+<a name="line-333"></a> <span class="p">{</span>
+<a name="line-334"></a> <span class="n">hint</span><span class="p">.</span><span class="n">setHeight</span><span class="p">(</span><span class="n">hint</span><span class="p">.</span><span class="n">height</span><span class="p">()</span> <span class="o">+</span> <span class="p">(</span><span class="n">maxWidgetHeight</span> <span class="o">-</span> <span class="n">maxHintHeight</span><span class="p">)</span> <span class="o">+</span> <span class="mi">20</span><span class="p">);</span>
+<a name="line-335"></a> <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-337"></a> <span class="k">return</span> <span class="n">hint</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">bool</span> <span class="n">Setup</span><span class="o">::</span><span class="n">execDialog</span><span class="p">(</span><span class="n">Page</span> <span class="n">page</span><span class="p">)</span>
+<a name="line-341"></a><span class="p">{</span>
+<a name="line-342"></a> <span class="k">return</span> <span class="n">execDialog</span><span class="p">(</span><span class="k">nullptr</span><span class="p">,</span> <span class="n">page</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">bool</span> <span class="n">Setup</span><span class="o">::</span><span class="n">execDialog</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">Page</span> <span class="n">page</span><span class="p">)</span>
+<a name="line-346"></a><span class="p">{</span>
+<a name="line-347"></a> <span class="n">QPointer</span><span class="o">&lt;</span><span class="n">Setup</span><span class="o">&gt;</span> <span class="n">setup</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Setup</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+<a name="line-348"></a> <span class="n">setup</span><span class="o">-&gt;</span><span class="n">showPage</span><span class="p">(</span><span class="n">page</span><span class="p">);</span>
+<a name="line-349"></a> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="p">(</span><span class="n">setup</span><span class="o">-&gt;</span><span class="n">DConfigDlg</span><span class="o">::</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-350"></a> <span class="k">delete</span> <span class="n">setup</span><span class="p">;</span>
+<a name="line-351"></a> <span class="k">return</span> <span class="n">success</span><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="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-354"></a><span class="kt">bool</span> <span class="n">Setup</span><span class="o">::</span><span class="n">execSinglePage</span><span class="p">(</span><span class="n">Page</span> <span class="n">page</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">execSinglePage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">,</span> <span class="n">page</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="kt">bool</span> <span class="n">Setup</span><span class="o">::</span><span class="n">execSinglePage</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">Page</span> <span class="n">page</span><span class="p">)</span>
+<a name="line-360"></a><span class="p">{</span>
+<a name="line-361"></a> <span class="n">QPointer</span><span class="o">&lt;</span><span class="n">Setup</span><span class="o">&gt;</span> <span class="n">setup</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Setup</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+<a name="line-362"></a> <span class="n">setup</span><span class="o">-&gt;</span><span class="n">showPage</span><span class="p">(</span><span class="n">page</span><span class="p">);</span>
+<a name="line-363"></a> <span class="n">setup</span><span class="o">-&gt;</span><span class="n">setFaceType</span><span class="p">(</span><span class="n">Plain</span><span class="p">);</span>
+<a name="line-364"></a> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="p">(</span><span class="n">setup</span><span class="o">-&gt;</span><span class="n">DConfigDlg</span><span class="o">::</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-365"></a> <span class="k">delete</span> <span class="n">setup</span><span class="p">;</span>
+<a name="line-366"></a> <span class="k">return</span> <span class="n">success</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="kt">bool</span> <span class="n">Setup</span><span class="o">::</span><span class="n">execTemplateEditor</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="k">const</span> <span class="n">Template</span><span class="o">&amp;</span> <span class="n">t</span><span class="p">)</span>
+<a name="line-370"></a><span class="p">{</span>
+<a name="line-371"></a> <span class="n">QPointer</span><span class="o">&lt;</span><span class="n">Setup</span><span class="o">&gt;</span> <span class="n">setup</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Setup</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+<a name="line-372"></a> <span class="n">setup</span><span class="o">-&gt;</span><span class="n">showPage</span><span class="p">(</span><span class="n">TemplatePage</span><span class="p">);</span>
+<a name="line-373"></a> <span class="n">setup</span><span class="o">-&gt;</span><span class="n">setFaceType</span><span class="p">(</span><span class="n">Plain</span><span class="p">);</span>
+<a name="line-374"></a> <span class="n">setup</span><span class="o">-&gt;</span><span class="n">setTemplate</span><span class="p">(</span><span class="n">t</span><span class="p">);</span>
+<a name="line-375"></a> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="p">(</span><span class="n">setup</span><span class="o">-&gt;</span><span class="n">DConfigDlg</span><span class="o">::</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-376"></a> <span class="k">delete</span> <span class="n">setup</span><span class="p">;</span>
+<a name="line-377"></a> <span class="k">return</span> <span class="n">success</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="kt">bool</span> <span class="n">Setup</span><span class="o">::</span><span class="n">execMetadataFilters</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="kt">int</span> <span class="n">tab</span><span class="p">)</span>
+<a name="line-381"></a><span class="p">{</span>
+<a name="line-382"></a> <span class="n">QPointer</span><span class="o">&lt;</span><span class="n">Setup</span><span class="o">&gt;</span> <span class="n">setup</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Setup</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
+<a name="line-383"></a> <span class="n">setup</span><span class="o">-&gt;</span><span class="n">showPage</span><span class="p">(</span><span class="n">MetadataPage</span><span class="p">);</span>
+<a name="line-384"></a> <span class="n">setup</span><span class="o">-&gt;</span><span class="n">setFaceType</span><span class="p">(</span><span class="n">Plain</span><span class="p">);</span>
+<a name="line-385"></a>
+<a name="line-386"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="k">const</span> <span class="n">cur</span> <span class="o">=</span> <span class="n">setup</span><span class="o">-&gt;</span><span class="n">currentPage</span><span class="p">();</span>
+<a name="line-387"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">cur</span><span class="p">)</span> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-388"></a>
+<a name="line-389"></a> <span class="n">SetupMetadata</span><span class="o">*</span> <span class="k">const</span> <span class="n">widget</span> <span class="o">=</span> <span class="k">dynamic_cast</span><span class="o">&lt;</span><span class="n">SetupMetadata</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">cur</span><span class="o">-&gt;</span><span class="n">widget</span><span class="p">());</span>
+<a name="line-390"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">widget</span><span class="p">)</span> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
+<a name="line-391"></a>
+<a name="line-392"></a> <span class="n">widget</span><span class="o">-&gt;</span><span class="n">setActiveMainTab</span><span class="p">(</span><span class="n">SetupMetadata</span><span class="o">::</span><span class="n">Display</span><span class="p">);</span>
+<a name="line-393"></a> <span class="n">widget</span><span class="o">-&gt;</span><span class="n">setActiveSubTab</span><span class="p">(</span><span class="n">tab</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-395"></a> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="p">(</span><span class="n">setup</span><span class="o">-&gt;</span><span class="n">DConfigDlg</span><span class="o">::</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-396"></a> <span class="k">delete</span> <span class="n">setup</span><span class="p">;</span>
+<a name="line-397"></a> <span class="k">return</span> <span class="n">success</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">Setup</span><span class="o">::</span><span class="n">slotOkClicked</span><span class="p">()</span>
+<a name="line-401"></a><span class="p">{</span>
+<a name="line-402"></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">cameraPage</span><span class="o">-&gt;</span><span class="n">checkSettings</span><span class="p">())</span>
+<a name="line-403"></a> <span class="p">{</span>
+<a name="line-404"></a> <span class="n">showPage</span><span class="p">(</span><span class="n">CameraPage</span><span class="p">);</span>
+<a name="line-405"></a> <span class="k">return</span><span class="p">;</span>
+<a name="line-406"></a> <span class="p">}</span>
+<a name="line-407"></a>
+<a name="line-408"></a> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">setOverrideCursor</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-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-410"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cameraPage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
+<a name="line-411"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">databasePage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
+<a name="line-412"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">collectionsPage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
+<a name="line-413"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albumViewPage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
+<a name="line-414"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tooltipPage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
+<a name="line-415"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">metadataPage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
+<a name="line-416"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">templatePage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
+<a name="line-417"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">lighttablePage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
+<a name="line-418"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">editorPage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
+<a name="line-419"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">slideshowPage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
+<a name="line-420"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageQualitySorterPage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
+<a name="line-421"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">iccPage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
+<a name="line-422"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">pluginsPage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
+<a name="line-423"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">miscPage</span><span class="o">-&gt;</span><span class="n">applySettings</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-425"></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">emitSetupChanged</span><span class="p">();</span>
+<a name="line-426"></a> <span class="n">ImportSettings</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">emitSetupChanged</span><span class="p">();</span>
+<a name="line-427"></a>
+<a name="line-428"></a> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">restoreOverrideCursor</span><span class="p">();</span>
+<a name="line-429"></a>
+<a name="line-430"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">metadataPage</span><span class="o">-&gt;</span><span class="n">exifAutoRotateHasChanged</span><span class="p">())</span>
+<a name="line-431"></a> <span class="p">{</span>
+<a name="line-432"></a> <span class="n">LoadingCacheInterface</span><span class="o">::</span><span class="n">cleanThumbnailCache</span><span class="p">();</span>
+<a name="line-433"></a> <span class="p">}</span>
+<a name="line-434"></a>
+<a name="line-435"></a> <span class="n">accept</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">Setup</span><span class="o">::</span><span class="n">showPage</span><span class="p">(</span><span class="n">Setup</span><span class="o">::</span><span class="n">Page</span> <span class="n">page</span><span class="p">)</span>
+<a name="line-439"></a><span class="p">{</span>
+<a name="line-440"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">item</span> <span class="o">=</span> <span class="k">nullptr</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">page</span> <span class="o">==</span> <span class="n">LastPageUsed</span><span class="p">)</span>
+<a name="line-443"></a> <span class="p">{</span>
+<a name="line-444"></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-445"></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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Setup Dialog&quot;</span><span class="p">));</span>
+<a name="line-446"></a>
+<a name="line-447"></a> <span class="n">item</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">pageItem</span><span class="p">((</span><span class="n">Page</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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Setup Page&quot;</span><span class="p">),</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">CollectionsPage</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">item</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">pageItem</span><span class="p">(</span><span class="n">page</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="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">item</span><span class="p">)</span>
+<a name="line-455"></a> <span class="p">{</span>
+<a name="line-456"></a> <span class="n">item</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">pageItem</span><span class="p">(</span><span class="n">CollectionsPage</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="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-459"></a> <span class="n">setCurrentPage</span><span class="p">(</span><span class="n">item</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="n">Setup</span><span class="o">::</span><span class="n">Page</span> <span class="n">Setup</span><span class="o">::</span><span class="n">activePageIndex</span><span class="p">()</span> <span class="k">const</span>
+<a name="line-463"></a><span class="p">{</span>
+<a name="line-464"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="k">const</span> <span class="n">cur</span> <span class="o">=</span> <span class="n">currentPage</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-466"></a> <span class="k">if</span> <span class="p">(</span><span class="n">cur</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_collections</span><span class="p">)</span>
+<a name="line-467"></a> <span class="p">{</span>
+<a name="line-468"></a> <span class="k">return</span> <span class="n">CollectionsPage</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="k">if</span> <span class="p">(</span><span class="n">cur</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_albumView</span><span class="p">)</span>
+<a name="line-472"></a> <span class="p">{</span>
+<a name="line-473"></a> <span class="k">return</span> <span class="n">AlbumViewPage</span><span class="p">;</span>
+<a name="line-474"></a> <span class="p">}</span>
+<a name="line-475"></a>
+<a name="line-476"></a> <span class="k">if</span> <span class="p">(</span><span class="n">cur</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_tooltip</span><span class="p">)</span>
+<a name="line-477"></a> <span class="p">{</span>
+<a name="line-478"></a> <span class="k">return</span> <span class="n">ToolTipPage</span><span class="p">;</span>
+<a name="line-479"></a> <span class="p">}</span>
+<a name="line-480"></a>
+<a name="line-481"></a> <span class="k">if</span> <span class="p">(</span><span class="n">cur</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_metadata</span><span class="p">)</span>
+<a name="line-482"></a> <span class="p">{</span>
+<a name="line-483"></a> <span class="k">return</span> <span class="n">MetadataPage</span><span class="p">;</span>
+<a name="line-484"></a> <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">cur</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_template</span><span class="p">)</span>
+<a name="line-487"></a> <span class="p">{</span>
+<a name="line-488"></a> <span class="k">return</span> <span class="n">TemplatePage</span><span class="p">;</span>
+<a name="line-489"></a> <span class="p">}</span>
+<a name="line-490"></a>
+<a name="line-491"></a> <span class="k">if</span> <span class="p">(</span><span class="n">cur</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_lighttable</span><span class="p">)</span>
+<a name="line-492"></a> <span class="p">{</span>
+<a name="line-493"></a> <span class="k">return</span> <span class="n">LightTablePage</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="k">if</span> <span class="p">(</span><span class="n">cur</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_editor</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">EditorPage</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="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-501"></a> <span class="k">if</span> <span class="p">(</span><span class="n">cur</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_slideshow</span><span class="p">)</span>
+<a name="line-502"></a> <span class="p">{</span>
+<a name="line-503"></a> <span class="k">return</span> <span class="n">SlideshowPage</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="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-506"></a> <span class="k">if</span> <span class="p">(</span><span class="n">cur</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_imagequalitysorter</span><span class="p">)</span>
+<a name="line-507"></a> <span class="p">{</span>
+<a name="line-508"></a> <span class="k">return</span> <span class="n">ImageQualityPage</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="k">if</span> <span class="p">(</span><span class="n">cur</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_icc</span><span class="p">)</span>
+<a name="line-512"></a> <span class="p">{</span>
+<a name="line-513"></a> <span class="k">return</span> <span class="n">ICCPage</span><span class="p">;</span>
+<a name="line-514"></a> <span class="p">}</span>
+<a name="line-515"></a>
+<a name="line-516"></a> <span class="k">if</span> <span class="p">(</span><span class="n">cur</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_camera</span><span class="p">)</span>
+<a name="line-517"></a> <span class="p">{</span>
+<a name="line-518"></a> <span class="k">return</span> <span class="n">CameraPage</span><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="n">cur</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_plugins</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">PluginsPage</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="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="c1">//balooLayout-&gt;addWidget(d-&gt;resyncButton, 0, Qt::AlignRight);</span>
-<a name="line-538"></a> <span class="n">balooLayout</span><span class="o">-&gt;</span><span class="n">addStretch</span><span class="p">();</span>
-<a name="line-539"></a>
-<a name="line-540"></a><span class="cp">#endif </span><span class="c1">// HAVE_KFILEMETADATA</span>
-<a name="line-541"></a>
-<a name="line-542"></a> <span class="c1">//--------------Advanced Metadata Configuration --------------</span>
+<a name="line-526"></a> <span class="k">if</span> <span class="p">(</span><span class="n">cur</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_misc</span><span class="p">)</span>
+<a name="line-527"></a> <span class="p">{</span>
+<a name="line-528"></a> <span class="k">return</span> <span class="n">MiscellaneousPage</span><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="k">return</span> <span class="n">DatabasePage</span><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="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">Setup</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">pageItem</span><span class="p">(</span><span class="n">Setup</span><span class="o">::</span><span class="n">Page</span> <span class="n">page</span><span class="p">)</span> <span class="k">const</span>
+<a name="line-535"></a><span class="p">{</span>
+<a name="line-536"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">page</span><span class="p">)</span>
+<a name="line-537"></a> <span class="p">{</span>
+<a name="line-538"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">DatabasePage</span><span class="p">:</span>
+<a name="line-539"></a> <span class="k">return</span> <span class="n">page_database</span><span class="p">;</span>
+<a name="line-540"></a>
+<a name="line-541"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">CollectionsPage</span><span class="p">:</span>
+<a name="line-542"></a> <span class="k">return</span> <span class="n">page_collections</span><span class="p">;</span>
<a name="line-543"></a>
-<a name="line-544"></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-545"></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-544"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">AlbumViewPage</span><span class="p">:</span>
+<a name="line-545"></a> <span class="k">return</span> <span class="n">page_albumView</span><span class="p">;</span>
<a name="line-546"></a>
-<a name="line-547"></a> <span class="c1">//------------------------Sidecars-------------------------</span>
-<a name="line-548"></a>
-<a name="line-549"></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-550"></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-551"></a>
-<a name="line-552"></a> <span class="c1">// --------------------------------------------------------</span>
-<a name="line-553"></a>
-<a name="line-554"></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-555"></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-556"></a>
-<a name="line-557"></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-547"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">ToolTipPage</span><span class="p">:</span>
+<a name="line-548"></a> <span class="k">return</span> <span class="n">page_tooltip</span><span class="p">;</span>
+<a name="line-549"></a>
+<a name="line-550"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">MetadataPage</span><span class="p">:</span>
+<a name="line-551"></a> <span class="k">return</span> <span class="n">page_metadata</span><span class="p">;</span>
+<a name="line-552"></a>
+<a name="line-553"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">TemplatePage</span><span class="p">:</span>
+<a name="line-554"></a> <span class="k">return</span> <span class="n">page_template</span><span class="p">;</span>
+<a name="line-555"></a>
+<a name="line-556"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">LightTablePage</span><span class="p">:</span>
+<a name="line-557"></a> <span class="k">return</span> <span class="n">page_lighttable</span><span class="p">;</span>
<a name="line-558"></a>
-<a name="line-559"></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-560"></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-561"></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-562"></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-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">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-559"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">EditorPage</span><span class="p">:</span>
+<a name="line-560"></a> <span class="k">return</span> <span class="n">page_editor</span><span class="p">;</span>
+<a name="line-561"></a>
+<a name="line-562"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">SlideshowPage</span><span class="p">:</span>
+<a name="line-563"></a> <span class="k">return</span> <span class="n">page_slideshow</span><span class="p">;</span>
<a name="line-564"></a>
-<a name="line-565"></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-566"></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-567"></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-568"></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-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">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-565"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">ImageQualityPage</span><span class="p">:</span>
+<a name="line-566"></a> <span class="k">return</span> <span class="n">page_imagequalitysorter</span><span class="p">;</span>
+<a name="line-567"></a>
+<a name="line-568"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">ICCPage</span><span class="p">:</span>
+<a name="line-569"></a> <span class="k">return</span> <span class="n">page_icc</span><span class="p">;</span>
<a name="line-570"></a>
-<a name="line-571"></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-572"></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-573"></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-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 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-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">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-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">setEnabled</span><span class="p">(</span><span class="nb">false</span><span class="p">);</span>
-<a name="line-577"></a>
-<a name="line-578"></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-579"></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-580"></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-581"></a> <span class="s">&quot;Turn on this option to create the XMP sidecar files with a compatible &quot;</span>
-<a name="line-582"></a> <span class="s">&quot;file name (BASENAME.xmp) used by many commercial programs. &quot;</span>
-<a name="line-583"></a> <span class="s">&quot;For Darktable do not enable this option.&quot;</span><span class="p">));</span>
-<a name="line-584"></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-585"></a>
-<a name="line-586"></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-587"></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-588"></a>
-<a name="line-589"></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-590"></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-591"></a>
-<a name="line-592"></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-593"></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-594"></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-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">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-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">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-597"></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-598"></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-599"></a>
-<a name="line-600"></a> <span class="c1">// --------------------------------------------------------</span>
-<a name="line-601"></a>
-<a name="line-602"></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-603"></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-604"></a>
-<a name="line-605"></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-606"></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-607"></a> <span class="s">&quot;&lt;p&gt;digiKam (optionally) writes metadata to *.xmp sidecar &quot;</span>
-<a name="line-608"></a> <span class="s">&quot;files. Other programs might use different types, which &quot;</span>
-<a name="line-609"></a> <span class="s">&quot;can be specified below. digiKam will neither display these &quot;</span>
-<a name="line-610"></a> <span class="s">&quot;nor read from or write to them. But whenever a matching album &quot;</span>
-<a name="line-611"></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-612"></a> <span class="s">&quot;moved, copied or deleted, the same operation will be done &quot;</span>
-<a name="line-613"></a> <span class="s">&quot;on these sidecar files.&lt;/p&gt;&quot;</span>
-<a name="line-614"></a> <span class="s">&quot;&lt;p&gt;Multiple extensions must be separated by a semicolon &quot;</span>
-<a name="line-615"></a> <span class="s">&quot;or a space.&lt;/p&gt;&quot;</span><span class="p">));</span>
-<a name="line-616"></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-617"></a>
-<a name="line-618"></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-619"></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-620"></a>
-<a name="line-621"></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-622"></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-623"></a> <span class="s">&quot;of sidecars files to be processed alongside &quot;</span>
-<a name="line-624"></a> <span class="s">&quot;regular items. These files will not be visible, &quot;</span>
-<a name="line-625"></a> <span class="s">&quot;but regarded as an extension of the main file. &quot;</span>
-<a name="line-626"></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-627"></a> <span class="s">&quot;the *.xyz and *.abc extensions. The internally &quot;</span>
-<a name="line-628"></a> <span class="s">&quot;used sidecars type *.xmp is always included.&lt;/p&gt;&quot;</span><span class="p">));</span>
-<a name="line-629"></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-630"></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-631"></a>
-<a name="line-632"></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-633"></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-634"></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-635"></a>
-<a name="line-636"></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-637"></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-638"></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-639"></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-640"></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-641"></a>
-<a name="line-642"></a> <span class="c1">// --------------------------------------------------------</span>
-<a name="line-643"></a>
-<a name="line-644"></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-645"></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-646"></a> <span class="n">sidecarsLayout</span><span class="o">-&gt;</span><span class="n">addStretch</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">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-649"></a>
-<a name="line-650"></a> <span class="c1">// --------------------------------------------------------</span>
-<a name="line-651"></a>
-<a name="line-652"></a> <span class="n">readSettings</span><span class="p">();</span>
-<a name="line-653"></a>
-<a name="line-654"></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-655"></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-656"></a>
-<a name="line-657"></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-658"></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-659"></a>
-<a name="line-660"></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-661"></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-662"></a><span class="p">}</span>
-<a name="line-663"></a>
-<a name="line-664"></a><span class="n">SetupMetadata</span><span class="o">::~</span><span class="n">SetupMetadata</span><span class="p">()</span>
-<a name="line-665"></a><span class="p">{</span>
-<a name="line-666"></a> <span class="k">delete</span> <span class="n">d</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="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-670"></a><span class="p">{</span>
-<a name="line-671"></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-672"></a><span class="p">}</span>
-<a name="line-673"></a>
-<a name="line-674"></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-675"></a><span class="p">{</span>
-<a name="line-676"></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-677"></a><span class="p">}</span>
-<a name="line-678"></a>
-<a name="line-679"></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-680"></a><span class="p">{</span>
-<a name="line-681"></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-682"></a>
-<a name="line-683"></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-684"></a> <span class="p">{</span>
-<a name="line-685"></a> <span class="k">return</span><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">MetaEngineSettingsContainer</span> <span class="n">set</span><span class="p">;</span>
-<a name="line-689"></a>
-<a name="line-690"></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-691"></a>
-<a name="line-692"></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-693"></a> <span class="p">{</span>
-<a name="line-694"></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-695"></a> <span class="p">}</span>
-<a name="line-696"></a>
-<a name="line-697"></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-698"></a> <span class="p">{</span>
-<a name="line-699"></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-700"></a>
-<a name="line-701"></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-702"></a> <span class="p">{</span>
-<a name="line-703"></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-704"></a> <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="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-708"></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-709"></a>
-<a name="line-710"></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-711"></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-712"></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-713"></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-714"></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-715"></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-716"></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-717"></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-718"></a>
-<a name="line-719"></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-720"></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-721"></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-722"></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-723"></a>
-<a name="line-724"></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-725"></a> <span class="p">{</span>
-<a name="line-726"></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-727"></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-728"></a> <span class="p">}</span>
-<a name="line-729"></a> <span class="k">else</span>
-<a name="line-730"></a> <span class="p">{</span>
-<a name="line-731"></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-732"></a> <span class="p">}</span>
-<a name="line-733"></a>
-<a name="line-734"></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-735"></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-736"></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-737"></a>
-<a name="line-738"></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-739"></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-740"></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-741"></a>
-<a name="line-742"></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-743"></a>
-<a name="line-744"></a>
-<a name="line-745"></a><span class="cp">#ifdef HAVE_KFILEMETADATA</span>
-<a name="line-746"></a>
-<a name="line-747"></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-748"></a>
-<a name="line-749"></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-750"></a> <span class="p">{</span>
-<a name="line-751"></a> <span class="k">return</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="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-755"></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-756"></a>
-<a name="line-757"></a> <span class="n">aSettings</span><span class="o">-&gt;</span><span class="n">saveSettings</span><span class="p">();</span>
-<a name="line-758"></a>
-<a name="line-759"></a><span class="cp">#endif </span><span class="c1">// HAVE_KFILEMETADATA</span>
-<a name="line-760"></a>
-<a name="line-761"></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-762"></a>
-<a name="line-763"></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-764"></a><span class="p">}</span>
-<a name="line-765"></a>
-<a name="line-766"></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-767"></a><span class="p">{</span>
-<a name="line-768"></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-769"></a>
-<a name="line-770"></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-771"></a> <span class="p">{</span>
-<a name="line-772"></a> <span class="k">return</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="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-776"></a>
-<a name="line-777"></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-778"></a> <span class="p">{</span>
-<a name="line-779"></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-780"></a> <span class="p">}</span>
-<a name="line-781"></a> <span class="k">else</span>
-<a name="line-782"></a> <span class="p">{</span>
-<a name="line-783"></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-784"></a> <span class="p">}</span>
-<a name="line-785"></a>
-<a name="line-786"></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-787"></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-788"></a>
-<a name="line-789"></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-790"></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-791"></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-792"></a>
-<a name="line-793"></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-794"></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-795"></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-796"></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-797"></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-798"></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-799"></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-800"></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-801"></a>
-<a name="line-802"></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-803"></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-804"></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-805"></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-806"></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-807"></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-808"></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-809"></a>
-<a name="line-810"></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-811"></a> <span class="p">{</span>
-<a name="line-812"></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-813"></a> <span class="p">}</span>
-<a name="line-814"></a> <span class="k">else</span>
-<a name="line-815"></a> <span class="p">{</span>
-<a name="line-816"></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-817"></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-818"></a> <span class="p">}</span>
-<a name="line-819"></a>
-<a name="line-820"></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-821"></a>
-<a name="line-822"></a><span class="cp">#ifdef HAVE_KFILEMETADATA</span>
-<a name="line-823"></a>
-<a name="line-824"></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-825"></a>
-<a name="line-826"></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-827"></a> <span class="p">{</span>
-<a name="line-828"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-829"></a> <span class="p">}</span>
-<a name="line-830"></a>
-<a name="line-831"></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-832"></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-833"></a>
-<a name="line-834"></a><span class="cp">#endif </span><span class="c1">// HAVE_KFILEMETADATA</span>
-<a name="line-835"></a>
-<a name="line-836"></a><span class="p">}</span>
-<a name="line-837"></a>
-<a name="line-838"></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-839"></a><span class="p">{</span>
-<a name="line-840"></a> <span class="k">return</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-841"></a><span class="p">}</span>
-<a name="line-842"></a>
-<a name="line-843"></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-844"></a><span class="p">{</span>
-<a name="line-845"></a> <span class="c1">// Show info if rotation was switched off, and only once.</span>
-<a name="line-846"></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-847"></a> <span class="p">{</span>
-<a name="line-848"></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-849"></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-850"></a> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info&quot;</span><span class="p">,</span>
-<a name="line-851"></a> <span class="s">&quot;Switching off exif auto rotation will most probably show &quot;</span>
-<a name="line-852"></a> <span class="s">&quot;your images in a wrong orientation, so only change this &quot;</span>
-<a name="line-853"></a> <span class="s">&quot;option if you explicitly require this.&quot;</span><span class="p">));</span>
-<a name="line-854"></a> <span class="p">}</span>
-<a name="line-855"></a><span class="p">}</span>
-<a name="line-856"></a>
-<a name="line-857"></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-858"></a><span class="p">{</span>
-<a name="line-859"></a> <span class="c1">// Show info if delete metadata from the database was switched on, and only once.</span>
-<a name="line-860"></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-861"></a> <span class="p">{</span>
-<a name="line-862"></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-863"></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-864"></a> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;@info&quot;</span><span class="p">,</span>
-<a name="line-865"></a> <span class="s">&quot;Switching on this option and your metadata has been written to the &quot;</span>
-<a name="line-866"></a> <span class="s">&quot;database only and not to the file or sidecar, you will be able to &quot;</span>
-<a name="line-867"></a> <span class="s">&quot;lose inserted metadata such as tags, keywords, or geographic &quot;</span>
-<a name="line-868"></a> <span class="s">&quot;coordinates.&quot;</span><span class="p">));</span>
-<a name="line-869"></a> <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">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-873"></a><span class="p">{</span>
-<a name="line-874"></a> <span class="c1">// Show info if write metadata to raw files was switched on</span>
-<a name="line-875"></a> <span class="k">if</span> <span class="p">(</span><span class="n">b</span><span class="p">)</span>
-<a name="line-876"></a> <span class="p">{</span>
-<a name="line-877"></a> <span class="n">QApplication</span><span class="o">::</span><span class="n">beep</span><span class="p">();</span>
-<a name="line-878"></a>
-<a name="line-879"></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-880"></a> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">applicationName</span><span class="p">(),</span>
-<a name="line-881"></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-882"></a> <span class="s">&quot;&lt;p&gt;DigiKam delegates this task to the Exiv2 library. With different RAW &quot;</span>
-<a name="line-883"></a> <span class="s">&quot;formats, problems are known which can lead to the destruction of RAW &quot;</span>
-<a name="line-884"></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-885"></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-886"></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-887"></a>
-<a name="line-888"></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-889"></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-890"></a>
-<a name="line-891"></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-892"></a> <span class="k">delete</span> <span class="n">msgBox</span><span class="p">;</span>
-<a name="line-893"></a>
-<a name="line-894"></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-895"></a> <span class="p">{</span>
-<a name="line-896"></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-897"></a> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">applicationName</span><span class="p">(),</span>
-<a name="line-898"></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-899"></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-900"></a>
-<a name="line-901"></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-902"></a> <span class="k">delete</span> <span class="n">msgBox</span><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">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-905"></a> <span class="p">{</span>
-<a name="line-906"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-907"></a> <span class="p">}</span>
-<a name="line-908"></a> <span class="p">}</span>
-<a name="line-909"></a>
-<a name="line-910"></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-911"></a> <span class="p">}</span>
-<a name="line-912"></a><span class="p">}</span>
-<a name="line-913"></a>
-<a name="line-914"></a><span class="p">}</span> <span class="c1">// namespace Digikam</span>
+<a name="line-571"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">CameraPage</span><span class="p">:</span>
+<a name="line-572"></a> <span class="k">return</span> <span class="n">page_camera</span><span class="p">;</span>
+<a name="line-573"></a>
+<a name="line-574"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">PluginsPage</span><span class="p">:</span>
+<a name="line-575"></a> <span class="k">return</span> <span class="n">page_plugins</span><span class="p">;</span>
+<a name="line-576"></a>
+<a name="line-577"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">MiscellaneousPage</span><span class="p">:</span>
+<a name="line-578"></a> <span class="k">return</span> <span class="n">page_misc</span><span class="p">;</span>
+<a name="line-579"></a>
+<a name="line-580"></a> <span class="k">default</span><span class="o">:</span>
+<a name="line-581"></a> <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
+<a name="line-582"></a> <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="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/6.html b/static/reports/cppcheck/master/6.html
index c83965f1d..36ddb1901 100644
--- a/static/reports/cppcheck/master/6.html
+++ b/static/reports/cppcheck/master/6.html
@@ -1,1245 +1,1245 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/metadata/metadataedit/xmp/xmpproperties.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../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='6.html#line-328'> shadowVar 328</a><a href='6.html#line-328'> shadowVar 328</a><a href='6.html#line-328'> shadowVar 328</a><a href='6.html#line-339'> shadowVar 339</a><a href='6.html#line-384'> shadowVar 384</a><a href='6.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">sprintf</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/60.html b/static/reports/cppcheck/master/60.html
deleted file mode 100644
index c14b5724b..000000000
--- a/static/reports/cppcheck/master/60.html
+++ /dev/null
@@ -1,1315 +0,0 @@
-
-<!DOCTYPE html>
-<html lang="en">
- <head>
- <meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</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-08bdab4e6b: ../../core/utilities/setup/setup.cpp </h1>
- </div>
- <div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> setup.cpp</p>
-<a href='60.html#line-301'> shadowVar 301</a><a href='60.html#line-319'> shadowVar 319</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</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-02-03</span>
-<a name="line-7"></a><span class="cm"> * Description : digiKam setup dialog.</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) 2003-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 Album</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 Album 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;setup.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;QPointer&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;QMessageBox&gt;</span><span class="cp"></span>
-<a name="line-32"></a>
-<a name="line-33"></a><span class="c1">// KDE includes</span>
-<a name="line-34"></a>
-<a name="line-35"></a><span class="cp">#include</span> <span class="cpf">&lt;kconfiggroup.h&gt;</span><span class="cp"></span>
-<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><span class="cp">#include</span> <span class="cpf">&lt;ksharedconfig.h&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;digikam_debug.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;applicationsettings.h&quot;</span><span class="cp"></span>
-<a name="line-44"></a><span class="cp">#include</span> <span class="cpf">&quot;setupalbumview.h&quot;</span><span class="cp"></span>
-<a name="line-45"></a><span class="cp">#include</span> <span class="cpf">&quot;setupcamera.h&quot;</span><span class="cp"></span>
-<a name="line-46"></a><span class="cp">#include</span> <span class="cpf">&quot;setupcollections.h&quot;</span><span class="cp"></span>
-<a name="line-47"></a><span class="cp">#include</span> <span class="cpf">&quot;setupeditor.h&quot;</span><span class="cp"></span>
-<a name="line-48"></a><span class="cp">#include</span> <span class="cpf">&quot;setupicc.h&quot;</span><span class="cp"></span>
-<a name="line-49"></a><span class="cp">#include</span> <span class="cpf">&quot;setuplighttable.h&quot;</span><span class="cp"></span>
-<a name="line-50"></a><span class="cp">#include</span> <span class="cpf">&quot;setupmetadata.h&quot;</span><span class="cp"></span>
-<a name="line-51"></a><span class="cp">#include</span> <span class="cpf">&quot;setupmisc.h&quot;</span><span class="cp"></span>
-<a name="line-52"></a><span class="cp">#include</span> <span class="cpf">&quot;setupslideshow.h&quot;</span><span class="cp"></span>
-<a name="line-53"></a><span class="cp">#include</span> <span class="cpf">&quot;setupimagequalitysorter.h&quot;</span><span class="cp"></span>
-<a name="line-54"></a><span class="cp">#include</span> <span class="cpf">&quot;setuptooltip.h&quot;</span><span class="cp"></span>
-<a name="line-55"></a><span class="cp">#include</span> <span class="cpf">&quot;setupdatabase.h&quot;</span><span class="cp"></span>
-<a name="line-56"></a><span class="cp">#include</span> <span class="cpf">&quot;setupplugins.h&quot;</span><span class="cp"></span>
-<a name="line-57"></a><span class="cp">#include</span> <span class="cpf">&quot;importsettings.h&quot;</span><span class="cp"></span>
-<a name="line-58"></a><span class="cp">#include</span> <span class="cpf">&quot;dxmlguiwindow.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">Digikam</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">Setup</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">explicit</span> <span class="n">Private</span><span class="p">()</span>
-<a name="line-68"></a> <span class="o">:</span> <span class="n">page_database</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-69"></a> <span class="n">page_collections</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-70"></a> <span class="n">page_albumView</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-71"></a> <span class="n">page_tooltip</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-72"></a> <span class="n">page_metadata</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-73"></a> <span class="n">page_template</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-74"></a> <span class="n">page_lighttable</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-75"></a> <span class="n">page_editor</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-76"></a> <span class="n">page_slideshow</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-77"></a> <span class="n">page_imagequalitysorter</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-78"></a> <span class="n">page_icc</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-79"></a> <span class="n">page_camera</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-80"></a> <span class="n">page_plugins</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-81"></a> <span class="n">page_misc</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-82"></a> <span class="n">databasePage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-83"></a> <span class="n">collectionsPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-84"></a> <span class="n">albumViewPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-85"></a> <span class="n">tooltipPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-86"></a> <span class="n">metadataPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-87"></a> <span class="n">templatePage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-88"></a> <span class="n">lighttablePage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-89"></a> <span class="n">editorPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-90"></a> <span class="n">slideshowPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-91"></a> <span class="n">imageQualitySorterPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-92"></a> <span class="n">iccPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-93"></a> <span class="n">cameraPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-94"></a> <span class="n">pluginsPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
-<a name="line-95"></a> <span class="n">miscPage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">)</span>
-<a name="line-96"></a> <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="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_database</span><span class="p">;</span>
-<a name="line-100"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_collections</span><span class="p">;</span>
-<a name="line-101"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_albumView</span><span class="p">;</span>
-<a name="line-102"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_tooltip</span><span class="p">;</span>
-<a name="line-103"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_metadata</span><span class="p">;</span>
-<a name="line-104"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_template</span><span class="p">;</span>
-<a name="line-105"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_lighttable</span><span class="p">;</span>
-<a name="line-106"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_editor</span><span class="p">;</span>
-<a name="line-107"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_slideshow</span><span class="p">;</span>
-<a name="line-108"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_imagequalitysorter</span><span class="p">;</span>
-<a name="line-109"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_icc</span><span class="p">;</span>
-<a name="line-110"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_camera</span><span class="p">;</span>
-<a name="line-111"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_plugins</span><span class="p">;</span>
-<a name="line-112"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">page_misc</span><span class="p">;</span>
-<a name="line-113"></a>
-<a name="line-114"></a> <span class="n">SetupDatabase</span><span class="o">*</span> <span class="n">databasePage</span><span class="p">;</span>
-<a name="line-115"></a> <span class="n">SetupCollections</span><span class="o">*</span> <span class="n">collectionsPage</span><span class="p">;</span>
-<a name="line-116"></a> <span class="n">SetupAlbumView</span><span class="o">*</span> <span class="n">albumViewPage</span><span class="p">;</span>
-<a name="line-117"></a> <span class="n">SetupToolTip</span><span class="o">*</span> <span class="n">tooltipPage</span><span class="p">;</span>
-<a name="line-118"></a> <span class="n">SetupMetadata</span><span class="o">*</span> <span class="n">metadataPage</span><span class="p">;</span>
-<a name="line-119"></a> <span class="n">SetupTemplate</span><span class="o">*</span> <span class="n">templatePage</span><span class="p">;</span>
-<a name="line-120"></a> <span class="n">SetupLightTable</span><span class="o">*</span> <span class="n">lighttablePage</span><span class="p">;</span>
-<a name="line-121"></a> <span class="n">SetupEditor</span><span class="o">*</span> <span class="n">editorPage</span><span class="p">;</span>
-<a name="line-122"></a> <span class="n">SetupSlideShow</span><span class="o">*</span> <span class="n">slideshowPage</span><span class="p">;</span>
-<a name="line-123"></a> <span class="n">SetupImageQualitySorter</span><span class="o">*</span> <span class="n">imageQualitySorterPage</span><span class="p">;</span>
-<a name="line-124"></a> <span class="n">SetupICC</span><span class="o">*</span> <span class="n">iccPage</span><span class="p">;</span>
-<a name="line-125"></a> <span class="n">SetupCamera</span><span class="o">*</span> <span class="n">cameraPage</span><span class="p">;</span>
-<a name="line-126"></a> <span class="n">SetupPlugins</span><span class="o">*</span> <span class="n">pluginsPage</span><span class="p">;</span>
-<a name="line-127"></a> <span class="n">SetupMisc</span><span class="o">*</span> <span class="n">miscPage</span><span class="p">;</span>
-<a name="line-128"></a>
-<a name="line-129"></a><span class="k">public</span><span class="o">:</span>
-<a name="line-130"></a>
-<a name="line-131"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">pageItem</span><span class="p">(</span><span class="n">Setup</span><span class="o">::</span><span class="n">Page</span> <span class="n">page</span><span class="p">)</span> <span class="k">const</span><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">Setup</span><span class="o">::</span><span class="n">Setup</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-135"></a> <span class="o">:</span> <span class="n">DConfigDlg</span><span class="p">(</span><span class="n">parent</span><span class="p">),</span>
-<a name="line-136"></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-137"></a><span class="p">{</span>
-<a name="line-138"></a> <span class="n">setWindowFlags</span><span class="p">((</span><span class="n">windowFlags</span><span class="p">()</span> <span class="o">&amp;</span> <span class="o">~</span><span class="n">Qt</span><span class="o">::</span><span class="n">Dialog</span><span class="p">)</span> <span class="o">|</span>
-<a name="line-139"></a> <span class="n">Qt</span><span class="o">::</span><span class="n">Window</span> <span class="o">|</span>
-<a name="line-140"></a> <span class="n">Qt</span><span class="o">::</span><span class="n">WindowCloseButtonHint</span> <span class="o">|</span>
-<a name="line-141"></a> <span class="n">Qt</span><span class="o">::</span><span class="n">WindowMinMaxButtonsHint</span><span class="p">);</span>
-<a name="line-142"></a>
-<a name="line-143"></a> <span class="n">setWindowTitle</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Configure&quot;</span><span class="p">));</span>
-<a name="line-144"></a> <span class="n">setStandardButtons</span><span class="p">(</span><span class="n">QDialogButtonBox</span><span class="o">::</span><span class="n">Help</span> <span class="o">|</span> <span class="n">QDialogButtonBox</span><span class="o">::</span><span class="n">Ok</span> <span class="o">|</span> <span class="n">QDialogButtonBox</span><span class="o">::</span><span class="n">Cancel</span><span class="p">);</span>
-<a name="line-145"></a> <span class="n">button</span><span class="p">(</span><span class="n">QDialogButtonBox</span><span class="o">::</span><span class="n">Ok</span><span class="p">)</span><span class="o">-&gt;</span><span class="n">setDefault</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-146"></a> <span class="n">setFaceType</span><span class="p">(</span><span class="n">List</span><span class="p">);</span>
-<a name="line-147"></a> <span class="n">setModal</span><span class="p">(</span><span class="nb">true</span><span class="p">);</span>
-<a name="line-148"></a>
-<a name="line-149"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">databasePage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupDatabase</span><span class="p">();</span>
-<a name="line-150"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_database</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">databasePage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Database&quot;</span><span class="p">));</span>
-<a name="line-151"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_database</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Database Settings&lt;br/&gt;&quot;</span>
-<a name="line-152"></a> <span class="s">&quot;&lt;i&gt;Customize database settings&lt;/i&gt;&lt;/qt&gt;&quot;</span><span class="p">));</span>
-<a name="line-153"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_database</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;network-server-database&quot;</span><span class="p">)));</span>
-<a name="line-154"></a>
-<a name="line-155"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">collectionsPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupCollections</span><span class="p">();</span>
-<a name="line-156"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_collections</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">collectionsPage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Collections&quot;</span><span class="p">));</span>
-<a name="line-157"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_collections</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Collections Settings&lt;br/&gt;&quot;</span>
-<a name="line-158"></a> <span class="s">&quot;&lt;i&gt;Set root albums locations&lt;/i&gt;&lt;/qt&gt;&quot;</span><span class="p">));</span>
-<a name="line-159"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_collections</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;folder-pictures&quot;</span><span class="p">)));</span>
-<a name="line-160"></a>
-<a name="line-161"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albumViewPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupAlbumView</span><span class="p">();</span>
-<a name="line-162"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_albumView</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">albumViewPage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Views&quot;</span><span class="p">));</span>
-<a name="line-163"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_albumView</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Application Views Settings&lt;br/&gt;&quot;</span>
-<a name="line-164"></a> <span class="s">&quot;&lt;i&gt;Customize the look of the views&lt;/i&gt;&lt;/qt&gt;&quot;</span><span class="p">));</span>
-<a name="line-165"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_albumView</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;view-list-icons&quot;</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">tooltipPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupToolTip</span><span class="p">();</span>
-<a name="line-168"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_tooltip</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">tooltipPage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Tool-Tip&quot;</span><span class="p">));</span>
-<a name="line-169"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_tooltip</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Items Tool-Tip Settings&lt;br/&gt;&quot;</span>
-<a name="line-170"></a> <span class="s">&quot;&lt;i&gt;Customize information in item tool-tips&lt;/i&gt;&lt;/qt&gt;&quot;</span><span class="p">));</span>
-<a name="line-171"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_tooltip</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-information&quot;</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">metadataPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupMetadata</span><span class="p">();</span>
-<a name="line-174"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_metadata</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">metadataPage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Metadata&quot;</span><span class="p">));</span>
-<a name="line-175"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_metadata</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Embedded Image Information Management&lt;br/&gt;&quot;</span>
-<a name="line-176"></a> <span class="s">&quot;&lt;i&gt;Setup relations between images and metadata&lt;/i&gt;&lt;/qt&gt;&quot;</span><span class="p">));</span>
-<a name="line-177"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_metadata</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;format-text-code&quot;</span><span class="p">)));</span> <span class="c1">// krazy:exclude=iconnames</span>
-<a name="line-178"></a>
-<a name="line-179"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">templatePage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupTemplate</span><span class="p">();</span>
-<a name="line-180"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_template</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">templatePage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Templates&quot;</span><span class="p">));</span>
-<a name="line-181"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_template</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Metadata templates&lt;br/&gt;&quot;</span>
-<a name="line-182"></a> <span class="s">&quot;&lt;i&gt;Manage your collection of metadata templates&lt;/i&gt;&lt;/qt&gt;&quot;</span><span class="p">));</span>
-<a name="line-183"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_template</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;im-user&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">editorPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupEditor</span><span class="p">();</span>
-<a name="line-186"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_editor</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">editorPage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Image Editor&quot;</span><span class="p">));</span>
-<a name="line-187"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_editor</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Image Editor Settings&lt;br/&gt;&quot;</span>
-<a name="line-188"></a> <span class="s">&quot;&lt;i&gt;Customize the image editor settings&lt;/i&gt;&lt;/qt&gt;&quot;</span><span class="p">));</span>
-<a name="line-189"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_editor</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;document-edit&quot;</span><span class="p">)));</span>
-<a name="line-190"></a>
-<a name="line-191"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">iccPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupICC</span><span class="p">(</span><span class="n">buttonBox</span><span class="p">());</span>
-<a name="line-192"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_icc</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">iccPage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Color Management&quot;</span><span class="p">));</span>
-<a name="line-193"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_icc</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Settings for Color Management&lt;br/&gt;&quot;</span>
-<a name="line-194"></a> <span class="s">&quot;&lt;i&gt;Customize the color management settings&lt;/i&gt;&lt;/qt&gt;&quot;</span><span class="p">));</span>
-<a name="line-195"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_icc</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;preferences-desktop-display-color&quot;</span><span class="p">)));</span>
-<a name="line-196"></a>
-<a name="line-197"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">lighttablePage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupLightTable</span><span class="p">();</span>
-<a name="line-198"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_lighttable</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">lighttablePage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Light Table&quot;</span><span class="p">));</span>
-<a name="line-199"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_lighttable</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Light Table Settings&lt;br/&gt;&quot;</span>
-<a name="line-200"></a> <span class="s">&quot;&lt;i&gt;Customize tool used to compare images&lt;/i&gt;&lt;/qt&gt;&quot;</span><span class="p">));</span>
-<a name="line-201"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_lighttable</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;lighttable&quot;</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">slideshowPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupSlideShow</span><span class="p">();</span>
-<a name="line-204"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_slideshow</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">slideshowPage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Slide Show&quot;</span><span class="p">));</span>
-<a name="line-205"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_slideshow</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Slide Show Settings&lt;br/&gt;&quot;</span>
-<a name="line-206"></a> <span class="s">&quot;&lt;i&gt;Customize slideshow settings&lt;/i&gt;&lt;/qt&gt;&quot;</span><span class="p">));</span>
-<a name="line-207"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_slideshow</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;view-presentation&quot;</span><span class="p">)));</span>
-<a name="line-208"></a>
-<a name="line-209"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageQualitySorterPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupImageQualitySorter</span><span class="p">();</span>
-<a name="line-210"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_imagequalitysorter</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">imageQualitySorterPage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Image Quality Sorter&quot;</span><span class="p">));</span>
-<a name="line-211"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_imagequalitysorter</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Image Quality Sorter Settings&lt;/qt&gt;&quot;</span><span class="p">));</span>
-<a name="line-212"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_imagequalitysorter</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;flag-green&quot;</span><span class="p">)));</span>
-<a name="line-213"></a>
-<a name="line-214"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cameraPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupCamera</span><span class="p">();</span>
-<a name="line-215"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_camera</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cameraPage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Cameras&quot;</span><span class="p">));</span>
-<a name="line-216"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_camera</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Camera Settings&lt;br/&gt;&quot;</span>
-<a name="line-217"></a> <span class="s">&quot;&lt;i&gt;Manage your camera devices&lt;/i&gt;&lt;/qt&gt;&quot;</span><span class="p">));</span>
-<a name="line-218"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_camera</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;camera-photo&quot;</span><span class="p">)));</span>
-<a name="line-219"></a>
-<a name="line-220"></a> <span class="n">connect</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">cameraPage</span><span class="p">,</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">signalUseFileMetadataChanged</span><span class="p">(</span><span class="kt">bool</span><span class="p">)),</span>
-<a name="line-221"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tooltipPage</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotUseFileMetadataChanged</span><span class="p">(</span><span class="kt">bool</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">pluginsPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupPlugins</span><span class="p">();</span>
-<a name="line-224"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_plugins</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">pluginsPage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Plugins&quot;</span><span class="p">));</span>
-<a name="line-225"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_plugins</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Plug-in Settings&lt;br/&gt;&quot;</span>
-<a name="line-226"></a> <span class="s">&quot;&lt;i&gt;Set which plugins will be accessible from application&lt;/i&gt;&lt;/qt&gt;&quot;</span><span class="p">));</span>
-<a name="line-227"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_plugins</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;preferences-plugin&quot;</span><span class="p">)));</span>
-<a name="line-228"></a>
-<a name="line-229"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">miscPage</span> <span class="o">=</span> <span class="k">new</span> <span class="n">SetupMisc</span><span class="p">();</span>
-<a name="line-230"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_misc</span> <span class="o">=</span> <span class="n">addPage</span><span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">miscPage</span><span class="p">,</span> <span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Miscellaneous&quot;</span><span class="p">));</span>
-<a name="line-231"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_misc</span><span class="o">-&gt;</span><span class="n">setHeader</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;&lt;qt&gt;Miscellaneous Settings&lt;br/&gt;&quot;</span>
-<a name="line-232"></a> <span class="s">&quot;&lt;i&gt;Customize behavior of the other parts of digiKam&lt;/i&gt;&lt;/qt&gt;&quot;</span><span class="p">));</span>
-<a name="line-233"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_misc</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;preferences-other&quot;</span><span class="p">)));</span>
-<a name="line-234"></a>
-<a name="line-235"></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">!=</span> <span class="n">SetupPageEnumLast</span> <span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span>
-<a name="line-236"></a> <span class="p">{</span>
-<a name="line-237"></a> <span class="n">DConfigDlgWdgItem</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">pageItem</span><span class="p">((</span><span class="n">Page</span><span class="p">)</span><span class="n">i</span><span class="p">);</span>
-<a name="line-238"></a>
-<a name="line-239"></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-240"></a> <span class="p">{</span>
-<a name="line-241"></a> <span class="k">continue</span><span class="p">;</span>
-<a name="line-242"></a> <span class="p">}</span>
-<a name="line-243"></a>
-<a name="line-244"></a> <span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">wgt</span> <span class="o">=</span> <span class="n">item</span><span class="o">-&gt;</span><span class="n">widget</span><span class="p">();</span>
-<a name="line-245"></a> <span class="n">QScrollArea</span><span class="o">*</span> <span class="k">const</span> <span class="n">scrollArea</span> <span class="o">=</span> <span class="n">qobject_cast</span><span class="o">&lt;</span><span class="n">QScrollArea</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">wgt</span><span class="p">);</span>
-<a name="line-246"></a>
-<a name="line-247"></a> <span class="k">if</span> <span class="p">(</span><span class="n">scrollArea</span><span class="p">)</span>
-<a name="line-248"></a> <span class="p">{</span>
-<a name="line-249"></a> <span class="n">scrollArea</span><span class="o">-&gt;</span><span class="n">setFrameShape</span><span class="p">(</span><span class="n">QFrame</span><span class="o">::</span><span class="n">NoFrame</span><span class="p">);</span>
-<a name="line-250"></a> <span class="p">}</span>
-<a name="line-251"></a> <span class="p">}</span>
-<a name="line-252"></a>
-<a name="line-253"></a> <span class="n">connect</span><span class="p">(</span><span class="n">buttonBox</span><span class="p">(),</span> <span class="n">SIGNAL</span><span class="p">(</span><span class="n">helpRequested</span><span class="p">()),</span>
-<a name="line-254"></a> <span class="k">this</span><span class="p">,</span> <span class="n">SLOT</span><span class="p">(</span><span class="n">slotHelp</span><span class="p">()));</span>
-<a name="line-255"></a>
-<a name="line-256"></a> <span class="n">connect</span><span class="p">(</span><span class="n">buttonBox</span><span class="p">()</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">Ok</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-257"></a> <span class="k">this</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">Setup</span><span class="o">::</span><span class="n">slotOkClicked</span><span class="p">);</span>
-<a name="line-258"></a>
-<a name="line-259"></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-260"></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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Setup Dialog&quot;</span><span class="p">));</span>
-<a name="line-261"></a>
-<a name="line-262"></a> <span class="n">winId</span><span class="p">();</span>
-<a name="line-263"></a> <span class="n">windowHandle</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">resize</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-264"></a> <span class="n">DXmlGuiWindow</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">group</span><span class="p">);</span>
-<a name="line-265"></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-266"></a><span class="p">}</span>
-<a name="line-267"></a>
-<a name="line-268"></a><span class="n">Setup</span><span class="o">::~</span><span class="n">Setup</span><span class="p">()</span>
-<a name="line-269"></a><span class="p">{</span>
-<a name="line-270"></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-271"></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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Setup Dialog&quot;</span><span class="p">));</span>
-<a name="line-272"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Setup Page&quot;</span><span class="p">),</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">activePageIndex</span><span class="p">());</span>
-<a name="line-273"></a> <span class="n">DXmlGuiWindow</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">group</span><span class="p">);</span>
-<a name="line-274"></a> <span class="n">config</span><span class="o">-&gt;</span><span class="n">sync</span><span class="p">();</span>
-<a name="line-275"></a> <span class="k">delete</span> <span class="n">d</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">void</span> <span class="n">Setup</span><span class="o">::</span><span class="n">slotHelp</span><span class="p">()</span>
-<a name="line-279"></a><span class="p">{</span>
-<a name="line-280"></a> <span class="n">DXmlGuiWindow</span><span class="o">::</span><span class="n">openHandbook</span><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="kt">void</span> <span class="n">Setup</span><span class="o">::</span><span class="n">setTemplate</span><span class="p">(</span><span class="k">const</span> <span class="n">Template</span><span class="o">&amp;</span> <span class="n">t</span><span class="p">)</span>
-<a name="line-284"></a><span class="p">{</span>
-<a name="line-285"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">templatePage</span><span class="p">)</span>
-<a name="line-286"></a> <span class="p">{</span>
-<a name="line-287"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">templatePage</span><span class="o">-&gt;</span><span class="n">setTemplate</span><span class="p">(</span><span class="n">t</span><span class="p">);</span>
-<a name="line-288"></a> <span class="p">}</span>
-<a name="line-289"></a><span class="p">}</span>
-<a name="line-290"></a>
-<a name="line-291"></a><span class="n">QSize</span> <span class="n">Setup</span><span class="o">::</span><span class="n">sizeHint</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-292"></a><span class="p">{</span>
-<a name="line-293"></a> <span class="c1">// The minimum size is very small. But the default initial size is such</span>
-<a name="line-294"></a> <span class="c1">// that some important tabs get a scroll bar, although the dialog could be larger</span>
-<a name="line-295"></a> <span class="c1">// on a normal display (QScrollArea size hint does not take widget into account)</span>
-<a name="line-296"></a> <span class="c1">// Adjust size hint here so that certain selected tabs are display full per default.</span>
-<a name="line-297"></a> <span class="n">QSize</span> <span class="n">hint</span> <span class="o">=</span> <span class="n">DConfigDlg</span><span class="o">::</span><span class="n">sizeHint</span><span class="p">();</span>
-<a name="line-298"></a> <span class="kt">int</span> <span class="n">maxHintHeight</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-299"></a> <span class="kt">int</span> <span class="n">maxWidgetHeight</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
-<a name="line-300"></a>
-<a name="line-301"></a><span class="hll"> <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">page</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">;</span> <span class="n">page</span> <span class="o">!=</span> <span class="n">SetupPageEnumLast</span> <span class="p">;</span> <span class="o">++</span><span class="n">page</span><span class="p">)</span><span class='error2'>&lt;--- Shadowed declaration</span>
-</span><a name="line-302"></a> <span class="p">{</span>
-<a name="line-303"></a> <span class="c1">// only take tabs into account here that should better be displayed without scrolling</span>
-<a name="line-304"></a> <span class="k">if</span> <span class="p">(</span><span class="n">page</span> <span class="o">==</span> <span class="n">CollectionsPage</span> <span class="o">||</span>
-<a name="line-305"></a> <span class="n">page</span> <span class="o">==</span> <span class="n">AlbumViewPage</span> <span class="o">||</span>
-<a name="line-306"></a> <span class="n">page</span> <span class="o">==</span> <span class="n">TemplatePage</span> <span class="o">||</span>
-<a name="line-307"></a> <span class="n">page</span> <span class="o">==</span> <span class="n">LightTablePage</span> <span class="o">||</span>
-<a name="line-308"></a> <span class="n">page</span> <span class="o">==</span> <span class="n">EditorPage</span> <span class="o">||</span>
-<a name="line-309"></a> <span class="n">page</span> <span class="o">==</span> <span class="n">PluginsPage</span> <span class="o">||</span>
-<a name="line-310"></a> <span class="n">page</span> <span class="o">==</span> <span class="n">MiscellaneousPage</span><span class="p">)</span>
-<a name="line-311"></a> <span class="p">{</span>
-<a name="line-312"></a> <span class="n">DConfigDlgWdgItem</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">pageItem</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-313"></a>
-<a name="line-314"></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-315"></a> <span class="p">{</span>
-<a name="line-316"></a> <span class="k">continue</span><span class="p">;</span>
-<a name="line-317"></a> <span class="p">}</span>
-<a name="line-318"></a>
-<a name="line-319"></a><span class="hll"> <span class="n">QWidget</span><span class="o">*</span> <span class="k">const</span> <span class="n">page</span> <span class="o">=</span> <span class="n">item</span><span class="o">-&gt;</span><span class="n">widget</span><span class="p">();</span><span class='error2'>&lt;--- Shadow variable</span>
-</span><a name="line-320"></a> <span class="n">maxHintHeight</span> <span class="o">=</span> <span class="n">qMax</span><span class="p">(</span><span class="n">maxHintHeight</span><span class="p">,</span> <span class="n">page</span><span class="o">-&gt;</span><span class="n">sizeHint</span><span class="p">().</span><span class="n">height</span><span class="p">());</span>
-<a name="line-321"></a> <span class="n">QScrollArea</span><span class="o">*</span> <span class="k">const</span> <span class="n">scrollArea</span> <span class="o">=</span> <span class="n">qobject_cast</span><span class="o">&lt;</span><span class="n">QScrollArea</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">page</span><span class="p">);</span>
-<a name="line-322"></a>
-<a name="line-323"></a> <span class="k">if</span> <span class="p">(</span><span class="n">scrollArea</span><span class="p">)</span>
-<a name="line-324"></a> <span class="p">{</span>
-<a name="line-325"></a> <span class="n">maxWidgetHeight</span> <span class="o">=</span> <span class="n">qMax</span><span class="p">(</span><span class="n">maxWidgetHeight</span><span class="p">,</span> <span class="n">scrollArea</span><span class="o">-&gt;</span><span class="n">widget</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">sizeHint</span><span class="p">().</span><span class="n">height</span><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> <span class="p">}</span>
-<a name="line-329"></a>
-<a name="line-330"></a> <span class="c1">// The additional 20 is a hack to make it work.</span>
-<a name="line-331"></a> <span class="c1">// Don&#39;t know why, the largest page would have scroll bars without this</span>
-<a name="line-332"></a> <span class="k">if</span> <span class="p">(</span><span class="n">maxWidgetHeight</span> <span class="o">&gt;</span> <span class="n">maxHintHeight</span><span class="p">)</span>
-<a name="line-333"></a> <span class="p">{</span>
-<a name="line-334"></a> <span class="n">hint</span><span class="p">.</span><span class="n">setHeight</span><span class="p">(</span><span class="n">hint</span><span class="p">.</span><span class="n">height</span><span class="p">()</span> <span class="o">+</span> <span class="p">(</span><span class="n">maxWidgetHeight</span> <span class="o">-</span> <span class="n">maxHintHeight</span><span class="p">)</span> <span class="o">+</span> <span class="mi">20</span><span class="p">);</span>
-<a name="line-335"></a> <span class="p">}</span>
-<a name="line-336"></a>
-<a name="line-337"></a> <span class="k">return</span> <span class="n">hint</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">bool</span> <span class="n">Setup</span><span class="o">::</span><span class="n">execDialog</span><span class="p">(</span><span class="n">Page</span> <span class="n">page</span><span class="p">)</span>
-<a name="line-341"></a><span class="p">{</span>
-<a name="line-342"></a> <span class="k">return</span> <span class="n">execDialog</span><span class="p">(</span><span class="k">nullptr</span><span class="p">,</span> <span class="n">page</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">bool</span> <span class="n">Setup</span><span class="o">::</span><span class="n">execDialog</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">Page</span> <span class="n">page</span><span class="p">)</span>
-<a name="line-346"></a><span class="p">{</span>
-<a name="line-347"></a> <span class="n">QPointer</span><span class="o">&lt;</span><span class="n">Setup</span><span class="o">&gt;</span> <span class="n">setup</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Setup</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
-<a name="line-348"></a> <span class="n">setup</span><span class="o">-&gt;</span><span class="n">showPage</span><span class="p">(</span><span class="n">page</span><span class="p">);</span>
-<a name="line-349"></a> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="p">(</span><span class="n">setup</span><span class="o">-&gt;</span><span class="n">DConfigDlg</span><span class="o">::</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-350"></a> <span class="k">delete</span> <span class="n">setup</span><span class="p">;</span>
-<a name="line-351"></a> <span class="k">return</span> <span class="n">success</span><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">bool</span> <span class="n">Setup</span><span class="o">::</span><span class="n">execSinglePage</span><span class="p">(</span><span class="n">Page</span> <span class="n">page</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">execSinglePage</span><span class="p">(</span><span class="k">nullptr</span><span class="p">,</span> <span class="n">page</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="kt">bool</span> <span class="n">Setup</span><span class="o">::</span><span class="n">execSinglePage</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">Page</span> <span class="n">page</span><span class="p">)</span>
-<a name="line-360"></a><span class="p">{</span>
-<a name="line-361"></a> <span class="n">QPointer</span><span class="o">&lt;</span><span class="n">Setup</span><span class="o">&gt;</span> <span class="n">setup</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Setup</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
-<a name="line-362"></a> <span class="n">setup</span><span class="o">-&gt;</span><span class="n">showPage</span><span class="p">(</span><span class="n">page</span><span class="p">);</span>
-<a name="line-363"></a> <span class="n">setup</span><span class="o">-&gt;</span><span class="n">setFaceType</span><span class="p">(</span><span class="n">Plain</span><span class="p">);</span>
-<a name="line-364"></a> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="p">(</span><span class="n">setup</span><span class="o">-&gt;</span><span class="n">DConfigDlg</span><span class="o">::</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-365"></a> <span class="k">delete</span> <span class="n">setup</span><span class="p">;</span>
-<a name="line-366"></a> <span class="k">return</span> <span class="n">success</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="kt">bool</span> <span class="n">Setup</span><span class="o">::</span><span class="n">execTemplateEditor</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="k">const</span> <span class="n">Template</span><span class="o">&amp;</span> <span class="n">t</span><span class="p">)</span>
-<a name="line-370"></a><span class="p">{</span>
-<a name="line-371"></a> <span class="n">QPointer</span><span class="o">&lt;</span><span class="n">Setup</span><span class="o">&gt;</span> <span class="n">setup</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Setup</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
-<a name="line-372"></a> <span class="n">setup</span><span class="o">-&gt;</span><span class="n">showPage</span><span class="p">(</span><span class="n">TemplatePage</span><span class="p">);</span>
-<a name="line-373"></a> <span class="n">setup</span><span class="o">-&gt;</span><span class="n">setFaceType</span><span class="p">(</span><span class="n">Plain</span><span class="p">);</span>
-<a name="line-374"></a> <span class="n">setup</span><span class="o">-&gt;</span><span class="n">setTemplate</span><span class="p">(</span><span class="n">t</span><span class="p">);</span>
-<a name="line-375"></a> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="p">(</span><span class="n">setup</span><span class="o">-&gt;</span><span class="n">DConfigDlg</span><span class="o">::</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-376"></a> <span class="k">delete</span> <span class="n">setup</span><span class="p">;</span>
-<a name="line-377"></a> <span class="k">return</span> <span class="n">success</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="kt">bool</span> <span class="n">Setup</span><span class="o">::</span><span class="n">execMetadataFilters</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="kt">int</span> <span class="n">tab</span><span class="p">)</span>
-<a name="line-381"></a><span class="p">{</span>
-<a name="line-382"></a> <span class="n">QPointer</span><span class="o">&lt;</span><span class="n">Setup</span><span class="o">&gt;</span> <span class="n">setup</span> <span class="o">=</span> <span class="k">new</span> <span class="n">Setup</span><span class="p">(</span><span class="n">parent</span><span class="p">);</span>
-<a name="line-383"></a> <span class="n">setup</span><span class="o">-&gt;</span><span class="n">showPage</span><span class="p">(</span><span class="n">MetadataPage</span><span class="p">);</span>
-<a name="line-384"></a> <span class="n">setup</span><span class="o">-&gt;</span><span class="n">setFaceType</span><span class="p">(</span><span class="n">Plain</span><span class="p">);</span>
-<a name="line-385"></a>
-<a name="line-386"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="k">const</span> <span class="n">cur</span> <span class="o">=</span> <span class="n">setup</span><span class="o">-&gt;</span><span class="n">currentPage</span><span class="p">();</span>
-<a name="line-387"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">cur</span><span class="p">)</span> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-388"></a>
-<a name="line-389"></a> <span class="n">SetupMetadata</span><span class="o">*</span> <span class="k">const</span> <span class="n">widget</span> <span class="o">=</span> <span class="k">dynamic_cast</span><span class="o">&lt;</span><span class="n">SetupMetadata</span><span class="o">*&gt;</span><span class="p">(</span><span class="n">cur</span><span class="o">-&gt;</span><span class="n">widget</span><span class="p">());</span>
-<a name="line-390"></a> <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">widget</span><span class="p">)</span> <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-391"></a>
-<a name="line-392"></a> <span class="n">widget</span><span class="o">-&gt;</span><span class="n">setActiveMainTab</span><span class="p">(</span><span class="n">SetupMetadata</span><span class="o">::</span><span class="n">Display</span><span class="p">);</span>
-<a name="line-393"></a> <span class="n">widget</span><span class="o">-&gt;</span><span class="n">setActiveSubTab</span><span class="p">(</span><span class="n">tab</span><span class="p">);</span>
-<a name="line-394"></a>
-<a name="line-395"></a> <span class="kt">bool</span> <span class="n">success</span> <span class="o">=</span> <span class="p">(</span><span class="n">setup</span><span class="o">-&gt;</span><span class="n">DConfigDlg</span><span class="o">::</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-396"></a> <span class="k">delete</span> <span class="n">setup</span><span class="p">;</span>
-<a name="line-397"></a> <span class="k">return</span> <span class="n">success</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">Setup</span><span class="o">::</span><span class="n">slotOkClicked</span><span class="p">()</span>
-<a name="line-401"></a><span class="p">{</span>
-<a name="line-402"></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">cameraPage</span><span class="o">-&gt;</span><span class="n">checkSettings</span><span class="p">())</span>
-<a name="line-403"></a> <span class="p">{</span>
-<a name="line-404"></a> <span class="n">showPage</span><span class="p">(</span><span class="n">CameraPage</span><span class="p">);</span>
-<a name="line-405"></a> <span class="k">return</span><span class="p">;</span>
-<a name="line-406"></a> <span class="p">}</span>
-<a name="line-407"></a>
-<a name="line-408"></a> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">setOverrideCursor</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-409"></a>
-<a name="line-410"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">cameraPage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
-<a name="line-411"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">databasePage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
-<a name="line-412"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">collectionsPage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
-<a name="line-413"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">albumViewPage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
-<a name="line-414"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">tooltipPage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
-<a name="line-415"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">metadataPage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
-<a name="line-416"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">templatePage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
-<a name="line-417"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">lighttablePage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
-<a name="line-418"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">editorPage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
-<a name="line-419"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">slideshowPage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
-<a name="line-420"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">imageQualitySorterPage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
-<a name="line-421"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">iccPage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
-<a name="line-422"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">pluginsPage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
-<a name="line-423"></a> <span class="n">d</span><span class="o">-&gt;</span><span class="n">miscPage</span><span class="o">-&gt;</span><span class="n">applySettings</span><span class="p">();</span>
-<a name="line-424"></a>
-<a name="line-425"></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">emitSetupChanged</span><span class="p">();</span>
-<a name="line-426"></a> <span class="n">ImportSettings</span><span class="o">::</span><span class="n">instance</span><span class="p">()</span><span class="o">-&gt;</span><span class="n">emitSetupChanged</span><span class="p">();</span>
-<a name="line-427"></a>
-<a name="line-428"></a> <span class="n">qApp</span><span class="o">-&gt;</span><span class="n">restoreOverrideCursor</span><span class="p">();</span>
-<a name="line-429"></a>
-<a name="line-430"></a> <span class="k">if</span> <span class="p">(</span><span class="n">d</span><span class="o">-&gt;</span><span class="n">metadataPage</span><span class="o">-&gt;</span><span class="n">exifAutoRotateHasChanged</span><span class="p">())</span>
-<a name="line-431"></a> <span class="p">{</span>
-<a name="line-432"></a> <span class="n">LoadingCacheInterface</span><span class="o">::</span><span class="n">cleanThumbnailCache</span><span class="p">();</span>
-<a name="line-433"></a> <span class="p">}</span>
-<a name="line-434"></a>
-<a name="line-435"></a> <span class="n">accept</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">Setup</span><span class="o">::</span><span class="n">showPage</span><span class="p">(</span><span class="n">Setup</span><span class="o">::</span><span class="n">Page</span> <span class="n">page</span><span class="p">)</span>
-<a name="line-439"></a><span class="p">{</span>
-<a name="line-440"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">item</span> <span class="o">=</span> <span class="k">nullptr</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">page</span> <span class="o">==</span> <span class="n">LastPageUsed</span><span class="p">)</span>
-<a name="line-443"></a> <span class="p">{</span>
-<a name="line-444"></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-445"></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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Setup Dialog&quot;</span><span class="p">));</span>
-<a name="line-446"></a>
-<a name="line-447"></a> <span class="n">item</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">pageItem</span><span class="p">((</span><span class="n">Page</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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Setup Page&quot;</span><span class="p">),</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">CollectionsPage</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">item</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">pageItem</span><span class="p">(</span><span class="n">page</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="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">item</span><span class="p">)</span>
-<a name="line-455"></a> <span class="p">{</span>
-<a name="line-456"></a> <span class="n">item</span> <span class="o">=</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">pageItem</span><span class="p">(</span><span class="n">CollectionsPage</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="n">setCurrentPage</span><span class="p">(</span><span class="n">item</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="n">Setup</span><span class="o">::</span><span class="n">Page</span> <span class="n">Setup</span><span class="o">::</span><span class="n">activePageIndex</span><span class="p">()</span> <span class="k">const</span>
-<a name="line-463"></a><span class="p">{</span>
-<a name="line-464"></a> <span class="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="k">const</span> <span class="n">cur</span> <span class="o">=</span> <span class="n">currentPage</span><span class="p">();</span>
-<a name="line-465"></a>
-<a name="line-466"></a> <span class="k">if</span> <span class="p">(</span><span class="n">cur</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_collections</span><span class="p">)</span>
-<a name="line-467"></a> <span class="p">{</span>
-<a name="line-468"></a> <span class="k">return</span> <span class="n">CollectionsPage</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="k">if</span> <span class="p">(</span><span class="n">cur</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_albumView</span><span class="p">)</span>
-<a name="line-472"></a> <span class="p">{</span>
-<a name="line-473"></a> <span class="k">return</span> <span class="n">AlbumViewPage</span><span class="p">;</span>
-<a name="line-474"></a> <span class="p">}</span>
-<a name="line-475"></a>
-<a name="line-476"></a> <span class="k">if</span> <span class="p">(</span><span class="n">cur</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_tooltip</span><span class="p">)</span>
-<a name="line-477"></a> <span class="p">{</span>
-<a name="line-478"></a> <span class="k">return</span> <span class="n">ToolTipPage</span><span class="p">;</span>
-<a name="line-479"></a> <span class="p">}</span>
-<a name="line-480"></a>
-<a name="line-481"></a> <span class="k">if</span> <span class="p">(</span><span class="n">cur</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_metadata</span><span class="p">)</span>
-<a name="line-482"></a> <span class="p">{</span>
-<a name="line-483"></a> <span class="k">return</span> <span class="n">MetadataPage</span><span class="p">;</span>
-<a name="line-484"></a> <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">cur</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_template</span><span class="p">)</span>
-<a name="line-487"></a> <span class="p">{</span>
-<a name="line-488"></a> <span class="k">return</span> <span class="n">TemplatePage</span><span class="p">;</span>
-<a name="line-489"></a> <span class="p">}</span>
-<a name="line-490"></a>
-<a name="line-491"></a> <span class="k">if</span> <span class="p">(</span><span class="n">cur</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_lighttable</span><span class="p">)</span>
-<a name="line-492"></a> <span class="p">{</span>
-<a name="line-493"></a> <span class="k">return</span> <span class="n">LightTablePage</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="k">if</span> <span class="p">(</span><span class="n">cur</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_editor</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">EditorPage</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">if</span> <span class="p">(</span><span class="n">cur</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_slideshow</span><span class="p">)</span>
-<a name="line-502"></a> <span class="p">{</span>
-<a name="line-503"></a> <span class="k">return</span> <span class="n">SlideshowPage</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="k">if</span> <span class="p">(</span><span class="n">cur</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_imagequalitysorter</span><span class="p">)</span>
-<a name="line-507"></a> <span class="p">{</span>
-<a name="line-508"></a> <span class="k">return</span> <span class="n">ImageQualityPage</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="k">if</span> <span class="p">(</span><span class="n">cur</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_icc</span><span class="p">)</span>
-<a name="line-512"></a> <span class="p">{</span>
-<a name="line-513"></a> <span class="k">return</span> <span class="n">ICCPage</span><span class="p">;</span>
-<a name="line-514"></a> <span class="p">}</span>
-<a name="line-515"></a>
-<a name="line-516"></a> <span class="k">if</span> <span class="p">(</span><span class="n">cur</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_camera</span><span class="p">)</span>
-<a name="line-517"></a> <span class="p">{</span>
-<a name="line-518"></a> <span class="k">return</span> <span class="n">CameraPage</span><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="n">cur</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_plugins</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">PluginsPage</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="k">if</span> <span class="p">(</span><span class="n">cur</span> <span class="o">==</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">page_misc</span><span class="p">)</span>
-<a name="line-527"></a> <span class="p">{</span>
-<a name="line-528"></a> <span class="k">return</span> <span class="n">MiscellaneousPage</span><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="k">return</span> <span class="n">DatabasePage</span><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="n">DConfigDlgWdgItem</span><span class="o">*</span> <span class="n">Setup</span><span class="o">::</span><span class="n">Private</span><span class="o">::</span><span class="n">pageItem</span><span class="p">(</span><span class="n">Setup</span><span class="o">::</span><span class="n">Page</span> <span class="n">page</span><span class="p">)</span> <span class="k">const</span>
-<a name="line-535"></a><span class="p">{</span>
-<a name="line-536"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">page</span><span class="p">)</span>
-<a name="line-537"></a> <span class="p">{</span>
-<a name="line-538"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">DatabasePage</span><span class="p">:</span>
-<a name="line-539"></a> <span class="k">return</span> <span class="n">page_database</span><span class="p">;</span>
-<a name="line-540"></a>
-<a name="line-541"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">CollectionsPage</span><span class="p">:</span>
-<a name="line-542"></a> <span class="k">return</span> <span class="n">page_collections</span><span class="p">;</span>
-<a name="line-543"></a>
-<a name="line-544"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">AlbumViewPage</span><span class="p">:</span>
-<a name="line-545"></a> <span class="k">return</span> <span class="n">page_albumView</span><span class="p">;</span>
-<a name="line-546"></a>
-<a name="line-547"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">ToolTipPage</span><span class="p">:</span>
-<a name="line-548"></a> <span class="k">return</span> <span class="n">page_tooltip</span><span class="p">;</span>
-<a name="line-549"></a>
-<a name="line-550"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">MetadataPage</span><span class="p">:</span>
-<a name="line-551"></a> <span class="k">return</span> <span class="n">page_metadata</span><span class="p">;</span>
-<a name="line-552"></a>
-<a name="line-553"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">TemplatePage</span><span class="p">:</span>
-<a name="line-554"></a> <span class="k">return</span> <span class="n">page_template</span><span class="p">;</span>
-<a name="line-555"></a>
-<a name="line-556"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">LightTablePage</span><span class="p">:</span>
-<a name="line-557"></a> <span class="k">return</span> <span class="n">page_lighttable</span><span class="p">;</span>
-<a name="line-558"></a>
-<a name="line-559"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">EditorPage</span><span class="p">:</span>
-<a name="line-560"></a> <span class="k">return</span> <span class="n">page_editor</span><span class="p">;</span>
-<a name="line-561"></a>
-<a name="line-562"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">SlideshowPage</span><span class="p">:</span>
-<a name="line-563"></a> <span class="k">return</span> <span class="n">page_slideshow</span><span class="p">;</span>
-<a name="line-564"></a>
-<a name="line-565"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">ImageQualityPage</span><span class="p">:</span>
-<a name="line-566"></a> <span class="k">return</span> <span class="n">page_imagequalitysorter</span><span class="p">;</span>
-<a name="line-567"></a>
-<a name="line-568"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">ICCPage</span><span class="p">:</span>
-<a name="line-569"></a> <span class="k">return</span> <span class="n">page_icc</span><span class="p">;</span>
-<a name="line-570"></a>
-<a name="line-571"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">CameraPage</span><span class="p">:</span>
-<a name="line-572"></a> <span class="k">return</span> <span class="n">page_camera</span><span class="p">;</span>
-<a name="line-573"></a>
-<a name="line-574"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">PluginsPage</span><span class="p">:</span>
-<a name="line-575"></a> <span class="k">return</span> <span class="n">page_plugins</span><span class="p">;</span>
-<a name="line-576"></a>
-<a name="line-577"></a> <span class="k">case</span> <span class="n">Setup</span><span class="o">::</span><span class="nl">MiscellaneousPage</span><span class="p">:</span>
-<a name="line-578"></a> <span class="k">return</span> <span class="n">page_misc</span><span class="p">;</span>
-<a name="line-579"></a>
-<a name="line-580"></a> <span class="k">default</span><span class="o">:</span>
-<a name="line-581"></a> <span class="k">return</span> <span class="k">nullptr</span><span class="p">;</span>
-<a name="line-582"></a> <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="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/7.html b/static/reports/cppcheck/master/7.html
index 14a717a75..bce559d6b 100644
--- a/static/reports/cppcheck/master/7.html
+++ b/static/reports/cppcheck/master/7.html
@@ -1,763 +1,763 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/tools/printcreator/manager/advprintphoto.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/generic/tools/printcreator/manager/advprintphoto.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> advprintphoto.cpp</p>
<a href='7.html#line-54'> useInitializationList 54</a><a href='7.html#line-57'> useInitializationList 57</a><a href='7.html#line-58'> useInitializationList 58</a><a href='7.html#line-109'> useInitializationList 109</a><a href='7.html#line-110'> useInitializationList 110</a><a href='7.html#line-112'> useInitializationList 112</a><a href='7.html#line-126'> useInitializationList 126</a><a href='7.html#line-141'> useInitializationList 141</a><a href='7.html#line-142'> useInitializationList 142</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</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 : 2002-12-09</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) 2002-2003 by Todd Shoemaker &lt;todd at theshoemakers dot net&gt;</span>
<a name="line-10"></a><span class="cm"> * Copyright (C) 2007-2012 by Angelo Naselli &lt;anaselli at linux dot it&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"> *</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;advprintphoto.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;QFileInfo&gt;</span><span class="cp"></span>
<a name="line-30"></a><span class="cp">#include</span> <span class="cpf">&lt;QPolygon&gt;</span><span class="cp"></span>
<a name="line-31"></a>
<a name="line-32"></a><span class="c1">// KDE includes</span>
<a name="line-33"></a>
<a name="line-34"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&gt;</span><span class="cp"></span>
<a name="line-35"></a>
<a name="line-36"></a><span class="c1">// Local includes</span>
<a name="line-37"></a>
<a name="line-38"></a><span class="cp">#include</span> <span class="cpf">&quot;digikam_debug.h&quot;</span><span class="cp"></span>
<a name="line-39"></a><span class="cp">#include</span> <span class="cpf">&quot;previewloadthread.h&quot;</span><span class="cp"></span>
<a name="line-40"></a><span class="cp">#include</span> <span class="cpf">&quot;advprintwizard.h&quot;</span><span class="cp"></span>
<a name="line-41"></a>
<a name="line-42"></a><span class="k">namespace</span> <span class="n">DigikamGenericPrintCreatorPlugin</span>
<a name="line-43"></a><span class="p">{</span>
<a name="line-44"></a>
<a name="line-45"></a><span class="n">AdvPrintPhotoSize</span><span class="o">::</span><span class="n">AdvPrintPhotoSize</span><span class="p">()</span>
<a name="line-46"></a> <span class="o">:</span> <span class="n">m_label</span><span class="p">(</span><span class="n">i18n</span><span class="p">(</span><span class="s">&quot;Unsupported Paper Size&quot;</span><span class="p">)),</span>
<a name="line-47"></a> <span class="n">m_dpi</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
<a name="line-48"></a> <span class="n">m_autoRotate</span><span class="p">(</span><span class="nb">false</span><span class="p">)</span>
<a name="line-49"></a><span class="p">{</span>
<a name="line-50"></a><span class="p">}</span>
<a name="line-51"></a>
<a name="line-52"></a><span class="n">AdvPrintPhotoSize</span><span class="o">::</span><span class="n">AdvPrintPhotoSize</span><span class="p">(</span><span class="k">const</span> <span class="n">AdvPrintPhotoSize</span><span class="o">&amp;</span> <span class="n">other</span><span class="p">)</span>
<a name="line-53"></a><span class="p">{</span>
<a name="line-54"></a><span class="hll"> <span class="n">m_label</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_label</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'm_label' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;m_label&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-55"></a> <span class="n">m_dpi</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_dpi</span><span class="p">;</span>
<a name="line-56"></a> <span class="n">m_autoRotate</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_autoRotate</span><span class="p">;</span>
<a name="line-57"></a><span class="hll"> <span class="n">m_layouts</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_layouts</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'm_layouts' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;m_layouts&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-58"></a><span class="hll"> <span class="n">m_icon</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_icon</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'm_icon' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;m_icon&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-59"></a><span class="p">}</span>
<a name="line-60"></a>
<a name="line-61"></a><span class="n">AdvPrintPhotoSize</span><span class="o">::~</span><span class="n">AdvPrintPhotoSize</span><span class="p">()</span>
<a name="line-62"></a><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="c1">// -----------------------------</span>
<a name="line-66"></a>
<a name="line-67"></a><span class="n">AdvPrintAdditionalInfo</span><span class="o">::</span><span class="n">AdvPrintAdditionalInfo</span><span class="p">()</span>
<a name="line-68"></a> <span class="o">:</span> <span class="n">m_unit</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
<a name="line-69"></a> <span class="n">m_printPosition</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
<a name="line-70"></a> <span class="n">m_scaleMode</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
<a name="line-71"></a> <span class="n">m_keepRatio</span><span class="p">(</span><span class="nb">true</span><span class="p">),</span>
<a name="line-72"></a> <span class="n">m_autoRotate</span><span class="p">(</span><span class="nb">true</span><span class="p">),</span>
<a name="line-73"></a> <span class="n">m_printWidth</span><span class="p">(</span><span class="mf">0.0</span><span class="p">),</span>
<a name="line-74"></a> <span class="n">m_printHeight</span><span class="p">(</span><span class="mf">0.0</span><span class="p">),</span>
<a name="line-75"></a> <span class="n">m_enlargeSmallerImages</span><span class="p">(</span><span class="nb">false</span><span class="p">)</span>
<a name="line-76"></a><span class="p">{</span>
<a name="line-77"></a><span class="p">}</span>
<a name="line-78"></a>
<a name="line-79"></a><span class="n">AdvPrintAdditionalInfo</span><span class="o">::</span><span class="n">AdvPrintAdditionalInfo</span><span class="p">(</span><span class="k">const</span> <span class="n">AdvPrintAdditionalInfo</span><span class="o">&amp;</span> <span class="n">other</span><span class="p">)</span>
<a name="line-80"></a><span class="p">{</span>
<a name="line-81"></a> <span class="n">m_unit</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_unit</span><span class="p">;</span>
<a name="line-82"></a> <span class="n">m_printPosition</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_printPosition</span><span class="p">;</span>
<a name="line-83"></a> <span class="n">m_scaleMode</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_scaleMode</span><span class="p">;</span>
<a name="line-84"></a> <span class="n">m_keepRatio</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_keepRatio</span><span class="p">;</span>
<a name="line-85"></a> <span class="n">m_autoRotate</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_autoRotate</span><span class="p">;</span>
<a name="line-86"></a> <span class="n">m_printWidth</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_printWidth</span><span class="p">;</span>
<a name="line-87"></a> <span class="n">m_printHeight</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_printHeight</span><span class="p">;</span>
<a name="line-88"></a> <span class="n">m_enlargeSmallerImages</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_enlargeSmallerImages</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">AdvPrintAdditionalInfo</span><span class="o">::~</span><span class="n">AdvPrintAdditionalInfo</span><span class="p">()</span>
<a name="line-92"></a><span class="p">{</span>
<a name="line-93"></a><span class="p">}</span>
<a name="line-94"></a>
<a name="line-95"></a><span class="c1">// -----------------------------</span>
<a name="line-96"></a>
<a name="line-97"></a><span class="n">AdvPrintCaptionInfo</span><span class="o">::</span><span class="n">AdvPrintCaptionInfo</span><span class="p">()</span>
<a name="line-98"></a> <span class="o">:</span> <span class="n">m_captionType</span><span class="p">(</span><span class="n">AdvPrintSettings</span><span class="o">::</span><span class="n">NONE</span><span class="p">),</span>
<a name="line-99"></a> <span class="n">m_captionFont</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Sans Serif&quot;</span><span class="p">)),</span>
<a name="line-100"></a> <span class="n">m_captionColor</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-101"></a> <span class="n">m_captionSize</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span>
<a name="line-102"></a> <span class="n">m_captionText</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-103"></a><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="n">AdvPrintCaptionInfo</span><span class="o">::</span><span class="n">AdvPrintCaptionInfo</span><span class="p">(</span><span class="k">const</span> <span class="n">AdvPrintCaptionInfo</span><span class="o">&amp;</span> <span class="n">other</span><span class="p">)</span>
<a name="line-107"></a><span class="p">{</span>
<a name="line-108"></a> <span class="n">m_captionType</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_captionType</span><span class="p">;</span>
<a name="line-109"></a><span class="hll"> <span class="n">m_captionFont</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_captionFont</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'm_captionFont' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;m_captionFont&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-110"></a><span class="hll"> <span class="n">m_captionColor</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_captionColor</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'm_captionColor' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;m_captionColor&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-111"></a> <span class="n">m_captionSize</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_captionSize</span><span class="p">;</span>
<a name="line-112"></a><span class="hll"> <span class="n">m_captionText</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_captionText</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'm_captionText' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;m_captionText&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-113"></a><span class="p">}</span>
<a name="line-114"></a>
<a name="line-115"></a><span class="n">AdvPrintCaptionInfo</span><span class="o">::~</span><span class="n">AdvPrintCaptionInfo</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="c1">// -----------------------------</span>
<a name="line-120"></a>
<a name="line-121"></a><span class="n">AdvPrintPhoto</span><span class="o">::</span><span class="n">AdvPrintPhoto</span><span class="p">(</span><span class="kt">int</span> <span class="n">thumbnailSize</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-122"></a> <span class="o">:</span> <span class="n">m_pAddInfo</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-123"></a> <span class="n">m_pAdvPrintCaptionInfo</span><span class="p">(</span><span class="k">nullptr</span><span class="p">)</span>
<a name="line-124"></a><span class="p">{</span>
<a name="line-125"></a> <span class="n">m_size</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-126"></a><span class="hll"> <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><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'm_cropRegion' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;m_cropRegion&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-127"></a> <span class="n">m_rotation</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-128"></a> <span class="n">m_first</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-129"></a> <span class="n">m_copies</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<a name="line-130"></a> <span class="n">m_url</span> <span class="o">=</span> <span class="n">QUrl</span><span class="p">();</span>
<a name="line-131"></a> <span class="n">m_iface</span> <span class="o">=</span> <span class="n">iface</span><span class="p">;</span>
<a name="line-132"></a> <span class="n">m_thumbnail</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-133"></a> <span class="n">m_thumbnailSize</span> <span class="o">=</span> <span class="n">thumbnailSize</span><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="n">AdvPrintPhoto</span><span class="o">::</span><span class="n">AdvPrintPhoto</span><span class="p">(</span><span class="k">const</span> <span class="n">AdvPrintPhoto</span><span class="o">&amp;</span> <span class="n">other</span><span class="p">)</span>
<a name="line-137"></a> <span class="o">:</span> <span class="n">m_pAddInfo</span><span class="p">(</span><span class="k">nullptr</span><span class="p">),</span>
<a name="line-138"></a> <span class="n">m_pAdvPrintCaptionInfo</span><span class="p">(</span><span class="k">nullptr</span><span class="p">)</span>
<a name="line-139"></a><span class="p">{</span>
<a name="line-140"></a> <span class="n">m_thumbnailSize</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_thumbnailSize</span><span class="p">;</span>
<a name="line-141"></a><span class="hll"> <span class="n">m_cropRegion</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_cropRegion</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'm_cropRegion' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;m_cropRegion&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-142"></a><span class="hll"> <span class="n">m_url</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_url</span><span class="p">;</span><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'm_url' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;m_url&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-143"></a> <span class="n">m_first</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_first</span><span class="p">;</span>
<a name="line-144"></a> <span class="n">m_copies</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_copies</span><span class="p">;</span>
<a name="line-145"></a> <span class="n">m_rotation</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_rotation</span><span class="p">;</span>
<a name="line-146"></a>
<a name="line-147"></a> <span class="k">if</span> <span class="p">(</span><span class="n">other</span><span class="p">.</span><span class="n">m_pAddInfo</span><span class="p">)</span>
<a name="line-148"></a> <span class="p">{</span>
<a name="line-149"></a> <span class="n">m_pAddInfo</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AdvPrintAdditionalInfo</span><span class="p">(</span><span class="o">*</span><span class="n">other</span><span class="p">.</span><span class="n">m_pAddInfo</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">if</span> <span class="p">(</span><span class="n">other</span><span class="p">.</span><span class="n">m_pAdvPrintCaptionInfo</span><span class="p">)</span>
<a name="line-153"></a> <span class="p">{</span>
<a name="line-154"></a> <span class="n">m_pAdvPrintCaptionInfo</span> <span class="o">=</span> <span class="k">new</span> <span class="n">AdvPrintCaptionInfo</span><span class="p">(</span><span class="o">*</span><span class="n">other</span><span class="p">.</span><span class="n">m_pAdvPrintCaptionInfo</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="n">m_size</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-158"></a> <span class="n">m_thumbnail</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-159"></a> <span class="n">m_iface</span> <span class="o">=</span> <span class="n">other</span><span class="p">.</span><span class="n">m_iface</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">AdvPrintPhoto</span><span class="o">::~</span><span class="n">AdvPrintPhoto</span><span class="p">()</span>
<a name="line-163"></a><span class="p">{</span>
<a name="line-164"></a> <span class="k">delete</span> <span class="n">m_thumbnail</span><span class="p">;</span>
<a name="line-165"></a> <span class="k">delete</span> <span class="n">m_size</span><span class="p">;</span>
<a name="line-166"></a> <span class="k">delete</span> <span class="n">m_pAddInfo</span><span class="p">;</span>
<a name="line-167"></a> <span class="k">delete</span> <span class="n">m_pAdvPrintCaptionInfo</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="kt">void</span> <span class="n">AdvPrintPhoto</span><span class="o">::</span><span class="n">loadInCache</span><span class="p">()</span>
<a name="line-171"></a><span class="p">{</span>
<a name="line-172"></a> <span class="c1">// Load the thumbnail and size only once.</span>
<a name="line-173"></a>
<a name="line-174"></a> <span class="k">delete</span> <span class="n">m_thumbnail</span><span class="p">;</span>
<a name="line-175"></a> <span class="n">DImg</span> <span class="n">photo</span> <span class="o">=</span> <span class="n">loadPhoto</span><span class="p">();</span>
<a name="line-176"></a> <span class="n">m_thumbnail</span> <span class="o">=</span> <span class="k">new</span> <span class="n">DImg</span><span class="p">(</span><span class="n">photo</span><span class="p">.</span><span class="n">smoothScale</span><span class="p">(</span><span class="n">m_thumbnailSize</span><span class="p">,</span> <span class="n">m_thumbnailSize</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-177"></a>
<a name="line-178"></a> <span class="k">delete</span> <span class="n">m_size</span><span class="p">;</span>
<a name="line-179"></a> <span class="n">m_size</span> <span class="o">=</span> <span class="k">new</span> <span class="n">QSize</span><span class="p">(</span><span class="n">photo</span><span class="p">.</span><span class="n">width</span><span class="p">(),</span> <span class="n">photo</span><span class="p">.</span><span class="n">height</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">DImg</span><span class="o">&amp;</span> <span class="n">AdvPrintPhoto</span><span class="o">::</span><span class="n">thumbnail</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="o">!</span><span class="n">m_thumbnail</span><span class="p">)</span>
<a name="line-185"></a> <span class="p">{</span>
<a name="line-186"></a> <span class="n">loadInCache</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="o">*</span><span class="n">m_thumbnail</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="n">DImg</span> <span class="n">AdvPrintPhoto</span><span class="o">::</span><span class="n">loadPhoto</span><span class="p">()</span>
<a name="line-193"></a><span class="p">{</span>
<a name="line-194"></a> <span class="k">return</span> <span class="n">PreviewLoadThread</span><span class="o">::</span><span class="n">loadHighQualitySynchronously</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-195"></a><span class="p">}</span>
<a name="line-196"></a>
<a name="line-197"></a><span class="n">QSize</span><span class="o">&amp;</span> <span class="n">AdvPrintPhoto</span><span class="o">::</span><span class="n">size</span><span class="p">()</span>
<a name="line-198"></a><span class="p">{</span>
<a name="line-199"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_size</span> <span class="o">==</span> <span class="k">nullptr</span><span class="p">)</span>
<a name="line-200"></a> <span class="p">{</span>
<a name="line-201"></a> <span class="n">loadInCache</span><span class="p">();</span>
<a name="line-202"></a> <span class="p">}</span>
<a name="line-203"></a>
<a name="line-204"></a> <span class="k">return</span> <span class="o">*</span><span class="n">m_size</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="kt">int</span> <span class="n">AdvPrintPhoto</span><span class="o">::</span><span class="n">width</span><span class="p">()</span>
<a name="line-208"></a><span class="p">{</span>
<a name="line-209"></a> <span class="k">return</span> <span class="n">size</span><span class="p">().</span><span class="n">width</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="kt">int</span> <span class="n">AdvPrintPhoto</span><span class="o">::</span><span class="n">height</span><span class="p">()</span>
<a name="line-213"></a><span class="p">{</span>
<a name="line-214"></a> <span class="k">return</span> <span class="n">size</span><span class="p">().</span><span class="n">height</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">double</span> <span class="n">AdvPrintPhoto</span><span class="o">::</span><span class="n">scaleWidth</span><span class="p">(</span><span class="kt">double</span> <span class="n">unitToInches</span><span class="p">)</span>
<a name="line-218"></a><span class="p">{</span>
<a name="line-219"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">m_pAddInfo</span> <span class="o">!=</span> <span class="k">nullptr</span><span class="p">);</span>
<a name="line-220"></a>
<a name="line-221"></a> <span class="n">m_cropRegion</span> <span class="o">=</span> <span class="n">QRect</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-222"></a> <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">m_pAddInfo</span><span class="o">-&gt;</span><span class="n">m_printWidth</span> <span class="o">*</span> <span class="n">unitToInches</span><span class="p">),</span>
<a name="line-223"></a> <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">m_pAddInfo</span><span class="o">-&gt;</span><span class="n">m_printHeight</span> <span class="o">*</span> <span class="n">unitToInches</span><span class="p">));</span>
<a name="line-224"></a>
<a name="line-225"></a> <span class="k">return</span> <span class="n">m_pAddInfo</span><span class="o">-&gt;</span><span class="n">m_printWidth</span> <span class="o">*</span> <span class="n">unitToInches</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">double</span> <span class="n">AdvPrintPhoto</span><span class="o">::</span><span class="n">scaleHeight</span><span class="p">(</span><span class="kt">double</span> <span class="n">unitToInches</span><span class="p">)</span>
<a name="line-229"></a><span class="p">{</span>
<a name="line-230"></a> <span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">m_pAddInfo</span> <span class="o">!=</span> <span class="k">nullptr</span><span class="p">);</span>
<a name="line-231"></a>
<a name="line-232"></a> <span class="n">m_cropRegion</span> <span class="o">=</span> <span class="n">QRect</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-233"></a> <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">m_pAddInfo</span><span class="o">-&gt;</span><span class="n">m_printWidth</span> <span class="o">*</span> <span class="n">unitToInches</span><span class="p">),</span>
<a name="line-234"></a> <span class="p">(</span><span class="kt">int</span><span class="p">)(</span><span class="n">m_pAddInfo</span><span class="o">-&gt;</span><span class="n">m_printHeight</span> <span class="o">*</span> <span class="n">unitToInches</span><span class="p">));</span>
<a name="line-235"></a>
<a name="line-236"></a> <span class="k">return</span> <span class="n">m_pAddInfo</span><span class="o">-&gt;</span><span class="n">m_printHeight</span> <span class="o">*</span> <span class="n">unitToInches</span><span class="p">;</span>
<a name="line-237"></a><span class="p">}</span>
<a name="line-238"></a>
<a name="line-239"></a><span class="n">QMatrix</span> <span class="n">AdvPrintPhoto</span><span class="o">::</span><span class="n">updateCropRegion</span><span class="p">(</span><span class="kt">int</span> <span class="n">woutlay</span><span class="p">,</span> <span class="kt">int</span> <span class="n">houtlay</span><span class="p">,</span> <span class="kt">bool</span> <span class="n">autoRotate</span><span class="p">)</span>
<a name="line-240"></a><span class="p">{</span>
<a name="line-241"></a> <span class="n">QSize</span> <span class="n">thmSize</span> <span class="o">=</span> <span class="n">thumbnail</span><span class="p">().</span><span class="n">size</span><span class="p">();</span>
<a name="line-242"></a> <span class="n">QRect</span> <span class="n">imgRect</span> <span class="o">=</span> <span class="n">QRect</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">size</span><span class="p">().</span><span class="n">width</span><span class="p">(),</span> <span class="n">size</span><span class="p">().</span><span class="n">height</span><span class="p">());</span>
<a name="line-243"></a> <span class="kt">bool</span> <span class="n">resetCropRegion</span> <span class="o">=</span> <span class="p">(</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-244"></a>
<a name="line-245"></a> <span class="k">if</span> <span class="p">(</span><span class="n">resetCropRegion</span><span class="p">)</span>
<a name="line-246"></a> <span class="p">{</span>
<a name="line-247"></a> <span class="c1">// First, let&#39;s see if we should rotate</span>
<a name="line-248"></a>
<a name="line-249"></a> <span class="k">if</span> <span class="p">(</span><span class="n">autoRotate</span><span class="p">)</span>
<a name="line-250"></a> <span class="p">{</span>
<a name="line-251"></a> <span class="k">if</span> <span class="p">((</span><span class="n">m_rotation</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="o">&amp;&amp;</span>
<a name="line-252"></a> <span class="p">((</span><span class="n">woutlay</span> <span class="o">&gt;</span> <span class="n">houtlay</span> <span class="o">&amp;&amp;</span> <span class="n">thmSize</span><span class="p">.</span><span class="n">height</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">thmSize</span><span class="p">.</span><span class="n">width</span><span class="p">())</span> <span class="o">||</span>
<a name="line-253"></a> <span class="p">(</span><span class="n">houtlay</span> <span class="o">&gt;</span> <span class="n">woutlay</span> <span class="o">&amp;&amp;</span> <span class="n">thmSize</span><span class="p">.</span><span class="n">width</span><span class="p">()</span> <span class="o">&gt;</span> <span class="n">thmSize</span><span class="p">.</span><span class="n">height</span><span class="p">())))</span>
<a name="line-254"></a> <span class="p">{</span>
<a name="line-255"></a> <span class="c1">// We will perform a rotation</span>
<a name="line-256"></a> <span class="n">m_rotation</span> <span class="o">=</span> <span class="mi">90</span><span class="p">;</span>
<a name="line-257"></a> <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> <span class="k">else</span>
<a name="line-261"></a> <span class="p">{</span>
<a name="line-262"></a> <span class="c1">// Does the crop region need updating (but the image shouldn&#39;t be rotated)?</span>
<a name="line-263"></a> <span class="n">resetCropRegion</span> <span class="o">=</span> <span class="p">(</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">2</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> <span class="o">-</span><span class="mi">2</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="c1">// Rotate the image rectangle.</span>
<a name="line-267"></a>
<a name="line-268"></a> <span class="n">QMatrix</span> <span class="n">matrix</span><span class="p">;</span>
<a name="line-269"></a> <span class="n">matrix</span><span class="p">.</span><span class="n">rotate</span><span class="p">(</span><span class="n">m_rotation</span><span class="p">);</span>
<a name="line-270"></a> <span class="n">imgRect</span> <span class="o">=</span> <span class="n">matrix</span><span class="p">.</span><span class="n">mapToPolygon</span><span class="p">(</span><span class="n">imgRect</span><span class="p">).</span><span class="n">boundingRect</span><span class="p">();</span>
<a name="line-271"></a> <span class="n">imgRect</span><span class="p">.</span><span class="n">translate</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">imgRect</span><span class="p">.</span><span class="n">x</span><span class="p">(),</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">imgRect</span><span class="p">.</span><span class="n">y</span><span class="p">());</span>
<a name="line-272"></a>
<a name="line-273"></a> <span class="c1">// Size the rectangle based on the minimum image dimension.</span>
<a name="line-274"></a>
<a name="line-275"></a> <span class="kt">int</span> <span class="n">w</span> <span class="o">=</span> <span class="n">imgRect</span><span class="p">.</span><span class="n">width</span><span class="p">();</span>
<a name="line-276"></a> <span class="kt">int</span> <span class="n">h</span> <span class="o">=</span> <span class="n">imgRect</span><span class="p">.</span><span class="n">height</span><span class="p">();</span>
<a name="line-277"></a>
<a name="line-278"></a> <span class="k">if</span> <span class="p">(</span><span class="n">w</span> <span class="o">&lt;</span> <span class="n">h</span><span class="p">)</span>
<a name="line-279"></a> <span class="p">{</span>
<a name="line-280"></a> <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">w</span> <span class="o">*</span> <span class="p">((</span><span class="kt">double</span><span class="p">)</span><span class="n">houtlay</span> <span class="o">/</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">woutlay</span><span class="p">));</span>
<a name="line-281"></a>
<a name="line-282"></a> <span class="k">if</span> <span class="p">(</span><span class="n">h</span> <span class="o">&gt;</span> <span class="n">imgRect</span><span class="p">.</span><span class="n">height</span><span class="p">())</span>
<a name="line-283"></a> <span class="p">{</span>
<a name="line-284"></a> <span class="n">h</span> <span class="o">=</span> <span class="n">imgRect</span><span class="p">.</span><span class="n">height</span><span class="p">();</span>
<a name="line-285"></a> <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">h</span> <span class="o">*</span> <span class="p">((</span><span class="kt">double</span><span class="p">)</span><span class="n">woutlay</span> <span class="o">/</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">houtlay</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="k">else</span>
<a name="line-289"></a> <span class="p">{</span>
<a name="line-290"></a> <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">h</span> <span class="o">*</span> <span class="p">((</span><span class="kt">double</span><span class="p">)</span><span class="n">woutlay</span> <span class="o">/</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">houtlay</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">w</span> <span class="o">&gt;</span> <span class="n">imgRect</span><span class="p">.</span><span class="n">width</span><span class="p">())</span>
<a name="line-293"></a> <span class="p">{</span>
<a name="line-294"></a> <span class="n">w</span> <span class="o">=</span> <span class="n">imgRect</span><span class="p">.</span><span class="n">width</span><span class="p">();</span>
<a name="line-295"></a> <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">w</span> <span class="o">*</span> <span class="p">((</span><span class="kt">double</span><span class="p">)</span><span class="n">houtlay</span> <span class="o">/</span> <span class="p">(</span><span class="kt">double</span><span class="p">)</span><span class="n">woutlay</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="k">if</span> <span class="p">(</span><span class="n">resetCropRegion</span><span class="p">)</span>
<a name="line-300"></a> <span class="p">{</span>
<a name="line-301"></a> <span class="n">m_cropRegion</span> <span class="o">=</span> <span class="n">QRect</span><span class="p">((</span><span class="n">imgRect</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="o">-</span> <span class="p">(</span><span class="n">w</span> <span class="o">/</span> <span class="mi">2</span><span class="p">),</span>
<a name="line-302"></a> <span class="p">(</span><span class="n">imgRect</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> <span class="o">-</span> <span class="p">(</span><span class="n">h</span> <span class="o">/</span> <span class="mi">2</span><span class="p">),</span>
<a name="line-303"></a> <span class="n">w</span><span class="p">,</span> <span class="n">h</span><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="k">return</span> <span class="n">matrix</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="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/8.html b/static/reports/cppcheck/master/8.html
index 7724e233e..5e061fad2 100644
--- a/static/reports/cppcheck/master/8.html
+++ b/static/reports/cppcheck/master/8.html
@@ -1,535 +1,535 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/tools/printcreator/manager/advprintsettings.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/generic/tools/printcreator/manager/advprintsettings.cpp </h1>
</div>
<div id="menu" dir="rtl">
<p id="filename"><a href="index.html">Defects:</a> advprintsettings.cpp</p>
<a href='8.html#line-43'> useInitializationList 43</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</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) 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;advprintsettings.h&quot;</span><span class="cp"></span>
<a name="line-24"></a>
<a name="line-25"></a><span class="c1">// KDE includes</span>
<a name="line-26"></a>
<a name="line-27"></a><span class="cp">#include</span> <span class="cpf">&lt;kconfig.h&gt;</span><span class="cp"></span>
<a name="line-28"></a><span class="cp">#include</span> <span class="cpf">&lt;kconfiggroup.h&gt;</span><span class="cp"></span>
<a name="line-29"></a><span class="cp">#include</span> <span class="cpf">&lt;klocalizedstring.h&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;advprintphoto.h&quot;</span><span class="cp"></span>
<a name="line-34"></a>
<a name="line-35"></a><span class="k">namespace</span> <span class="n">DigikamGenericPrintCreatorPlugin</span>
<a name="line-36"></a><span class="p">{</span>
<a name="line-37"></a>
<a name="line-38"></a><span class="n">AdvPrintSettings</span><span class="o">::</span><span class="n">AdvPrintSettings</span><span class="p">()</span>
<a name="line-39"></a><span class="p">{</span>
<a name="line-40"></a> <span class="n">selMode</span> <span class="o">=</span> <span class="n">IMAGES</span><span class="p">;</span>
<a name="line-41"></a>
<a name="line-42"></a> <span class="c1">// Select a different page to force a refresh in initPhotoSizes.</span>
<a name="line-43"></a><span class="hll"> <span class="n">pageSize</span> <span class="o">=</span> <span class="n">QSizeF</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><div class='verbose expandable'><span class='error2'>&lt;--- Variable 'pageSize' is assigned in constructor body. Consider performing initialization in initialization list. <span class='marker'>[+]</span></span><div class='content'>When an object of a class is created, the constructors of all member variables are called consecutively in the order the variables are declared, even if you don&apos;t explicitly write them to the initialization list. You could avoid assigning &apos;pageSize&apos; a value by passing the value to the constructor in the initialization list.</div></div>
</span><a name="line-44"></a>
<a name="line-45"></a> <span class="n">currentPreviewPage</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-46"></a> <span class="n">currentCropPhoto</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
<a name="line-47"></a> <span class="n">disableCrop</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
<a name="line-48"></a> <span class="n">imageFormat</span> <span class="o">=</span> <span class="n">JPEG</span><span class="p">;</span>
<a name="line-49"></a> <span class="n">printerName</span> <span class="o">=</span> <span class="n">outputName</span><span class="p">(</span><span class="n">PDF</span><span class="p">);</span>
<a name="line-50"></a> <span class="n">captionType</span> <span class="o">=</span> <span class="n">NONE</span><span class="p">;</span>
<a name="line-51"></a> <span class="n">captionColor</span> <span class="o">=</span> <span class="n">QColor</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-52"></a> <span class="n">captionFont</span> <span class="o">=</span> <span class="n">QFont</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Sans Serif&quot;</span><span class="p">));</span>
<a name="line-53"></a> <span class="n">captionSize</span> <span class="o">=</span> <span class="mi">4</span><span class="p">;</span>
<a name="line-54"></a> <span class="n">outputLayouts</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-55"></a> <span class="n">outputPrinter</span> <span class="o">=</span> <span class="k">nullptr</span><span class="p">;</span>
<a name="line-56"></a> <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-57"></a> <span class="n">openInFileBrowser</span> <span class="o">=</span> <span class="nb">true</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="n">AdvPrintSettings</span><span class="o">::~</span><span class="n">AdvPrintSettings</span><span class="p">()</span>
<a name="line-61"></a><span class="p">{</span>
<a name="line-62"></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">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-63"></a> <span class="p">{</span>
<a name="line-64"></a> <span class="k">delete</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-65"></a> <span class="p">}</span>
<a name="line-66"></a>
<a name="line-67"></a> <span class="n">photos</span><span class="p">.</span><span class="n">clear</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="kt">void</span> <span class="n">AdvPrintSettings</span><span class="o">::</span><span class="n">readSettings</span><span class="p">(</span><span class="n">KConfigGroup</span><span class="o">&amp;</span> <span class="n">group</span><span class="p">)</span>
<a name="line-71"></a><span class="p">{</span>
<a name="line-72"></a> <span class="n">selMode</span> <span class="o">=</span> <span class="p">(</span><span class="n">Selection</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;SelMode&quot;</span><span class="p">,</span>
<a name="line-73"></a> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">IMAGES</span><span class="p">);</span>
<a name="line-74"></a> <span class="n">imageFormat</span> <span class="o">=</span> <span class="p">(</span><span class="n">ImageFormat</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;ImageFormat&quot;</span><span class="p">,</span>
<a name="line-75"></a> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">JPEG</span><span class="p">);</span>
<a name="line-76"></a> <span class="n">savedPhotoSize</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;PhotoSize&quot;</span><span class="p">,</span>
<a name="line-77"></a> <span class="n">QString</span><span class="p">());</span>
<a name="line-78"></a> <span class="n">printerName</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;Printer&quot;</span><span class="p">,</span>
<a name="line-79"></a> <span class="n">outputName</span><span class="p">(</span><span class="n">PDF</span><span class="p">));</span>
<a name="line-80"></a> <span class="n">captionType</span> <span class="o">=</span> <span class="p">(</span><span class="n">CaptionType</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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;CaptionType&quot;</span><span class="p">),</span>
<a name="line-81"></a> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">NONE</span><span class="p">);</span>
<a name="line-82"></a> <span class="n">captionColor</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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;CaptionColor&quot;</span><span class="p">),</span>
<a name="line-83"></a> <span class="n">QColor</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-84"></a> <span class="n">captionFont</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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;CaptionFont&quot;</span><span class="p">),</span>
<a name="line-85"></a> <span class="n">QFont</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;Sans Serif&quot;</span><span class="p">)));</span>
<a name="line-86"></a> <span class="n">captionSize</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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;CaptionSize&quot;</span><span class="p">),</span>
<a name="line-87"></a> <span class="mi">4</span><span class="p">);</span>
<a name="line-88"></a> <span class="n">captionTxt</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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;CustomCaption&quot;</span><span class="p">),</span>
<a name="line-89"></a> <span class="n">QString</span><span class="p">());</span>
<a name="line-90"></a> <span class="n">outputDir</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;OutputPath&quot;</span><span class="p">,</span>
<a name="line-91"></a> <span class="n">QUrl</span><span class="o">::</span><span class="n">fromLocalFile</span><span class="p">(</span><span class="n">QStandardPaths</span><span class="o">::</span><span class="n">writableLocation</span>
<a name="line-92"></a> <span class="p">(</span><span class="n">QStandardPaths</span><span class="o">::</span><span class="n">DocumentsLocation</span><span class="p">)));</span>
<a name="line-93"></a> <span class="n">conflictRule</span> <span class="o">=</span> <span class="p">(</span><span class="n">FileSaveConflictBox</span><span class="o">::</span><span class="n">ConflictRule</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;ConflictRule&quot;</span><span class="p">,</span>
<a name="line-94"></a> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">FileSaveConflictBox</span><span class="o">::</span><span class="n">OVERWRITE</span><span class="p">);</span>
<a name="line-95"></a> <span class="n">openInFileBrowser</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;OpenInFileBrowser&quot;</span><span class="p">,</span>
<a name="line-96"></a> <span class="nb">true</span><span class="p">);</span>
<a name="line-97"></a> <span class="n">imageFormat</span> <span class="o">=</span> <span class="p">(</span><span class="n">ImageFormat</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;ImageFormat&quot;</span><span class="p">,</span>
<a name="line-98"></a> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">JPEG</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">AdvPrintSettings</span><span class="o">::</span><span class="n">writeSettings</span><span class="p">(</span><span class="n">KConfigGroup</span><span class="o">&amp;</span> <span class="n">group</span><span class="p">)</span>
<a name="line-102"></a><span class="p">{</span>
<a name="line-103"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;SelMode&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">selMode</span><span class="p">);</span>
<a name="line-104"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;ImageFormat&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">imageFormat</span><span class="p">);</span>
<a name="line-105"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;PhotoSize&quot;</span><span class="p">,</span> <span class="n">savedPhotoSize</span><span class="p">);</span>
<a name="line-106"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;Printer&quot;</span><span class="p">,</span> <span class="n">printerName</span><span class="p">);</span>
<a name="line-107"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;CaptionType&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">captionType</span><span class="p">);</span>
<a name="line-108"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;CaptionColor&quot;</span><span class="p">,</span> <span class="n">captionColor</span><span class="p">);</span>
<a name="line-109"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;CaptionFont&quot;</span><span class="p">,</span> <span class="n">captionFont</span><span class="p">);</span>
<a name="line-110"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;CaptionSize&quot;</span><span class="p">,</span> <span class="n">captionSize</span><span class="p">);</span>
<a name="line-111"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;CustomCaption&quot;</span><span class="p">,</span> <span class="n">captionTxt</span><span class="p">);</span>
<a name="line-112"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;OutputPath&quot;</span><span class="p">,</span> <span class="n">outputDir</span><span class="p">);</span>
<a name="line-113"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;ConflictRule&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">conflictRule</span><span class="p">);</span>
<a name="line-114"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;OpenInFileBrowser&quot;</span><span class="p">,</span> <span class="n">openInFileBrowser</span><span class="p">);</span>
<a name="line-115"></a> <span class="n">group</span><span class="p">.</span><span class="n">writeEntry</span><span class="p">(</span><span class="s">&quot;ImageFormat&quot;</span><span class="p">,</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">imageFormat</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="n">QString</span> <span class="n">AdvPrintSettings</span><span class="o">::</span><span class="n">outputName</span><span class="p">(</span><span class="n">Output</span> <span class="n">out</span><span class="p">)</span> <span class="k">const</span>
<a name="line-119"></a><span class="p">{</span>
<a name="line-120"></a> <span class="n">QMap</span><span class="o">&lt;</span><span class="n">Output</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="n">outputs</span> <span class="o">=</span> <span class="n">outputNames</span><span class="p">();</span>
<a name="line-121"></a>
<a name="line-122"></a> <span class="k">if</span> <span class="p">(</span><span class="n">outputs</span><span class="p">.</span><span class="n">contains</span><span class="p">(</span><span class="n">out</span><span class="p">))</span>
<a name="line-123"></a> <span class="p">{</span>
<a name="line-124"></a> <span class="k">return</span> <span class="n">outputs</span><span class="p">[</span><span class="n">out</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="k">return</span> <span class="n">QString</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="n">QMap</span><span class="o">&lt;</span><span class="n">AdvPrintSettings</span><span class="o">::</span><span class="n">Output</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="n">AdvPrintSettings</span><span class="o">::</span><span class="n">outputNames</span><span class="p">()</span>
<a name="line-131"></a><span class="p">{</span>
<a name="line-132"></a> <span class="n">QMap</span><span class="o">&lt;</span><span class="n">Output</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="n">out</span><span class="p">;</span>
<a name="line-133"></a>
<a name="line-134"></a> <span class="n">out</span><span class="p">[</span><span class="n">PDF</span><span class="p">]</span> <span class="o">=</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;Output: PDF&quot;</span><span class="p">,</span> <span class="s">&quot;Print to PDF&quot;</span><span class="p">);</span>
<a name="line-135"></a> <span class="n">out</span><span class="p">[</span><span class="n">FILES</span><span class="p">]</span> <span class="o">=</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;Output: FILE&quot;</span><span class="p">,</span> <span class="s">&quot;Print to Image File&quot;</span><span class="p">);</span>
<a name="line-136"></a> <span class="n">out</span><span class="p">[</span><span class="n">GIMP</span><span class="p">]</span> <span class="o">=</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;Output: GIMP&quot;</span><span class="p">,</span> <span class="s">&quot;Print with Gimp&quot;</span><span class="p">);</span>
<a name="line-137"></a>
<a name="line-138"></a> <span class="k">return</span> <span class="n">out</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="n">QString</span> <span class="n">AdvPrintSettings</span><span class="o">::</span><span class="n">format</span><span class="p">()</span> <span class="k">const</span>
<a name="line-142"></a><span class="p">{</span>
<a name="line-143"></a> <span class="k">if</span> <span class="p">(</span><span class="n">imageFormat</span> <span class="o">==</span> <span class="n">JPEG</span><span class="p">)</span>
<a name="line-144"></a> <span class="p">{</span>
<a name="line-145"></a> <span class="k">return</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;JPEG&quot;</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">imageFormat</span> <span class="o">==</span> <span class="n">TIFF</span><span class="p">)</span>
<a name="line-148"></a> <span class="p">{</span>
<a name="line-149"></a> <span class="k">return</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;TIF&quot;</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="n">QLatin1String</span><span class="p">(</span><span class="s">&quot;PNG&quot;</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">QMap</span><span class="o">&lt;</span><span class="n">AdvPrintSettings</span><span class="o">::</span><span class="n">ImageFormat</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="n">AdvPrintSettings</span><span class="o">::</span><span class="n">imageFormatNames</span><span class="p">()</span>
<a name="line-156"></a><span class="p">{</span>
<a name="line-157"></a> <span class="n">QMap</span><span class="o">&lt;</span><span class="n">ImageFormat</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="n">frms</span><span class="p">;</span>
<a name="line-158"></a>
<a name="line-159"></a> <span class="n">frms</span><span class="p">[</span><span class="n">JPEG</span><span class="p">]</span> <span class="o">=</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;Image format: JPEG&quot;</span><span class="p">,</span> <span class="s">&quot;JPEG&quot;</span><span class="p">);</span>
<a name="line-160"></a> <span class="n">frms</span><span class="p">[</span><span class="n">PNG</span><span class="p">]</span> <span class="o">=</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;Image format: PNG&quot;</span><span class="p">,</span> <span class="s">&quot;PNG&quot;</span><span class="p">);</span>
<a name="line-161"></a> <span class="n">frms</span><span class="p">[</span><span class="n">TIFF</span><span class="p">]</span> <span class="o">=</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;Image format: TIFF&quot;</span><span class="p">,</span> <span class="s">&quot;TIFF&quot;</span><span class="p">);</span>
<a name="line-162"></a>
<a name="line-163"></a> <span class="k">return</span> <span class="n">frms</span><span class="p">;</span>
<a name="line-164"></a><span class="p">}</span>
<a name="line-165"></a>
<a name="line-166"></a><span class="n">QMap</span><span class="o">&lt;</span><span class="n">AdvPrintSettings</span><span class="o">::</span><span class="n">CaptionType</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="n">AdvPrintSettings</span><span class="o">::</span><span class="n">captionTypeNames</span><span class="p">()</span>
<a name="line-167"></a><span class="p">{</span>
<a name="line-168"></a> <span class="n">QMap</span><span class="o">&lt;</span><span class="n">CaptionType</span><span class="p">,</span> <span class="n">QString</span><span class="o">&gt;</span> <span class="n">types</span><span class="p">;</span>
<a name="line-169"></a>
<a name="line-170"></a> <span class="n">types</span><span class="p">[</span><span class="n">NONE</span><span class="p">]</span> <span class="o">=</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;Caption type: NONE&quot;</span><span class="p">,</span> <span class="s">&quot;No caption&quot;</span><span class="p">);</span>
<a name="line-171"></a> <span class="n">types</span><span class="p">[</span><span class="n">FILENAME</span><span class="p">]</span> <span class="o">=</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;Caption type: FILENAME&quot;</span><span class="p">,</span> <span class="s">&quot;Image file names&quot;</span><span class="p">);</span>
<a name="line-172"></a> <span class="n">types</span><span class="p">[</span><span class="n">DATETIME</span><span class="p">]</span> <span class="o">=</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;Caption type: DATETIME&quot;</span><span class="p">,</span> <span class="s">&quot;Exif date-time&quot;</span><span class="p">);</span>
<a name="line-173"></a> <span class="n">types</span><span class="p">[</span><span class="n">COMMENT</span><span class="p">]</span> <span class="o">=</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;Caption type: COMMENT&quot;</span><span class="p">,</span> <span class="s">&quot;Item comments&quot;</span><span class="p">);</span>
<a name="line-174"></a> <span class="n">types</span><span class="p">[</span><span class="n">CUSTOM</span><span class="p">]</span> <span class="o">=</span> <span class="n">i18nc</span><span class="p">(</span><span class="s">&quot;Caption type: CUSTOM&quot;</span><span class="p">,</span> <span class="s">&quot;Custom format&quot;</span><span class="p">);</span>
<a name="line-175"></a>
<a name="line-176"></a> <span class="k">return</span> <span class="n">types</span><span class="p">;</span>
<a name="line-177"></a><span class="p">}</span>
<a name="line-178"></a>
<a name="line-179"></a>
<a name="line-180"></a><span class="n">QRect</span><span class="o">*</span> <span class="n">AdvPrintSettings</span><span class="o">::</span><span class="n">getLayout</span><span class="p">(</span><span class="kt">int</span> <span class="n">photoIndex</span><span class="p">,</span> <span class="kt">int</span> <span class="n">sizeIndex</span><span class="p">)</span> <span class="k">const</span>
<a name="line-181"></a><span class="p">{</span>
<a name="line-182"></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">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-183"></a>
<a name="line-184"></a> <span class="c1">// how many photos would actually be printed, including copies?</span>
<a name="line-185"></a> <span class="kt">int</span> <span class="n">photoCount</span> <span class="o">=</span> <span class="p">(</span><span class="n">photoIndex</span> <span class="o">+</span> <span class="mi">1</span><span class="p">);</span>
<a name="line-186"></a>
<a name="line-187"></a> <span class="c1">// how many pages? Recall that the first layout item is the paper size</span>
<a name="line-188"></a> <span class="kt">int</span> <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-189"></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-190"></a> <span class="kt">int</span> <span class="n">retVal</span> <span class="o">=</span> <span class="p">(</span><span class="n">remainder</span> <span class="o">==</span> <span class="mi">0</span><span class="p">)</span> <span class="o">?</span> <span class="nl">photosPerPage</span> <span class="p">:</span> <span class="n">remainder</span><span class="p">;</span>
<a name="line-191"></a>
<a name="line-192"></a> <span class="k">return</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">retVal</span><span class="p">);</span>
<a name="line-193"></a><span class="p">}</span>
<a name="line-194"></a>
<a name="line-195"></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/9.html b/static/reports/cppcheck/master/9.html
index 2d24b6f16..be55547ae 100644
--- a/static/reports/cppcheck/master/9.html
+++ b/static/reports/cppcheck/master/9.html
@@ -1,1561 +1,713 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: ../../core/dplugins/generic/tools/printcreator/manager/advprinttask.cpp </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: ../../core/dplugins/generic/tools/printcreator/tools/atkinspagelayouttree.cpp </h1>
</div>
<div id="menu" dir="rtl">
- <p id="filename"><a href="index.html">Defects:</a> advprinttask.cpp</p>
-<a href='9.html#line-373'> shadowVar 373</a><a href='9.html#line-374'> shadowVar 374</a><a href='9.html#line-410'> shadowVar 410</a><a href='9.html#line-411'> shadowVar 411</a>
+ <p id="filename"><a href="index.html">Defects:</a> atkinspagelayouttree.cpp</p>
+<a href='9.html#line-216'> shadowVar 216</a><a href='9.html#line-233'> shadowVar 233</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</pre></div></td><td class="code"><div class="highlight"><pre><span></span><a name="line-1"></a><span class="cm">/* ============================================================</span>
+284</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-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) 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-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-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-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;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-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="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-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">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-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> <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-91"></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-92"></a>
+<a name="line-93"></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-94"></a> <span class="p">{</span>
+<a name="line-95"></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-96"></a> <span class="p">{</span>
+<a name="line-97"></a> <span class="c1">// create temporary tree</span>
+<a name="line-98"></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-99"></a>
+<a name="line-100"></a> <span class="c1">// select the subtree which will be replace by a new internal node</span>
+<a name="line-101"></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-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-103"></a> <span class="c1">// find parent node</span>
+<a name="line-104"></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-105"></a>
+<a name="line-106"></a> <span class="c1">// create new terminal node</span>
+<a name="line-107"></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-108"></a> <span class="n">relativeArea</span><span class="p">,</span>
+<a name="line-109"></a> <span class="n">index</span><span class="p">);</span>
+<a name="line-110"></a>
+<a name="line-111"></a> <span class="c1">// create new internal node</span>
+<a name="line-112"></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-113"></a> <span class="n">newTerminalNode</span><span class="p">,</span>
+<a name="line-114"></a> <span class="n">horizontal</span><span class="p">,</span>
+<a name="line-115"></a> <span class="n">index</span><span class="o">+</span><span class="mi">1</span><span class="p">);</span>
+<a name="line-116"></a>
+<a name="line-117"></a> <span class="c1">// replace in tree</span>
+<a name="line-118"></a> <span class="k">if</span> <span class="p">(</span><span class="n">parentNode</span><span class="p">)</span>
+<a name="line-119"></a> <span class="p">{</span>
+<a name="line-120"></a> <span class="c1">// replace in tree</span>
+<a name="line-121"></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-122"></a> <span class="p">}</span>
+<a name="line-123"></a> <span class="k">else</span>
+<a name="line-124"></a> <span class="p">{</span>
+<a name="line-125"></a> <span class="c1">// candidateTree is candidateSubtree is root</span>
+<a name="line-126"></a> <span class="n">candidateTree</span> <span class="o">=</span> <span class="n">newInternalNode</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-129"></a> <span class="c1">// recompute sizes</span>
+<a name="line-130"></a> <span class="n">candidateTree</span><span class="o">-&gt;</span><span class="n">computeRelativeSizes</span><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-132"></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-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-134"></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-135"></a> <span class="p">{</span>
+<a name="line-136"></a> <span class="n">highScore</span> <span class="o">=</span> <span class="n">candidateScore</span><span class="p">;</span>
+<a name="line-137"></a> <span class="k">delete</span> <span class="n">bestTree</span><span class="p">;</span>
+<a name="line-138"></a> <span class="n">bestTree</span> <span class="o">=</span> <span class="n">candidateTree</span><span class="p">;</span>
+<a name="line-139"></a> <span class="p">}</span>
+<a name="line-140"></a> <span class="k">else</span>
+<a name="line-141"></a> <span class="p">{</span>
+<a name="line-142"></a> <span class="k">delete</span> <span class="n">candidateTree</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> <span class="p">}</span>
+<a name="line-146"></a>
+<a name="line-147"></a> <span class="k">delete</span> <span class="n">m_root</span><span class="p">;</span>
+<a name="line-148"></a> <span class="n">m_root</span> <span class="o">=</span> <span class="n">bestTree</span><span class="p">;</span>
+<a name="line-149"></a>
+<a name="line-150"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_root</span><span class="p">)</span>
+<a name="line-151"></a> <span class="n">m_root</span><span class="o">-&gt;</span><span class="n">computeDivisions</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-153"></a> <span class="n">m_count</span> <span class="o">+=</span> <span class="mi">2</span><span class="p">;</span>
+<a name="line-154"></a> <span class="k">return</span> <span class="n">index</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="c1">// Section 2.2.1</span>
+<a name="line-158"></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-159"></a> <span class="kt">int</span> <span class="n">nodeCount</span><span class="p">)</span>
+<a name="line-160"></a><span class="p">{</span>
+<a name="line-161"></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-162"></a> <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<a name="line-163"></a>
+<a name="line-164"></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-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-166"></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-167"></a> <span class="p">{</span>
+<a name="line-168"></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-169"></a>
+<a name="line-170"></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-171"></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-172"></a> <span class="p">}</span>
+<a name="line-173"></a>
+<a name="line-174"></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-175"></a> <span class="o">:</span> <span class="n">m_aspectRatioPage</span><span class="p">;</span>
+<a name="line-176"></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-177"></a> <span class="o">:</span> <span class="n">m_aspectRatioPage</span><span class="p">;</span>
+<a name="line-178"></a>
+<a name="line-179"></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-180"></a><span class="p">}</span>
+<a name="line-181"></a>
+<a name="line-182"></a><span class="c1">// Section 2.2.2</span>
+<a name="line-183"></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-184"></a><span class="p">{</span>
+<a name="line-185"></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-186"></a><span class="p">}</span>
+<a name="line-187"></a>
+<a name="line-188"></a><span class="c1">// Section 2.2.2</span>
+<a name="line-189"></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-190"></a><span class="p">{</span>
+<a name="line-191"></a> <span class="c1">// min(a_pbb, a_page), max(a_pbb, a_page)</span>
+<a name="line-192"></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-193"></a> <span class="o">:</span> <span class="n">m_aspectRatioPage</span><span class="p">;</span>
+<a name="line-194"></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-195"></a> <span class="o">:</span> <span class="n">m_aspectRatioPage</span><span class="p">;</span>
+<a name="line-196"></a>
+<a name="line-197"></a> <span class="c1">// A_pbb</span>
+<a name="line-198"></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-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> <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-259"></a>
-<a name="line-260"></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-261"></a> <span class="p">{</span>
-<a name="line-262"></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-263"></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-264"></a> <span class="p">}</span>
-<a name="line-265"></a>
-<a name="line-266"></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-267"></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-200"></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-201"></a> <span class="k">return</span> <span class="n">absoluteAreaRoot</span><span class="p">;</span>
+<a name="line-202"></a>
+<a name="line-203"></a> <span class="c1">// A_i</span>
+<a name="line-204"></a> <span class="k">return</span> <span class="nf">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-205"></a><span class="p">}</span>
+<a name="line-206"></a>
+<a name="line-207"></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-208"></a><span class="p">{</span>
+<a name="line-209"></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-210"></a>
+<a name="line-211"></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-212"></a> <span class="k">return</span> <span class="n">QRectF</span><span class="p">();</span>
+<a name="line-213"></a>
+<a name="line-214"></a> <span class="c1">// find out the &quot;line of ancestry&quot; of the node</span>
+<a name="line-215"></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-216"></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-217"></a>
+<a name="line-218"></a> <span class="k">while</span> <span class="p">(</span><span class="n">parent</span><span class="p">)</span>
+<a name="line-219"></a> <span class="p">{</span>
+<a name="line-220"></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-221"></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-222"></a> <span class="p">}</span>
+<a name="line-223"></a>
+<a name="line-224"></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-225"></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-226"></a> <span class="n">m_root</span><span class="o">-&gt;</span><span class="n">aspectRatio</span><span class="p">(),</span>
+<a name="line-227"></a> <span class="n">absoluteArea</span><span class="p">(</span><span class="n">m_root</span><span class="p">));</span>
+<a name="line-228"></a>
+<a name="line-229"></a> <span class="c1">// go along the line of ancestry and narrow down the bounding rectangle,</span>
+<a name="line-230"></a> <span class="c1">// as described in section 2.2.2</span>
+<a name="line-231"></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-232"></a> <span class="p">{</span>
+<a name="line-233"></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-234"></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-235"></a>
+<a name="line-236"></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-237"></a> <span class="p">{</span>
+<a name="line-238"></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-239"></a>
+<a name="line-240"></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-241"></a> <span class="p">{</span>
+<a name="line-242"></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-243"></a> <span class="p">}</span>
+<a name="line-244"></a> <span class="k">else</span> <span class="c1">// right child</span>
+<a name="line-245"></a> <span class="p">{</span>
+<a name="line-246"></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-247"></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-248"></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-249"></a> <span class="p">}</span>
+<a name="line-250"></a> <span class="p">}</span>
+<a name="line-251"></a> <span class="k">else</span> <span class="c1">// horizontal division: one on top of the other</span>
+<a name="line-252"></a> <span class="p">{</span>
+<a name="line-253"></a> <span class="c1">// left child is topmost</span>
+<a name="line-254"></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-255"></a>
+<a name="line-256"></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-257"></a> <span class="p">{</span>
+<a name="line-258"></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-259"></a> <span class="p">}</span>
+<a name="line-260"></a> <span class="k">else</span> <span class="c1">// right child</span>
+<a name="line-261"></a> <span class="p">{</span>
+<a name="line-262"></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-263"></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-264"></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-265"></a> <span class="p">}</span>
+<a name="line-266"></a> <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">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-270"></a> <span class="n">QPainter</span> <span class="n">painter</span><span class="p">;</span>
-<a name="line-271"></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-272"></a>
-<a name="line-273"></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-274"></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-275"></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-276"></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-277"></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-278"></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-279"></a>
-<a name="line-280"></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-281"></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-282"></a> <span class="p">{</span>
-<a name="line-283"></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-284"></a> <span class="p">}</span>
-<a name="line-285"></a>
-<a name="line-286"></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-287"></a>
-<a name="line-288"></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-289"></a> <span class="n">photos</span><span class="p">,</span>
-<a name="line-290"></a> <span class="n">layouts</span><span class="o">-&gt;</span><span class="n">m_layouts</span><span class="p">,</span>
-<a name="line-291"></a> <span class="n">current</span><span class="p">,</span>
-<a name="line-292"></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-293"></a>
-<a name="line-294"></a> <span class="n">painter</span><span class="p">.</span><span class="n">end</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="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-297"></a> <span class="p">{</span>
-<a name="line-298"></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-299"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-300"></a> <span class="p">}</span>
-<a name="line-301"></a> <span class="k">else</span>
-<a name="line-302"></a> <span class="p">{</span>
-<a name="line-303"></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-304"></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-305"></a> <span class="p">}</span>
-<a name="line-306"></a>
-<a name="line-307"></a> <span class="n">pageCount</span><span class="o">++</span><span class="p">;</span>
-<a name="line-308"></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-309"></a>
-<a name="line-310"></a> <span class="k">if</span> <span class="p">(</span><span class="n">m_cancel</span><span class="p">)</span>
-<a name="line-311"></a> <span class="p">{</span>
-<a name="line-312"></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-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>
-<a name="line-317"></a> <span class="k">return</span> <span class="n">files</span><span class="p">;</span>
-<a name="line-318"></a><span class="p">}</span>
-<a name="line-319"></a>
-<a name="line-320"></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-321"></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-322"></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-323"></a> <span class="kt">int</span><span class="o">&amp;</span> <span class="n">current</span><span class="p">,</span>
-<a name="line-324"></a> <span class="kt">bool</span> <span class="n">cropDisabled</span><span class="p">,</span>
-<a name="line-325"></a> <span class="kt">bool</span> <span class="n">useThumbnails</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">layouts</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span>
-<a name="line-328"></a> <span class="p">{</span>
-<a name="line-329"></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-330"></a> <span class="k">return</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="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-334"></a> <span class="p">{</span>
-<a name="line-335"></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-336"></a> <span class="c1">// no photos =&gt; last photo</span>
-<a name="line-337"></a> <span class="k">return</span> <span class="nb">true</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">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-341"></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-342"></a> <span class="o">++</span><span class="n">it</span><span class="p">;</span>
-<a name="line-343"></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-344"></a>
-<a name="line-345"></a> <span class="c1">// scale the page size to best fit the painter</span>
-<a name="line-346"></a> <span class="c1">// size the rectangle based on the minimum image dimension</span>
-<a name="line-347"></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-348"></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-349"></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-350"></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-351"></a>
-<a name="line-352"></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-353"></a> <span class="p">{</span>
-<a name="line-354"></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-355"></a>
-<a name="line-356"></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-357"></a> <span class="p">{</span>
-<a name="line-358"></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-359"></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-360"></a> <span class="p">}</span>
-<a name="line-361"></a> <span class="p">}</span>
-<a name="line-362"></a> <span class="k">else</span>
-<a name="line-363"></a> <span class="p">{</span>
-<a name="line-364"></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-365"></a>
-<a name="line-366"></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-367"></a> <span class="p">{</span>
-<a name="line-368"></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-369"></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-370"></a> <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="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-374"></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-375"></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-376"></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-377"></a>
-<a name="line-378"></a> <span class="c1">// FIXME: may not want to erase the background page</span>
-<a name="line-379"></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-380"></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-381"></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-382"></a>
-<a name="line-383"></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-384"></a> <span class="p">{</span>
-<a name="line-385"></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-386"></a> <span class="c1">// crop</span>
-<a name="line-387"></a> <span class="n">QImage</span> <span class="n">img</span><span class="p">;</span>
-<a name="line-388"></a>
-<a name="line-389"></a> <span class="k">if</span> <span class="p">(</span><span class="n">useThumbnails</span><span class="p">)</span>
-<a name="line-390"></a> <span class="p">{</span>
-<a name="line-391"></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-392"></a> <span class="p">}</span>
-<a name="line-393"></a> <span class="k">else</span>
-<a name="line-394"></a> <span class="p">{</span>
-<a name="line-395"></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-396"></a> <span class="p">}</span>
-<a name="line-397"></a>
-<a name="line-398"></a> <span class="c1">// next, do we rotate?</span>
-<a name="line-399"></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-400"></a> <span class="p">{</span>
-<a name="line-401"></a> <span class="c1">// rotate</span>
-<a name="line-402"></a> <span class="n">QMatrix</span> <span class="n">matrix</span><span class="p">;</span>
-<a name="line-403"></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-404"></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-405"></a> <span class="p">}</span>
-<a name="line-406"></a>
-<a name="line-407"></a> <span class="k">if</span> <span class="p">(</span><span class="n">useThumbnails</span><span class="p">)</span>
-<a name="line-408"></a> <span class="p">{</span>
-<a name="line-409"></a> <span class="c1">// scale the crop region to thumbnail coords</span>
-<a name="line-410"></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-411"></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-412"></a>
-<a name="line-413"></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-414"></a> <span class="p">{</span>
-<a name="line-415"></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-416"></a> <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="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-419"></a> <span class="p">{</span>
-<a name="line-420"></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-421"></a> <span class="p">}</span>
-<a name="line-422"></a>
-<a name="line-423"></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-424"></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-425"></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-426"></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-427"></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-428"></a> <span class="p">}</span>
-<a name="line-429"></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-430"></a> <span class="p">{</span>
-<a name="line-431"></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-432"></a> <span class="p">}</span>
-<a name="line-433"></a>
-<a name="line-434"></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-435"></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-436"></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-437"></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-438"></a>
-<a name="line-439"></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-440"></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-441"></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-442"></a><span class="cm">/*</span>
-<a name="line-443"></a><span class="cm"> qCDebug(DIGIKAM_DPLUGIN_GENERIC_LOG) &lt;&lt; &quot;Image &quot;</span>
-<a name="line-444"></a><span class="cm"> &lt;&lt; photo-&gt;filename</span>
-<a name="line-445"></a><span class="cm"> &lt;&lt; &quot; size &quot; &lt;&lt; imageSize;</span>
-<a name="line-446"></a><span class="cm"> qCDebug(DIGIKAM_DPLUGIN_GENERIC_LOG) &lt;&lt; &quot;viewport size &quot;</span>
-<a name="line-447"></a><span class="cm"> &lt;&lt; newRectViewPort.size();</span>
-<a name="line-448"></a><span class="cm">*/</span>
-<a name="line-449"></a> <span class="n">QPoint</span> <span class="n">point</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">cropDisabled</span><span class="p">)</span>
-<a name="line-452"></a> <span class="p">{</span>
-<a name="line-453"></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-454"></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-455"></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-456"></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-457"></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-458"></a> <span class="n">imageSize</span><span class="p">.</span><span class="n">width</span><span class="p">(),</span>
-<a name="line-459"></a> <span class="n">imageSize</span><span class="p">.</span><span class="n">height</span><span class="p">());</span>
-<a name="line-460"></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-461"></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-462"></a> <span class="p">}</span>
-<a name="line-463"></a> <span class="k">else</span>
-<a name="line-464"></a> <span class="p">{</span>
-<a name="line-465"></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-466"></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-467"></a> <span class="p">}</span>
-<a name="line-468"></a>
-<a name="line-469"></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-470"></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-471"></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-472"></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-473"></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-474"></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-475"></a>
-<a name="line-476"></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-477"></a> <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-478"></a> <span class="p">{</span>
-<a name="line-479"></a> <span class="n">p</span><span class="p">.</span><span class="n">save</span><span class="p">();</span>
-<a name="line-480"></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-481"></a>
-<a name="line-482"></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-483"></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-484"></a> <span class="o">&lt;&lt;</span> <span class="s">&quot;:&quot;</span>
-<a name="line-485"></a> <span class="o">&lt;&lt;</span> <span class="n">caption</span><span class="p">;</span>
-<a name="line-486"></a>
-<a name="line-487"></a> <span class="c1">// draw the text at (0,0), but we will translate and rotate the world</span>
-<a name="line-488"></a> <span class="c1">// before drawing so the text will be in the correct location</span>
-<a name="line-489"></a> <span class="c1">// next, do we rotate?</span>
-<a name="line-490"></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-491"></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-492"></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-493"></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-494"></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-495"></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-496"></a>
-<a name="line-497"></a>
-<a name="line-498"></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-499"></a> <span class="p">{</span>
-<a name="line-500"></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-501"></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-502"></a> <span class="p">}</span>
-<a name="line-503"></a> <span class="k">else</span>
-<a name="line-504"></a> <span class="p">{</span>
-<a name="line-505"></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-506"></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-507"></a> <span class="p">}</span>
-<a name="line-508"></a>
-<a name="line-509"></a> <span class="c1">// ROT_90_HFLIP .. ROT_270</span>
-<a name="line-510"></a>
-<a name="line-511"></a> <span class="k">if</span> <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="o">||</span>
-<a name="line-512"></a> <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="o">||</span>
-<a name="line-513"></a> <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="o">||</span>
-<a name="line-514"></a> <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-515"></a> <span class="p">{</span>
-<a name="line-516"></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-517"></a> <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">orientatation</span> <span class="o">==</span> <span class="mi">90</span> <span class="o">||</span> <span class="n">orientatation</span> <span class="o">==</span> <span class="mi">270</span><span class="p">)</span>
-<a name="line-520"></a> <span class="p">{</span>
-<a name="line-521"></a> <span class="n">captionW</span> <span class="o">=</span> <span class="n">h</span><span class="p">;</span>
-<a name="line-522"></a> <span class="p">}</span>
-<a name="line-523"></a>
-<a name="line-524"></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-525"></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-526"></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-527"></a> <span class="o">&lt;&lt;</span> <span class="s">&quot; orientation &quot;</span>
-<a name="line-528"></a> <span class="o">&lt;&lt;</span> <span class="n">orientatation</span><span class="p">;</span>
-<a name="line-529"></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-530"></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-531"></a>
-<a name="line-532"></a> <span class="k">switch</span> <span class="p">(</span><span class="n">orientatation</span><span class="p">)</span>
-<a name="line-533"></a> <span class="p">{</span>
-<a name="line-534"></a> <span class="k">case</span> <span class="mi">0</span><span class="o">:</span>
-<a name="line-535"></a> <span class="p">{</span>
-<a name="line-536"></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-537"></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-538"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-539"></a> <span class="p">}</span>
-<a name="line-540"></a> <span class="k">case</span> <span class="mi">90</span><span class="o">:</span>
-<a name="line-541"></a> <span class="p">{</span>
-<a name="line-542"></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-543"></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-544"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-545"></a> <span class="p">}</span>
-<a name="line-546"></a> <span class="k">case</span> <span class="mi">180</span><span class="o">:</span>
-<a name="line-547"></a> <span class="p">{</span>
-<a name="line-548"></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-549"></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-550"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-551"></a> <span class="p">}</span>
-<a name="line-552"></a> <span class="k">case</span> <span class="mi">270</span><span class="o">:</span>
-<a name="line-553"></a> <span class="p">{</span>
-<a name="line-554"></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-555"></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-556"></a> <span class="k">break</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="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-561"></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-562"></a> <span class="n">p</span><span class="p">.</span><span class="n">restore</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="c1">// iterate to the next position</span>
-<a name="line-566"></a> <span class="o">++</span><span class="n">it</span><span class="p">;</span>
-<a name="line-567"></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-568"></a>
-<a name="line-569"></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-570"></a> <span class="p">{</span>
-<a name="line-571"></a> <span class="n">current</span><span class="o">++</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="c1">// did we print the last photo?</span>
-<a name="line-577"></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-578"></a><span class="p">}</span>
-<a name="line-579"></a>
-<a name="line-580"></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-581"></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-582"></a> <span class="kt">int</span> <span class="n">current</span><span class="p">)</span>
-<a name="line-583"></a><span class="p">{</span>
-<a name="line-584"></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-585"></a>
-<a name="line-586"></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-587"></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-588"></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-589"></a>
-<a name="line-590"></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-591"></a> <span class="p">{</span>
-<a name="line-592"></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-593"></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-594"></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-595"></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-596"></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-597"></a>
-<a name="line-598"></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-599"></a> <span class="n">maxDPI</span> <span class="o">=</span> <span class="n">dpi</span><span class="p">;</span>
-<a name="line-600"></a>
-<a name="line-601"></a> <span class="c1">// iterate to the next position</span>
-<a name="line-602"></a> <span class="o">++</span><span class="n">it</span><span class="p">;</span>
-<a name="line-603"></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-604"></a>
-<a name="line-605"></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-606"></a> <span class="p">{</span>
-<a name="line-607"></a> <span class="k">break</span><span class="p">;</span>
-<a name="line-608"></a> <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="k">return</span> <span class="n">maxDPI</span><span class="p">;</span>
-<a name="line-612"></a><span class="p">}</span>
-<a name="line-613"></a>
-<a name="line-614"></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-615"></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-616"></a> <span class="kt">int</span> <span class="n">captionW</span><span class="p">,</span>
-<a name="line-617"></a> <span class="kt">int</span> <span class="n">captionH</span><span class="p">,</span>
-<a name="line-618"></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-619"></a><span class="p">{</span>
-<a name="line-620"></a> <span class="n">QStringList</span> <span class="n">captionByLines</span><span class="p">;</span>
-<a name="line-621"></a>
-<a name="line-622"></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-623"></a>
-<a name="line-624"></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-625"></a> <span class="p">{</span>
-<a name="line-626"></a> <span class="n">QString</span> <span class="n">newLine</span><span class="p">;</span>
-<a name="line-627"></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-628"></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-629"></a>
-<a name="line-630"></a> <span class="c1">// Check minimal lines dimension</span>
-<a name="line-631"></a> <span class="c1">// TODO: fix length, maybe useless</span>
-<a name="line-632"></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-633"></a>
-<a name="line-634"></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-635"></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-636"></a> <span class="p">{</span>
-<a name="line-637"></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-638"></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-639"></a> <span class="p">{</span>
-<a name="line-640"></a> <span class="n">breakLine</span> <span class="o">=</span> <span class="nb">true</span><span class="p">;</span>
-<a name="line-641"></a> <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">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-645"></a> <span class="p">{</span>
-<a name="line-646"></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-647"></a> <span class="p">}</span>
-<a name="line-648"></a>
-<a name="line-649"></a> <span class="n">breakLine</span> <span class="o">=</span> <span class="nb">false</span><span class="p">;</span>
-<a name="line-650"></a>
-<a name="line-651"></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-652"></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-653"></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-654"></a> <span class="o">++</span><span class="n">currIndex</span><span class="p">)</span>
-<a name="line-655"></a> <span class="p">{</span>
-<a name="line-656"></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-657"></a>
-<a name="line-658"></a> <span class="k">if</span> <span class="p">(</span><span class="n">breakLine</span><span class="p">)</span>
-<a name="line-659"></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-660"></a> <span class="k">else</span>
-<a name="line-661"></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-662"></a> <span class="p">}</span>
-<a name="line-663"></a>
-<a name="line-664"></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-665"></a>
-<a name="line-666"></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-667"></a> <span class="p">{</span>
-<a name="line-668"></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-669"></a> <span class="p">{</span>
-<a name="line-670"></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-671"></a> <span class="n">captionIndex</span><span class="o">--</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="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-676"></a> <span class="p">}</span>
-<a name="line-677"></a>
-<a name="line-678"></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-679"></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-680"></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-681"></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-682"></a>
-<a name="line-683"></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-684"></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-685"></a>
-<a name="line-686"></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-687"></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-688"></a>
-<a name="line-689"></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-690"></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-691"></a>
-<a name="line-692"></a> <span class="c1">// Now draw the caption</span>
-<a name="line-693"></a> <span class="c1">// TODO allow printing captions per photo and on top, bottom and vertically</span>
-<a name="line-694"></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-695"></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-696"></a> <span class="p">{</span>
-<a name="line-697"></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-698"></a> <span class="p">{</span>
-<a name="line-699"></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-700"></a> <span class="p">}</span>
-<a name="line-701"></a>
-<a name="line-702"></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-703"></a>
-<a name="line-704"></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-705"></a> <span class="p">}</span>
-<a name="line-706"></a><span class="p">}</span>
-<a name="line-707"></a>
-<a name="line-708"></a><span class="p">}</span> <span class="c1">// namespace DigikamGenericPrintCreatorPlugin</span>
+<a name="line-269"></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-270"></a><span class="p">}</span>
+<a name="line-271"></a>
+<a name="line-272"></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-273"></a> <span class="kt">double</span> <span class="n">aspectRatio</span><span class="p">,</span>
+<a name="line-274"></a> <span class="kt">double</span> <span class="n">absoluteArea</span><span class="p">)</span>
+<a name="line-275"></a><span class="p">{</span>
+<a name="line-276"></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-277"></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-278"></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-279"></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-280"></a>
+<a name="line-281"></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-282"></a><span class="p">}</span>
+<a name="line-283"></a>
+<a name="line-284"></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/index.html b/static/reports/cppcheck/master/index.html
index 81c15f2c6..40ddadfae 100644
--- a/static/reports/cppcheck/master/index.html
+++ b/static/reports/cppcheck/master/index.html
@@ -1,264 +1,259 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
- <title>Cppcheck - HTML report - digiKam-master-rev-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: </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>54</td><td>shadowVar</td></tr> <tr><td><input type='checkbox' onclick='toggle_class_visibility(this.id)' id='useInitializationList' name='useInitializationList' checked></td><td>52</td><td>useInitializationList</td></tr> <tr><td><input type='checkbox' onclick='toggle_class_visibility(this.id)' id='knownConditionTrueFalse' name='knownConditionTrueFalse' checked></td><td>11</td><td>knownConditionTrueFalse</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>123</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>54</td><td>shadowVar</td></tr> <tr><td><input type='checkbox' onclick='toggle_class_visibility(this.id)' id='useInitializationList' name='useInitializationList' checked></td><td>48</td><td>useInitializationList</td></tr> <tr><td><input type='checkbox' onclick='toggle_class_visibility(this.id)' id='knownConditionTrueFalse' name='knownConditionTrueFalse' checked></td><td>11</td><td>knownConditionTrueFalse</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>119</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='61.html'></a></td></tr>
- <tr class="unmatchedSuppression"><td><a href="61.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="61.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="61.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="61.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="61.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='60.html'></a></td></tr>
+ <tr class="unmatchedSuppression"><td><a href="60.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="60.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="60.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="60.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="60.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/dimg/jpeg2000/dimgjpeg2000loader_load.cpp</a></td></tr>
<tr class="knownConditionTrueFalse"><td><a href="0.html#line-224">224</a></td><td>knownConditionTrueFalse</td><td><a href='https://cwe.mitre.org/data/definitions/570.html'>570</a></td><td>style</td><td >Condition 'components[0]<0' is always false</td></tr>
<tr><td colspan='4'><a href='1.html'>../../core/dplugins/dimg/tiff/dimgtiffloader_load.cpp</a></td></tr>
<tr class="knownConditionTrueFalse"><td><a href="1.html#line-351">351</a></td><td>knownConditionTrueFalse</td><td><a href='https://cwe.mitre.org/data/definitions/571.html'>571</a></td><td>style</td><td >Condition 'samples_per_pixel!=0' is always true</td></tr>
<tr class="knownConditionTrueFalse"><td><a href="1.html#line-406">406</a></td><td>knownConditionTrueFalse</td><td><a href='https://cwe.mitre.org/data/definitions/571.html'>571</a></td><td>style</td><td >Condition 'samples_per_pixel!=0' is always true</td></tr>
<tr class="knownConditionTrueFalse"><td><a href="1.html#line-559">559</a></td><td>knownConditionTrueFalse</td><td><a href='https://cwe.mitre.org/data/definitions/571.html'>571</a></td><td>style</td><td >Condition 'samples_per_pixel!=0' is always true</td></tr>
<tr class="knownConditionTrueFalse"><td><a href="1.html#line-614">614</a></td><td>knownConditionTrueFalse</td><td><a href='https://cwe.mitre.org/data/definitions/571.html'>571</a></td><td>style</td><td >Condition 'samples_per_pixel!=0' is always true</td></tr>
<tr><td colspan='4'><a href='2.html'>../../core/dplugins/editor/transform/perspective/perspectivewidget.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="2.html#line-794">794</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 u shadows outer variable</td></tr>
<tr class="shadowVar"><td><a href="2.html#line-795">795</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 v shadows outer variable</td></tr>
<tr><td colspan='4'><a href='3.html'>../../core/dplugins/generic/metadata/geolocationedit/dialog/geolocationedit.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="3.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="3.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='4.html'>../../core/dplugins/generic/metadata/geolocationedit/kmlexport/kmlexport.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="4.html#line-318">318</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 destPath shadows outer variable</td></tr>
<tr><td colspan='4'><a href='5.html'>../../core/dplugins/generic/metadata/metadataedit/iptc/iptcorigin.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="5.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='6.html'>../../core/dplugins/generic/metadata/metadataedit/xmp/xmpproperties.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="6.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="6.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="6.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='7.html'>../../core/dplugins/generic/tools/printcreator/manager/advprintphoto.cpp</a></td></tr>
<tr class="useInitializationList"><td><a href="7.html#line-54">54</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'm_label' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr class="useInitializationList"><td><a href="7.html#line-57">57</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'm_layouts' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr class="useInitializationList"><td><a href="7.html#line-58">58</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'm_icon' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr class="useInitializationList"><td><a href="7.html#line-109">109</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'm_captionFont' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr class="useInitializationList"><td><a href="7.html#line-110">110</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'm_captionColor' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr class="useInitializationList"><td><a href="7.html#line-112">112</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'm_captionText' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr class="useInitializationList"><td><a href="7.html#line-126">126</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'm_cropRegion' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr class="useInitializationList"><td><a href="7.html#line-141">141</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'm_cropRegion' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr class="useInitializationList"><td><a href="7.html#line-142">142</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'm_url' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr><td colspan='4'><a href='8.html'>../../core/dplugins/generic/tools/printcreator/manager/advprintsettings.cpp</a></td></tr>
<tr class="useInitializationList"><td><a href="8.html#line-43">43</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'pageSize' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
- <tr><td colspan='4'><a href='9.html'>../../core/dplugins/generic/tools/printcreator/manager/advprinttask.cpp</a></td></tr>
- <tr class="shadowVar"><td><a href="9.html#line-410">410</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="9.html#line-411">411</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='10.html'>../../core/dplugins/generic/tools/printcreator/tools/atkinspagelayouttree.cpp</a></td></tr>
- <tr class="shadowVar"><td><a href="10.html#line-233">233</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='10.html'>../../core/dplugins/generic/tools/printcreator/manager/advprinttask.cpp</a></td></tr>
+ <tr class="shadowVar"><td><a href="10.html#line-410">410</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="10.html#line-411">411</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='9.html'>../../core/dplugins/generic/tools/printcreator/tools/atkinspagelayouttree.cpp</a></td></tr>
+ <tr class="shadowVar"><td><a href="9.html#line-233">233</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='11.html'>../../core/dplugins/generic/tools/printcreator/wizard/advprintwizard.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="11.html#line-326">326</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='12.html'>../../core/dplugins/generic/tools/sendbymail/manager/mailsettings.cpp</a></td></tr>
<tr class="useInitializationList"><td><a href="12.html#line-41">41</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'attLimitInMbytes' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
- <tr><td colspan='4'><a href='13.html'>../../core/dplugins/generic/view/glviewer/glviewerwidget.cpp</a></td></tr>
- <tr class="useInitializationList"><td><a href="13.html#line-93">93</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'zoomCursor' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
- <tr><td colspan='4'><a href='14.html'>../../core/dplugins/generic/view/presentation/common/presentationcontainer.cpp</a></td></tr>
- <tr class="useInitializationList"><td><a href="14.html#line-35">35</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'urlList' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
- <tr class="useInitializationList"><td><a href="14.html#line-52">52</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'commentsFontColor' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
- <tr class="useInitializationList"><td><a href="14.html#line-53">53</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'commentsBgColor' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
- <tr class="useInitializationList"><td><a href="14.html#line-55">55</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'bgOpacity' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
- <tr class="useInitializationList"><td><a href="14.html#line-69">69</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'cacheSize' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
+ <tr><td colspan='4'><a href='14.html'>../../core/dplugins/generic/view/glviewer/glviewerwidget.cpp</a></td></tr>
+ <tr class="useInitializationList"><td><a href="14.html#line-93">93</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'zoomCursor' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
+ <tr><td colspan='4'><a href='13.html'>../../core/dplugins/generic/view/presentation/common/presentationcontainer.cpp</a></td></tr>
+ <tr class="useInitializationList"><td><a href="13.html#line-35">35</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'urlList' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
+ <tr class="useInitializationList"><td><a href="13.html#line-52">52</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'commentsFontColor' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
+ <tr class="useInitializationList"><td><a href="13.html#line-53">53</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'commentsBgColor' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
+ <tr class="useInitializationList"><td><a href="13.html#line-55">55</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'bgOpacity' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
+ <tr class="useInitializationList"><td><a href="13.html#line-69">69</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'cacheSize' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr><td colspan='4'><a href='15.html'>../../core/dplugins/generic/view/presentation/common/presentationloader.cpp</a></td></tr>
<tr class="useInitializationList"><td><a href="15.html#line-61">61</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'm_path' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr><td colspan='4'><a href='16.html'>../../core/dplugins/generic/webservices/box/boxtalker.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="16.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='17.html'>../../core/dplugins/generic/webservices/debianscreenshots/dsmpform.cpp</a></td></tr>
<tr class="useInitializationList"><td><a href="17.html#line-48">48</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'm_boundary' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr><td colspan='4'><a href='18.html'>../../core/dplugins/generic/webservices/debianscreenshots/dstalker.cpp</a></td></tr>
<tr class="useInitializationList"><td><a href="18.html#line-58">58</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'm_userAgent' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr><td colspan='4'><a href='20.html'>../../core/dplugins/generic/webservices/flickr/flickritem.h</a></td></tr>
<tr class="useInitializationList"><td><a href="20.html#line-84">84</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'size' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr class="useInitializationList"><td><a href="20.html#line-144">144</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'id' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr><td colspan='4'><a href='19.html'>../../core/dplugins/generic/webservices/flickr/flickrmpform.cpp</a></td></tr>
<tr class="useInitializationList"><td><a href="19.html#line-48">48</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'm_boundary' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
- <tr><td colspan='4'><a href='21.html'>../../core/dplugins/generic/webservices/flickr/flickrwindow.cpp</a></td></tr>
- <tr class="shadowVar"><td><a href="21.html#line-575">575</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='22.html'>../../core/dplugins/generic/webservices/google/gsitem.h</a></td></tr>
- <tr class="useInitializationList"><td><a href="22.html#line-51">51</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'id' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
- <tr class="useInitializationList"><td><a href="22.html#line-91">91</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'id' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
+ <tr><td colspan='4'><a href='22.html'>../../core/dplugins/generic/webservices/flickr/flickrwindow.cpp</a></td></tr>
+ <tr class="shadowVar"><td><a href="22.html#line-575">575</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='21.html'>../../core/dplugins/generic/webservices/google/gsitem.h</a></td></tr>
+ <tr class="useInitializationList"><td><a href="21.html#line-51">51</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'id' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
+ <tr class="useInitializationList"><td><a href="21.html#line-91">91</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'id' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr><td colspan='4'><a href='23.html'>../../core/dplugins/generic/webservices/imageshack/imageshackmpform.cpp</a></td></tr>
<tr class="useInitializationList"><td><a href="23.html#line-45">45</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'm_boundary' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr><td colspan='4'><a href='24.html'>../../core/dplugins/generic/webservices/mediawiki/backend/mediawiki_edit.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="24.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='25.html'>../../core/dplugins/generic/webservices/mediawiki/backend/mediawiki_queryinfo.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="25.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='26.html'>../../core/dplugins/generic/webservices/mediawiki/tests/fakeserver/fakeserver.h</a></td></tr>
- <tr class="useInitializationList"><td><a href="26.html#line-56">56</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'type' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
- <tr class="useInitializationList"><td><a href="26.html#line-57">57</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'agent' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
- <tr class="useInitializationList"><td><a href="26.html#line-58">58</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'value' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
- <tr><td colspan='4'><a href='27.html'>../../core/dplugins/generic/webservices/mediawiki/tests/logouttest.cpp</a></td></tr>
- <tr class="shadowVar"><td><a href="27.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='27.html'>../../core/dplugins/generic/webservices/mediawiki/tests/fakeserver/fakeserver.h</a></td></tr>
+ <tr class="useInitializationList"><td><a href="27.html#line-56">56</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'type' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
+ <tr class="useInitializationList"><td><a href="27.html#line-57">57</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'agent' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
+ <tr class="useInitializationList"><td><a href="27.html#line-58">58</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'value' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
+ <tr><td colspan='4'><a href='26.html'>../../core/dplugins/generic/webservices/mediawiki/tests/logouttest.cpp</a></td></tr>
+ <tr class="shadowVar"><td><a href="26.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='28.html'>../../core/dplugins/generic/webservices/onedrive/odtalker.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="28.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='29.html'>../../core/dplugins/generic/webservices/pinterest/ptalker.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="29.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="29.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="29.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='30.html'>../../core/dplugins/generic/webservices/piwigo/piwigotalker.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="30.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='32.html'>../../core/dplugins/generic/webservices/smugmug/smugitem.h</a></td></tr>
<tr class="useInitializationList"><td><a href="32.html#line-78">78</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'id' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr class="useInitializationList"><td><a href="32.html#line-79">79</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'categoryID' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr class="useInitializationList"><td><a href="32.html#line-80">80</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'subCategoryID' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr class="useInitializationList"><td><a href="32.html#line-81">81</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'tmplID' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr class="useInitializationList"><td><a href="32.html#line-130">130</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'id' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr class="useInitializationList"><td><a href="32.html#line-154">154</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'id' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr class="useInitializationList"><td><a href="32.html#line-178">178</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'id' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr><td colspan='4'><a href='31.html'>../../core/dplugins/generic/webservices/smugmug/smugmpform.cpp</a></td></tr>
<tr class="useInitializationList"><td><a href="31.html#line-46">46</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'm_boundary' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr><td colspan='4'><a href='33.html'>../../core/dplugins/generic/webservices/twitter/twittermpform.cpp</a></td></tr>
<tr class="useInitializationList"><td><a href="33.html#line-43">43</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'm_boundary' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr><td colspan='4'><a href='34.html'>../../core/dplugins/generic/webservices/twitter/twittertalker.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="34.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 doc shadows outer variable</td></tr>
- <tr><td colspan='4'><a href='35.html'>../../core/dplugins/generic/webservices/yandexfotki/yftalker.cpp</a></td></tr>
- <tr class="shadowVar"><td><a href="35.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='36.html'>../../core/dplugins/rawimport/native/rawpostprocessing.cpp</a></td></tr>
- <tr class="useInitializationList"><td><a href="36.html#line-54">54</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'm_customRawSettings' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
+ <tr><td colspan='4'><a href='36.html'>../../core/dplugins/generic/webservices/yandexfotki/yftalker.cpp</a></td></tr>
+ <tr class="shadowVar"><td><a href="36.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='35.html'>../../core/dplugins/rawimport/native/rawpostprocessing.cpp</a></td></tr>
+ <tr class="useInitializationList"><td><a href="35.html#line-54">54</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'm_customRawSettings' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr><td colspan='4'><a href='37.html'>../../core/libs/album/engine/albumpointer.h</a></td></tr>
<tr class="operatorEqRetRefThis"><td><a href="37.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='38.html'>../../core/libs/dngwriter/dngwriter_convert.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="38.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="38.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='39.html'>../../core/libs/threadimageio/fileio/loadsavetask.cpp</a></td></tr>
<tr class="knownConditionTrueFalse"><td><a href="39.html#line-168">168</a></td><td>knownConditionTrueFalse</td><td><a href='https://cwe.mitre.org/data/definitions/571.html'>571</a></td><td>style</td><td >Condition 'm_loadingTaskStatus!=LoadingTaskStatusStopping' is always true</td></tr>
<tr><td colspan='4'><a href='40.html'>../../core/libs/threadimageio/preview/previewtask.cpp</a></td></tr>
<tr class="knownConditionTrueFalse"><td><a href="40.html#line-122">122</a></td><td>knownConditionTrueFalse</td><td><a href='https://cwe.mitre.org/data/definitions/571.html'>571</a></td><td>style</td><td >Condition 'm_loadingTaskStatus!=LoadingTaskStatusStopping' is always true</td></tr>
<tr><td colspan='4'><a href='41.html'>../../core/libs/threadimageio/thumb/thumbnailtask.cpp</a></td></tr>
<tr class="knownConditionTrueFalse"><td><a href="41.html#line-129">129</a></td><td>knownConditionTrueFalse</td><td><a href='https://cwe.mitre.org/data/definitions/571.html'>571</a></td><td>style</td><td >Condition 'm_loadingTaskStatus!=LoadingTaskStatusStopping' is always true</td></tr>
<tr><td colspan='4'><a href='42.html'>../../core/libs/video/manager/vidslidetask.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="42.html#line-382">382</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 tmout shadows outer variable</td></tr>
<tr><td colspan='4'><a href='43.html'>../../core/libs/widgets/itemview/dcategorizedview.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="43.html#line-1408">1408</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 initialPressPosition shadows outer variable</td></tr>
<tr><td colspan='4'><a href='44.html'>../../core/libs/widgets/mainview/sidebar.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="44.html#line-1067">1067</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 tab shadows outer variable</td></tr>
<tr><td colspan='4'><a href='45.html'>../../core/showfoto/thumbbar/itemviewshowfotodelegate.cpp</a></td></tr>
<tr class="useInitializationList"><td><a href="45.html#line-50">50</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'thumbSize' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
- <tr><td colspan='4'><a href='46.html'>../../core/showfoto/thumbbar/showfotodelegate_p.h</a></td></tr>
- <tr class="useInitializationList"><td><a href="46.html#line-91">91</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'flow' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
- <tr><td colspan='4'><a href='47.html'>../../core/showfoto/thumbbar/showfotoiteminfo.cpp</a></td></tr>
- <tr class="useInitializationList"><td><a href="47.html#line-35">35</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'size' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
- <tr class="useInitializationList"><td><a href="47.html#line-36">36</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'id' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
- <tr><td colspan='4'><a href='48.html'>../../core/showfoto/thumbbar/showfotoitemsortsettings.cpp</a></td></tr>
- <tr class="useInitializationList"><td><a href="48.html#line-37">37</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'categorizationCaseSensitivity' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
- <tr class="useInitializationList"><td><a href="48.html#line-40">40</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'sortCaseSensitivity' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
- <tr class="useInitializationList"><td><a href="48.html#line-41">41</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'currentCategorizationSortOrder' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
- <tr class="useInitializationList"><td><a href="48.html#line-42">42</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'currentSortOrder' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
+ <tr><td colspan='4'><a href='48.html'>../../core/showfoto/thumbbar/showfotodelegate_p.h</a></td></tr>
+ <tr class="useInitializationList"><td><a href="48.html#line-91">91</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'flow' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
+ <tr><td colspan='4'><a href='46.html'>../../core/showfoto/thumbbar/showfotoiteminfo.cpp</a></td></tr>
+ <tr class="useInitializationList"><td><a href="46.html#line-35">35</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'size' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
+ <tr class="useInitializationList"><td><a href="46.html#line-36">36</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'id' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
+ <tr><td colspan='4'><a href='47.html'>../../core/showfoto/thumbbar/showfotoitemsortsettings.cpp</a></td></tr>
+ <tr class="useInitializationList"><td><a href="47.html#line-37">37</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'categorizationCaseSensitivity' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
+ <tr class="useInitializationList"><td><a href="47.html#line-40">40</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'sortCaseSensitivity' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
+ <tr class="useInitializationList"><td><a href="47.html#line-41">41</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'currentCategorizationSortOrder' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
+ <tr class="useInitializationList"><td><a href="47.html#line-42">42</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'currentSortOrder' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
<tr><td colspan='4'><a href='49.html'>../../core/tests/albummodel/albummodeltest.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="49.html#line-219">219</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="49.html#line-220">220</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="49.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="49.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="49.html#line-238">238</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="49.html#line-239">239</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="49.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="49.html#line-242">242</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="49.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="49.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><td colspan='4'><a href='50.html'>../../core/tests/geolocation/editor/test_simpletreemodel.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="50.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="50.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="50.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="50.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='51.html'>../../core/utilities/fuzzysearch/sketchwidget.cpp</a></td></tr>
<tr class="knownConditionTrueFalse"><td><a href="51.html#line-215">215</a></td><td>knownConditionTrueFalse</td><td><a href='https://cwe.mitre.org/data/definitions/570.html'>570</a></td><td>style</td><td >Condition 'd->eventIndex==-1' is always false</td></tr>
<tr class="knownConditionTrueFalse"><td><a href="51.html#line-226">226</a></td><td>knownConditionTrueFalse</td><td><a href='https://cwe.mitre.org/data/definitions/571.html'>571</a></td><td>style</td><td >Condition 'd->eventIndex!=-1' is always true</td></tr>
<tr class="knownConditionTrueFalse"><td><a href="51.html#line-243">243</a></td><td>knownConditionTrueFalse</td><td><a href='https://cwe.mitre.org/data/definitions/571.html'>571</a></td><td>style</td><td >Condition 'd->eventIndex!=d->drawEventList.count()-1' is always true</td></tr>
<tr><td colspan='4'><a href='52.html'>../../core/utilities/geolocation/geoiface/items/gpsitemcontainer.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="52.html#line-948">948</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='53.html'>../../core/utilities/geolocation/geoiface/reversegeocoding/parsetagstring.h</a></td></tr>
- <tr class="shadowVar"><td><a href="53.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="53.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="53.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='55.html'>../../core/utilities/geolocation/geoiface/reversegeocoding/rgtagmodel.cpp</a></td></tr>
- <tr class="shadowVar"><td><a href="55.html#line-1052">1052</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='54.html'>../../core/utilities/geolocation/geoiface/reversegeocoding/rgwidget.cpp</a></td></tr>
- <tr class="shadowVar"><td><a href="54.html#line-544">544</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='54.html'>../../core/utilities/geolocation/geoiface/reversegeocoding/parsetagstring.h</a></td></tr>
+ <tr class="shadowVar"><td><a href="54.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="54.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="54.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='53.html'>../../core/utilities/geolocation/geoiface/reversegeocoding/rgtagmodel.cpp</a></td></tr>
+ <tr class="shadowVar"><td><a href="53.html#line-1052">1052</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='55.html'>../../core/utilities/geolocation/geoiface/reversegeocoding/rgwidget.cpp</a></td></tr>
+ <tr class="shadowVar"><td><a href="55.html#line-544">544</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='56.html'>../../core/utilities/geolocation/mapsearches/gpsmarkertiler.cpp</a></td></tr>
<tr class="shadowVar"><td><a href="56.html#line-313">313</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='57.html'>../../core/utilities/import/models/camitemsortsettings.cpp</a></td></tr>
- <tr class="useInitializationList"><td><a href="57.html#line-37">37</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'categorizationCaseSensitivity' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
- <tr class="useInitializationList"><td><a href="57.html#line-41">41</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'sortCaseSensitivity' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
- <tr class="useInitializationList"><td><a href="57.html#line-42">42</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'currentCategorizationSortOrder' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
- <tr class="useInitializationList"><td><a href="57.html#line-43">43</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'currentSortOrder' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
- <tr><td colspan='4'><a href='58.html'>../../core/utilities/import/models/importimagemodel.cpp</a></td></tr>
- <tr class="useInitializationList"><td><a href="58.html#line-892">892</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'oldIds' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
- <tr><td colspan='4'><a href='59.html'>../../core/utilities/setup/metadata/setupmetadata.cpp</a></td></tr>
- <tr class="shadowVar"><td><a href="59.html#line-896">896</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="59.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 result shadows outer variable</td></tr>
- <tr><td colspan='4'><a href='60.html'>../../core/utilities/setup/setup.cpp</a></td></tr>
- <tr class="shadowVar"><td><a href="60.html#line-319">319</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 page shadows outer variable</td></tr>
+ <tr><td colspan='4'><a href='57.html'>../../core/utilities/import/models/importimagemodel.cpp</a></td></tr>
+ <tr class="useInitializationList"><td><a href="57.html#line-904">904</a></td><td>useInitializationList</td><td><a href='https://cwe.mitre.org/data/definitions/398.html'>398</a></td><td>performance</td><td >Variable 'oldIds' is assigned in constructor body. Consider performing initialization in initialization list.</td></tr>
+ <tr><td colspan='4'><a href='58.html'>../../core/utilities/setup/metadata/setupmetadata.cpp</a></td></tr>
+ <tr class="shadowVar"><td><a href="58.html#line-896">896</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="58.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 result shadows outer variable</td></tr>
+ <tr><td colspan='4'><a href='59.html'>../../core/utilities/setup/setup.cpp</a></td></tr>
+ <tr class="shadowVar"><td><a href="59.html#line-319">319</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 page 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 3c322392e..4d2af8463 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-08bdab4e6b</title>
+ <title>Cppcheck - HTML report - digiKam-master-rev-1535400d00</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-08bdab4e6b: Statistics </h1>
+ <h1>Cppcheck report - digiKam-master-rev-1535400d00: Statistics </h1>
</div>
<div id="menu_index">
<p id="filename"><a href="index.html">Back to summary</a> </p>
</div>
<div id="content_index">