<table><tr><td style="">pino requested changes to this revision.<br />pino added a comment.<br />This revision now requires changes to proceed.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D15093">View Revision</a></tr></table><br /><div><div><p>Thanks Bruce for all the updates, and patience! In return, I have more notes :)</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">I'd send the changes to the existing SimpleIpV4AddressValidator in an own review request, since it affects other code than just this new wireguard plugin (maybe with unit tests)</li>
<li class="remarkup-list-item">I'd send the addition of SimpleIpListValidator in an own review request too, since it is an independent code (possibly with unit tests)</li>
<li class="remarkup-list-item">something I forgot (sorry) in the past: <tt style="background: #ebebeb; font-size: 13px;">QRegExp</tt> is the "old" class for regexps, while in new code <tt style="background: #ebebeb; font-size: 13px;">QRegularExpression</tt> should be preferred/used; should be mostly a transparent change for your uses</li>
<li class="remarkup-list-item">I notes various nits for the UI strings: this is to follow the HIG, see <a href="https://hig.kde.org/style/writing/index.html" class="remarkup-link" target="_blank" rel="noreferrer">https://hig.kde.org/style/writing/index.html</a> in particular</li>
<li class="remarkup-list-item">if possible, please avoid HTML markup in strings in UI files -- they make translations slightly more complicated (e.g. more prone to break the string with a typo in the markup)</li>
</ul></div></div><br /><div><strong>INLINE COMMENTS</strong><div><div style="margin: 6px 0 12px 0;"><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-82629">View Inline</a><span style="color: #4b4d51; font-weight: bold;">wireguard.cpp:119</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">valueList</span> <span style="color: #aa2211">=</span> <span class="n">interfaceGroup</span><span class="p">.</span><span class="n">readEntry</span><span class="p">(</span><span class="n">NMV_WG_TAG_ADDRESS</span><span class="p">,</span> <span class="n">QStringList</span><span class="p">());</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: #aa4000">if</span> <span class="p">(</span><span class="n">valueList</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span style="color: #aa2211">==</span> <span style="color: #601200">0</span><span class="p">)</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #aa4000">return</span> <span class="n">result</span><span class="p">;</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">isEmpty()</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-82748">View Inline</a><span style="color: #4b4d51; font-weight: bold;">wireguard.cpp:121</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #aa4000">return</span> <span class="n">result</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: #aa4000">for</span> <span class="p">(</span><span style="color: #aa4000">int</span> <span class="n">i</span> <span style="color: #aa2211">=</span> <span style="color: #601200">0</span><span class="p">;</span> <span class="n">i</span> <span style="color: #aa2211"><</span> <span class="n">valueList</span><span class="p">.</span><span class="n">size</span><span class="p">();</span> <span class="n">i</span><span style="color: #aa2211">++</span><span class="p">)</span> <span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">QPair</span><span style="color: #aa2211"><</span><span class="n">QHostAddress</span><span class="p">,</span> <span style="color: #aa4000">int</span><span style="color: #aa2211">></span> <span class="n">addressIn</span> <span style="color: #aa2211">=</span> <span class="n">QHostAddress</span><span style="color: #aa2211">::</span><span class="n">parseSubnet</span><span class="p">(</span><span class="n">valueList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">trimmed</span><span class="p">());</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">better use qt's foreach here:</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="c++" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);"><span class="n">Q_FOREACH</span> <span class="p">(</span><span style="color: #aa4000">const</span> <span class="n">QString</span> <span style="color: #aa2211">&</span><span class="n">address</span><span class="p">,</span> <span class="n">valueList</span><span class="p">)</span></pre></div>

<p style="padding: 0; margin: 8px;">and then using <tt style="background: #ebebeb; font-size: 13px;">address</tt> instead of <tt style="background: #ebebeb; font-size: 13px;">valueList[i]</tt></p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-82743">View Inline</a><span style="color: #4b4d51; font-weight: bold;">wireguard.cpp:122</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: #aa4000">for</span> <span class="p">(</span><span style="color: #aa4000">int</span> <span class="n">i</span> <span style="color: #aa2211">=</span> <span style="color: #601200">0</span><span class="p">;</span> <span class="n">i</span> <span style="color: #aa2211"><</span> <span class="n">valueList</span><span class="p">.</span><span class="n">size</span><span class="p">();</span> <span class="n">i</span><span style="color: #aa2211">++</span><span class="p">)</span> <span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">QPair</span><span style="color: #aa2211"><</span><span class="n">QHostAddress</span><span class="p">,</span> <span style="color: #aa4000">int</span><span style="color: #aa2211">></span> <span class="n">addressIn</span> <span style="color: #aa2211">=</span> <span class="n">QHostAddress</span><span style="color: #aa2211">::</span><span class="n">parseSubnet</span><span class="p">(</span><span class="n">valueList</span><span class="p">[</span><span class="n">i</span><span class="p">].</span><span class="n">trimmed</span><span class="p">());</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #aa4000">if</span> <span class="p">(</span><span class="n">addressIn</span><span class="p">.</span><span class="n">first</span><span class="p">.</span><span class="n">protocol</span><span class="p">()</span> <span style="color: #aa2211">==</span> <span class="n">QAbstractSocket</span><span style="color: #aa2211">::</span><span class="n">NetworkLayerProtocol</span><span style="color: #aa2211">::</span><span class="n">IPv4Protocol</span><span class="p">)</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">addressIn can be const</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-82745">View Inline</a><span style="color: #4b4d51; font-weight: bold;">wireguard.cpp:134-135</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: #aa4000">if</span> <span class="p">(</span><span style="color: #aa2211">!</span><span class="n">value</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">QRegExp</span> <span class="n">validatorRegex</span><span class="p">(</span><span style="color: #766510">"[0-9a-zA-Z</span><span style="color: #bb6622">\\</span><span style="color: #766510">+/]{43,43}="</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #aa4000">if</span> <span class="p">(</span><span class="n">validatorRegex</span><span class="p">.</span><span class="n">exactMatch</span><span class="p">(</span><span class="n">value</span><span class="p">))</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">            <span class="n">dataMap</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="n">NM_WG_KEY_PRIVATE_KEY</span><span class="p">),</span> <span class="n">value</span><span class="p">);</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">the validation of a key is done multiple times, repeating the same regexp every time -- I'd be worth to create an own validator for it</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-82630">View Inline</a><span style="color: #4b4d51; font-weight: bold;">wireguard.cpp:159</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #aa4000">int</span> <span class="n">pos</span> <span style="color: #aa2211">=</span> <span style="color: #601200">0</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">SimpleIpListValidator</span> <span style="color: #aa2211">*</span><span class="n">validator</span> <span style="color: #aa2211">=</span> <span style="color: #aa4000">new</span> <span class="n">SimpleIpListValidator</span><span class="p">(</span><span style="color: #aa4000">this</span><span class="p">,</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">                                                                     <span class="n">SimpleIpListValidator</span><span style="color: #aa2211">::</span><span class="n">WithCidr</span><span class="p">,</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">"validator" is leaked here -- just use it on the stack (<tt style="background: #ebebeb; font-size: 13px;">SimpleIpListValidator validator;</tt>)</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-82746">View Inline</a><span style="color: #4b4d51; font-weight: bold;">wireguard.cpp:174</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: #74777d">// Listen Port</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">intValue</span> <span style="color: #aa2211">=</span> <span class="n">interfaceGroup</span><span class="p">.</span><span class="n">readEntry</span><span class="p">(</span><span class="n">NMV_WG_TAG_LISTEN_PORT</span><span class="p">,</span> <span style="color: #601200">0</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: #aa4000">if</span> <span class="p">(</span><span class="n">intValue</span> <span style="color: #aa2211">></span> <span style="color: #601200">0</span><span class="p">)</span> <span class="p">{</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;"><tt style="background: #ebebeb; font-size: 13px;">0</tt> is <tt style="background: #ebebeb; font-size: 13px;">int</tt> by default, so intValue must be int too (not quint32)</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-82747">View Inline</a><span style="color: #4b4d51; font-weight: bold;">wireguard.cpp:185</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: #aa4000">if</span> <span class="p">(</span><span style="color: #aa2211">!</span><span class="n">value</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">())</span> <span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">QHostAddress</span> <span class="n">testAddress</span><span class="p">(</span><span class="n">value</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #aa4000">if</span> <span class="p">(</span><span class="n">testAddress</span><span class="p">.</span><span class="n">protocol</span><span class="p">()</span> <span style="color: #aa2211">==</span> <span class="n">QAbstractSocket</span><span style="color: #aa2211">::</span><span class="n">NetworkLayerProtocol</span><span style="color: #aa2211">::</span><span class="n">IPv4Protocol</span><span class="p">)</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">const</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-82632">View Inline</a><span style="color: #4b4d51; font-weight: bold;">wireguard.cpp:195</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: #aa4000">if</span> <span class="p">(</span><span class="n">intValue</span> <span style="color: #aa2211">></span> <span style="color: #601200">0</span><span class="p">)</span> <span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #aa4000">if</span> <span class="p">(</span><span class="n">intValue</span> <span style="color: #aa2211"><</span> <span style="color: #601200">65536</span><span class="p">)</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">            <span class="n">dataMap</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="n">NM_WG_KEY_LISTEN_PORT</span><span class="p">),</span> <span class="n">QString</span><span style="color: #aa2211">::</span><span class="n">number</span><span class="p">(</span><span class="n">intValue</span><span class="p">));</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">an MTU is not a port...</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-82749">View Inline</a><span style="color: #4b4d51; font-weight: bold;">wireguard.cpp:239</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">NMStringMap</span> <span class="n">dataMap</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">NetworkManager</span><span style="color: #aa2211">::</span><span class="n">VpnSetting</span><span style="color: #aa2211">::</span><span class="n">Ptr</span> <span class="n">vpnSetting</span> <span style="color: #aa2211">=</span> <span class="n">connection</span><span style="color: #aa2211">-></span><span class="n">setting</span><span class="p">(</span><span class="n">NetworkManager</span><span style="color: #aa2211">::</span><span class="n">Setting</span><span style="color: #aa2211">::</span><span class="n">Vpn</span><span class="p">).</span><span class="n">dynamicCast</span><span style="color: #aa2211"><</span><span class="n">NetworkManager</span><span style="color: #aa2211">::</span><span class="n">VpnSetting</span><span style="color: #aa2211">></span><span class="p">();</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">if you move the dataMap declaration after vpnSettings, you can glue declaration and initialization together</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-82750">View Inline</a><span style="color: #4b4d51; font-weight: bold;">wireguard.cpp:245</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: #aa4000">if</span> <span class="p">(</span><span style="color: #aa2211">!</span><span class="p">(</span><span class="n">dataMap</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="n">NM_WG_KEY_ADDR_IP4</span><span class="p">))</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">          <span style="color: #aa2211">||</span> <span class="n">dataMap</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="n">NM_WG_KEY_ADDR_IP4</span><span class="p">)))</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #aa2211">||</span> <span style="color: #aa2211">!</span><span class="n">dataMap</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="n">NM_WG_KEY_PRIVATE_KEY</span><span class="p">))</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">most probably this should be <tt style="background: #ebebeb; font-size: 13px;">NM_WG_KEY_ADDR_IP6</tt> (not again IP4)</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-82633">View Inline</a><span style="color: #4b4d51; font-weight: bold;">wireguard.cpp:258-265</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: #aa4000">if</span> <span class="p">(</span><span class="n">dataMap</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="n">NM_WG_KEY_ADDR_IP4</span><span class="p">)))</span> <span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">value</span> <span style="color: #aa2211">=</span> <span class="n">dataMap</span><span class="p">[</span><span class="n">NM_WG_KEY_ADDR_IP4</span><span class="p">];</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #aa4000">if</span> <span class="p">(</span><span class="n">dataMap</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="n">NM_WG_KEY_ADDR_IP6</span><span class="p">)))</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">            <span class="n">value</span> <span style="color: #aa2211">+=</span> <span style="color: #766510">","</span> <span style="color: #aa2211">+</span> <span class="n">dataMap</span><span class="p">[</span><span class="n">NM_WG_KEY_ADDR_IP6</span><span class="p">];</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="p">}</span> <span style="color: #aa4000">else</span> <span style="color: #aa4000">if</span> <span class="p">(</span><span class="n">dataMap</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="n">NM_WG_KEY_ADDR_IP4</span><span class="p">)))</span> <span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">value</span> <span style="color: #aa2211">=</span> <span class="n">dataMap</span><span class="p">[</span><span class="n">NM_WG_KEY_ADDR_IP4</span><span class="p">];</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="p">}</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">just like readEntry, writeEntry can output lists -- just create a QStringList, and pass it to writeEntry</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-82751">View Inline</a><span style="color: #4b4d51; font-weight: bold;">wireguard.cpp:262-263</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">            <span class="n">value</span> <span style="color: #aa2211">+=</span> <span style="color: #766510">","</span> <span style="color: #aa2211">+</span> <span class="n">dataMap</span><span class="p">[</span><span class="n">NM_WG_KEY_ADDR_IP6</span><span class="p">];</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="p">}</span> <span style="color: #aa4000">else</span> <span style="color: #aa4000">if</span> <span class="p">(</span><span class="n">dataMap</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="n">NM_WG_KEY_ADDR_IP4</span><span class="p">)))</span> <span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">value</span> <span style="color: #aa2211">=</span> <span class="n">dataMap</span><span class="p">[</span><span class="n">NM_WG_KEY_ADDR_IP4</span><span class="p">];</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="p">}</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">typos for IP6?</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-82752">View Inline</a><span style="color: #4b4d51; font-weight: bold;">wireguard.ui:54</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <property name="text">
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">         <string>Private Key:</string>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        </property>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">"Private key:"</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-82753">View Inline</a><span style="color: #4b4d51; font-weight: bold;">wireguard.ui:91</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <property name="text">
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">         <string>Public Key:</string>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        </property>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">"Public key:"</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-82754">View Inline</a><span style="color: #4b4d51; font-weight: bold;">wireguardadvanced.ui:26</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <property name="text">
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">         <string>Listen Port:</string>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        </property>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">"Listen port:"</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-82757">View Inline</a><span style="color: #4b4d51; font-weight: bold;">wireguardadvanced.ui:72-76</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">       <widget class="QLineEdit" name="fwMarkLineEdit">
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <property name="toolTip">
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">         <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;A 32-bit fwmark for outgoing packets. If set to 0 or &amp;quot;off&amp;quot;, this option is disabled. May be specified in hexadecimal by prepending &amp;quot;0x&amp;quot;. Optional.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        </property>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">       </widget>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">most probably this should be QSpinBox too...</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-82755">View Inline</a><span style="color: #4b4d51; font-weight: bold;">wireguardadvanced.ui:103</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <property name="text">
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">         <string>Preshared Key:</string>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        </property>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">"Preshared key:"</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-82758">View Inline</a><span style="color: #4b4d51; font-weight: bold;">wireguardadvancedwidget.cpp:55</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">QIntValidator</span> <span style="color: #aa2211">*</span><span class="n">fwMarkValidator</span> <span style="color: #aa2211">=</span> <span style="color: #aa4000">new</span> <span class="n">QIntValidator</span><span class="p">(</span><span style="color: #601200">0</span><span class="p">,</span> <span style="color: #601200">4294967295</span><span class="p">,</span> <span style="color: #aa4000">nullptr</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">m_ui</span><span style="color: #aa2211">-></span><span class="n">fwMarkLineEdit</span><span style="color: #aa2211">-></span><span class="n">setValidator</span><span class="p">(</span><span class="n">fwMarkValidator</span><span class="p">);</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><ul class="remarkup-list">
<li class="remarkup-list-item">4294967295, other than being a magic value (using std::numeric_limits is a better idea), will even overflow the maximum value for the validator, since it is int (i.e. 32bit signed)</li>
<li class="remarkup-list-item">instead of passing minimum & maximum to constructor, just set the minimum to 0 with <tt style="background: #ebebeb; font-size: 13px;">setMinimum</tt>, and do not touch the maximum (which is already the maximum int value)</li>
<li class="remarkup-list-item"><tt style="background: #ebebeb; font-size: 13px;">fwMarkValidator</tt> is leaked: use e.g. the lineedit where it will be used as parent</li>
</ul>

<p style="padding: 0; margin: 8px;">... OTOH, using QSpinBox for this will basically solve all the issues above</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-82759">View Inline</a><span style="color: #4b4d51; font-weight: bold;">wireguardadvancedwidget.cpp:97</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: #aa4000">else</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">m_ui</span><span style="color: #aa2211">-></span><span class="n">presharedKeyLineEdit</span><span style="color: #aa2211">-></span><span class="n">setText</span><span class="p">(</span><span style="color: #766510">""</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span class="p">}</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;"><tt style="background: #ebebeb; font-size: 13px;">QString()</tt>, instead of <tt style="background: #ebebeb; font-size: 13px;">""</tt></p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-82761">View Inline</a><span style="color: #4b4d51; font-weight: bold;">wireguardadvancedwidget.cpp:115-116</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">intVal</span> <span style="color: #aa2211">=</span> <span class="n">m_ui</span><span style="color: #aa2211">-></span><span class="n">listenPortSpinBox</span><span style="color: #aa2211">-></span><span class="n">value</span><span class="p">();</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">stringVal</span> <span style="color: #aa2211">=</span> <span class="p">(</span><span class="n">intVal</span> <span style="color: #aa2211">></span> <span style="color: #601200">0</span><span class="p">)</span> <span style="color: #aa2211">?</span> <span class="n">QString</span><span style="color: #aa2211">::</span><span class="n">number</span><span class="p">(</span><span class="n">intVal</span><span class="p">)</span> <span style="color: #aa2211">:</span> <span class="n">QString</span><span class="p">(</span><span style="color: #766510">""</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">setOrClear</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="n">NM_WG_KEY_LISTEN_PORT</span><span class="p">),</span> <span class="n">stringVal</span><span class="p">);</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">this is basically the positive-or-null int version of setOrClear:</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="c++" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);"><span style="color: #aa4000">void</span> <span class="n">WireGuardAdvancedWidget</span><span style="color: #aa2211">::</span><span class="n">setOrClear</span><span class="p">(</span><span class="n">NMStringMap</span> <span style="color: #aa2211">&</span><span class="n">data</span><span class="p">,</span> <span style="color: #aa4000">const</span> <span class="n">QLatin1String</span> <span style="color: #aa2211">&</span><span class="n">key</span><span class="p">,</span> <span style="color: #aa4000">int</span> <span class="n">value</span><span class="p">)</span> <span style="color: #aa4000">const</span>
<span class="err">​</span><span class="p">{</span>
  <span style="color: #aa4000">if</span> <span class="p">(</span><span class="n">value</span> <span style="color: #aa2211">></span> <span style="color: #601200">0</span><span class="p">)</span>
    <span class="n">data</span><span class="p">.</span><span class="n">insert</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="n">QString</span><span style="color: #aa2211">::</span><span class="n">number</span><span class="p">(</span><span class="n">value</span><span class="p">));</span>
  <span style="color: #aa4000">else</span>
    <span class="n">data</span><span class="p">.</span><span class="n">remove</span><span class="p">(</span><span class="n">key</span><span class="p">);</span>
<span class="p">}</span></pre></div></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-82762">View Inline</a><span style="color: #4b4d51; font-weight: bold;">wireguardadvancedwidget.cpp:119-120</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">intVal</span> <span style="color: #aa2211">=</span> <span class="n">m_ui</span><span style="color: #aa2211">-></span><span class="n">mtuSpinBox</span><span style="color: #aa2211">-></span><span class="n">value</span><span class="p">();</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">stringVal</span> <span style="color: #aa2211">=</span> <span class="p">(</span><span class="n">intVal</span> <span style="color: #aa2211">></span> <span style="color: #601200">0</span><span class="p">)</span> <span style="color: #aa2211">?</span> <span class="n">QString</span><span style="color: #aa2211">::</span><span class="n">number</span><span class="p">(</span><span class="n">intVal</span><span class="p">)</span> <span style="color: #aa2211">:</span> <span class="n">QString</span><span class="p">(</span><span style="color: #766510">""</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">setOrClear</span><span class="p">(</span><span class="n">data</span><span class="p">,</span> <span class="n">QLatin1String</span><span class="p">(</span><span class="n">NM_WG_KEY_MTU</span><span class="p">),</span> <span class="n">stringVal</span><span class="p">);</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">ditto</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-82764">View Inline</a><span style="color: #4b4d51; font-weight: bold;">wireguardadvancedwidget.h:41-47</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: #aa4000">enum</span> <span class="n">CertCheckType</span> <span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">DontVerify</span> <span style="color: #aa2211">=</span> <span style="color: #601200">0</span><span class="p">,</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">VerifyWholeSubjectExactly</span><span class="p">,</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">VerifyNameExactly</span><span class="p">,</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">VerifyNameByPrefix</span><span class="p">,</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">VerifySubjectPartially</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="p">};</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">is this enum ever used anywhere? if not, please drop</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-82760">View Inline</a><span style="color: #4b4d51; font-weight: bold;">wireguardadvancedwidget.h:56</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: #aa4000">void</span> <span class="n">loadConfig</span><span class="p">();</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: #aa4000">void</span> <span style="color: #004012">setOrClear</span><span class="p">(</span><span class="n">NMStringMap</span> <span style="color: #aa2211">&</span><span class="n">data</span><span class="p">,</span> <span class="n">QLatin1String</span> <span class="n">key</span><span class="p">,</span> <span class="n">QString</span> <span class="n">value</span><span class="p">)</span> <span style="color: #aa4000">const</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">Ui</span><span style="color: #aa2211">::</span><span class="n">WireGuardAdvancedWidget</span> <span style="color: #aa2211">*</span><span class="n">m_ui</span><span class="p">;</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">const & for both the key and value parameters</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-82756">View Inline</a><span style="color: #4b4d51; font-weight: bold;">wireguardadvancedwidget.h:57</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: #aa4000">void</span> <span style="color: #004012">setOrClear</span><span class="p">(</span><span class="n">NMStringMap</span> <span style="color: #aa2211">&</span><span class="n">data</span><span class="p">,</span> <span class="n">QLatin1String</span> <span class="n">key</span><span class="p">,</span> <span class="n">QString</span> <span class="n">value</span><span class="p">)</span> <span style="color: #aa4000">const</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">Ui</span><span style="color: #aa2211">::</span><span class="n">WireGuardAdvancedWidget</span> <span style="color: #aa2211">*</span><span class="n">m_ui</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">class</span> <span class="n">Private</span><span class="p">;</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">considering there is a private class already, I'd simply move this private variable to it, with no need to be a pointer variable</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D15093#inline-82763">View Inline</a><span style="color: #4b4d51; font-weight: bold;">wireguardwidget.cpp:182</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: #aa4000">return</span> <span class="p">(</span> <span class="p">(</span><span style="color: #aa2211">!</span><span class="n">d</span><span style="color: #aa2211">-></span><span class="n">ui</span><span class="p">.</span><span class="n">addressIPv4LineEdit</span><span style="color: #aa2211">-></span><span class="n">displayText</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">()</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">              <span style="color: #aa2211">||</span> <span style="color: #aa2211">!</span><span class="n">d</span><span style="color: #aa2211">-></span><span class="n">ui</span><span class="p">.</span><span class="n">addressIPv6LineEdit</span><span style="color: #aa2211">-></span><span class="n">displayText</span><span class="p">().</span><span class="n">isEmpty</span><span class="p">())</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">no need for the (...) for the whole condition:</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="c++" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);"><span style="color: #aa4000">return</span> <span class="n">foo</span> <span style="color: #aa2211">||</span> <span class="n">bar</span><span class="p">;</span></pre></div>

<p style="padding: 0; margin: 8px;">is easier than</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="c++" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);"><span style="color: #aa4000">return</span> <span class="p">(</span><span class="n">foo</span> <span style="color: #aa2211">||</span> <span class="n">bar</span><span class="p">);</span></pre></div></div></div></div></div></div><br /><div><strong>REPOSITORY</strong><div><div>R116 Plasma Network Management Applet</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D15093">https://phabricator.kde.org/D15093</a></div></div><br /><div><strong>To: </strong>andersonbruce, Plasma, jgrulich, pino<br /><strong>Cc: </strong>acrouthamel, K900, pino, lbeltrame, ngraham, plasma-devel, ragreen, Pitel, ZrenBot, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, mart<br /></div>