<table><tr><td style="">pino added a comment.
</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/D18394">View Revision</a></tr></table><br /><div><div><p>Hi Enrique,</p>

<p>I'm not a plasma-nm developer, however I provide some tips & hints regarding your patch.</p>

<p>Other than what I noted already, there are few more things that apply in general:</p>

<ul class="remarkup-list">
<li class="remarkup-list-item">make sure to respect the indentation: each level by 4 spaces with no tabs, space after a comma for function arguments, etc</li>
<li class="remarkup-list-item">make sure to use curly brackets {...} also for blocks with only 1 line</li>
<li class="remarkup-list-item">nullptr instead of NULL</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/D18394#inline-101623">View Inline</a><span style="color: #4b4d51; font-weight: bold;">openconnectauth.cpp:60-66</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: #304a96">#if !OPENCONNECT_CHECK_VER(2,1)</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span style="color: #304a96">#define __openconnect_set_token_mode(...) -EOPNOTSUPP</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span style="color: #304a96">#elif !OPENCONNECT_CHECK_VER(2,2)</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span style="color: #304a96">#define __openconnect_set_token_mode(vpninfo, mode, secret) openconnect_set_stoken_mode(vpninfo, 1, secret)</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span style="color: #304a96">#else</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span style="color: #304a96">#define __openconnect_set_token_mode openconnect_set_token_mode</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span style="color: #304a96">#endif</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">IMHO it is better to define the macros in the same way for all the cases, specifying their 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/D18394#inline-101624">View Inline</a><span style="color: #4b4d51; font-weight: bold;">openconnectauth.cpp:225</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">d</span><span style="color: #aa2211">-></span><span class="n">tokenMode</span> <span style="color: #aa2211">=</span> <span class="n">dataMap</span><span class="p">[</span><span class="n">NM_OPENCONNECT_KEY_TOKEN_MODE</span><span class="p">].</span><span class="n">toUtf8</span><span class="p">();</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">
</div><div style="padding: 0 8px; margin: 0 4px; "><span class="p">}</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">extra empty line</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/D18394#inline-101625">View Inline</a><span style="color: #4b4d51; font-weight: bold;">openconnectauth.cpp:279</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">QByteArray</span> <span class="n">tokenSecret</span> <span style="color: #aa2211">=</span> <span class="n">d</span><span style="color: #aa2211">-></span><span class="n">secrets</span><span class="p">[</span><span class="n">NM_OPENCONNECT_KEY_TOKEN_SECRET</span><span class="p">].</span><span class="n">toUtf8</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 style="color: #aa2211">!</span><span class="n">d</span><span style="color: #aa2211">-></span><span class="n">tokenMode</span><span class="p">.</span><span class="n">isEmpty</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;">this is needed only in the block within the if in the line below, so move it inside that block; also, make tokenSecret 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/D18394#inline-101626">View Inline</a><span style="color: #4b4d51; font-weight: bold;">openconnectauth.cpp:298</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">d</span><span style="color: #aa2211">-></span><span class="n">token</span><span class="p">.</span><span class="n">tokenMode</span> <span style="color: #aa2211">=</span> <span class="n">OC_TOKEN_MODE_YUBIOATH</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 style="color: #aa2211">!</span><span class="n">tokenSecret</span><span class="p">.</span><span class="n">isEmpty</span><span class="p">()</span> <span style="color: #aa2211">&&</span> <span class="n">tokenSecret</span><span class="p">.</span><span class="n">length</span><span class="p">())</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">                        <span class="n">d</span><span style="color: #aa2211">-></span><span class="n">token</span><span class="p">.</span><span class="n">tokenSecret</span> <span style="color: #aa2211">=</span> <span class="n">tokenSecret</span><span class="p">;</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">if tokenSecret is not empty, then its length will always be greater than 0, so the second condition is redundant</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/D18394#inline-101627">View Inline</a><span style="color: #4b4d51; font-weight: bold;">openconnectauth.cpp:301</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">d</span><span style="color: #aa2211">-></span><span class="n">token</span><span class="p">.</span><span class="n">tokenSecret</span> <span style="color: #aa2211">=</span> <span style="color: #304a96">NULL</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;">d->token.tokenSecret is a QByteArray, so if you want to clear it just call clear()</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/D18394#inline-101643">View Inline</a><span style="color: #4b4d51; font-weight: bold;">openconnectauth.cpp:305</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">ret</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">addFormInfo</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span style="color: #766510">"dialog-error"</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span style="color: #766510">"Failed to initialize software token: %1</span><span style="color: #bb6622">\n</span><span style="color: #766510">"</span><span class="p">,</span> <span class="n">ret</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;">it looks like all the other messages for addFormInfo() do not have a trailing newline, so please remove 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/D18394#inline-101628">View Inline</a><span style="color: #4b4d51; font-weight: bold;">openconnectauth.cpp:360</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; ">    <span class="n">addFormInfo</span><span class="p">(</span><span class="n">QLatin1String</span><span class="p">(</span><span style="color: #766510">"dialog-information"</span><span class="p">),</span> <span class="n">i18n</span><span class="p">(</span><span style="color: #766510">"Contacting host, please wait..."</span><span class="p">));</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    
</div><div style="padding: 0 8px; margin: 0 4px; ">    <span class="n">d</span><span style="color: #aa2211">-></span><span class="n">worker</span><span style="color: #aa2211">-></span><span class="n">start</span><span class="p">();</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">extra empty line</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/D18394#inline-101629">View Inline</a><span style="color: #4b4d51; font-weight: bold;">openconnectauth.cpp:374</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; "><span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">
</div><div style="padding: 0 8px; margin: 0 4px; ">    <span class="n">Q_D</span><span class="p">(</span><span style="color: #aa4000">const</span> <span class="n">OpenconnectAuthWidget</span><span class="p">);</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">extra empty line</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/D18394#inline-101630">View Inline</a><span style="color: #4b4d51; font-weight: bold;">openconnectauth.cpp:380</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; ">    <span class="n">secrets</span><span class="p">.</span><span class="n">unite</span><span class="p">(</span><span class="n">d</span><span style="color: #aa2211">-></span><span class="n">secrets</span><span class="p">);</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">extra empty line</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/D18394#inline-101621">View Inline</a><span style="color: #4b4d51; font-weight: bold;">openconnectauth.h:58</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; ">    <span style="color: #aa4000">void</span> <span style="color: #004012">processAuthForm</span><span class="p">(</span><span style="color: #aa4000">struct</span> <span class="n">oc_auth_form</span> <span style="color: #aa2211">*</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span style="color: #aa4000">void</span> <span style="color: #004012">updateLog</span><span class="p">(</span><span style="color: #aa4000">const</span> <span class="n">QString<span class="bright"></span></span><span class="bright"> </span><span style="color: #aa2211">&</span><span class="p">,</span> <span style="color: #aa4000">const</span> <span style="color: #aa4000">int<span class="bright"></span></span><span class="bright"> </span><span style="color: #aa2211">&</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">updateLog</span><span class="p">(</span><span style="color: #aa4000">const</span> <span class="n">QString</span><span style="color: #aa2211">&</span><span class="p">,</span> <span style="color: #aa4000">const</span> <span style="color: #aa4000">int</span><span style="color: #aa2211">&</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; ">    <span style="color: #aa4000">void</span> <span style="color: #004012">logLevelChanged</span><span class="p">(</span><span style="color: #aa4000">int</span><span class="p">);</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">unrelated change</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/D18394#inline-101622">View Inline</a><span style="color: #4b4d51; font-weight: bold;">openconnectauth.h:66</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">initTokens</span><span class="p">();</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">
</div><div style="padding: 0 8px; margin: 0 4px; "><span class="p">};</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">extra empty line</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/D18394#inline-101631">View Inline</a><span style="color: #4b4d51; font-weight: bold;">openconnectauthworkerthread.h:95</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="bright">    </span><span style="color: #aa4000"><span class="bright">void</span></span><span class="bright"> </span><span style="color: #004012"><span class="bright">initTokens</span></span><span class="bright"></span><span class="p"><span class="bright">(</span></span><span class="bright"></span><span style="color: #aa4000"><span class="bright">void</span></span><span class="bright"></span><span class="p"><span class="bright">);</span></span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    
</div><div style="padding: 0 8px; margin: 0 4px; "><span style="color: #a0a000">protected</span><span class="p">:</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">extra empty line</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/D18394#inline-101632">View Inline</a><span style="color: #4b4d51; font-weight: bold;">openconnectprop.ui:181-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);">        <property name="text">
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">         <string>Prevent the user from manually accepting
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">invalid certificates</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;">this seems a bit too long as label for a checkbox</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/D18394#inline-101633">View Inline</a><span style="color: #4b4d51; font-weight: bold;">openconnectprop.ui:208</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>Tokens</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;">usually buttons are actions, so IMHO "Show Tokens" is more appropriate</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/D18394#inline-101634">View Inline</a><span style="color: #4b4d51; font-weight: bold;">openconnecttoken.ui:13-15</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="windowTitle">
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">   <string>Form</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;">remove these lines (or invoke on this .ui file the fixuifiles script available in kde-dev-scripts)</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/D18394#inline-101644">View Inline</a><span style="color: #4b4d51; font-weight: bold;">openconnecttoken.ui:85</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>Yubikey OATH</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;">"YubiKey"; also, is "OATH" correct?</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/D18394#inline-101646">View Inline</a><span style="color: #4b4d51; font-weight: bold;">openconnectwidget.cpp:48</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: #304a96">#include</span> <span class="cpf"><QStringList></span><span style="color: #304a96"></span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">this include should be placed together with the other Qt includes some lines 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/D18394#inline-101645">View Inline</a><span style="color: #4b4d51; font-weight: bold;">openconnectwidget.cpp: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; ">    <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">setting</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span style="color: #aa4000">mutable</span> <span class="n">QStringList</span> <span class="n">tokenModeList</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">QDialog</span> <span style="color: #aa2211">*</span><span class="n">tokenDlg</span><span class="p">;</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">are you sure it needs to be mutable?</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/D18394#inline-101647">View Inline</a><span style="color: #4b4d51; font-weight: bold;">openconnectwidget.cpp:78</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">d</span><span style="color: #aa2211">-></span><span class="n">tokenDlg</span> <span style="color: #aa2211">=</span> <span style="color: #aa4000">new</span> <span class="n">QDialog</span><span class="p">(</span><span style="color: #aa4000">this</span><span class="p">);</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">extra empty line</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/D18394#inline-101636">View Inline</a><span style="color: #4b4d51; font-weight: bold;">openconnectwidget.cpp:80</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">d</span><span style="color: #aa2211">-></span><span class="n">tokenDlg</span> <span style="color: #aa2211">=</span> <span style="color: #aa4000">new</span> <span class="n">QDialog</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">d</span><span style="color: #aa2211">-></span><span class="n">tokenWid</span> <span style="color: #aa2211">=</span> <span style="color: #aa4000">new</span> <span class="n">QWidget</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">d</span><span style="color: #aa2211">-></span><span class="n">tokenUi</span><span class="p">.</span><span class="n">setupUi</span><span class="p">(</span><span class="n">d</span><span style="color: #aa2211">-></span><span class="n">tokenWid</span><span class="p">);</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">tokenWid is not needed, you can just setupUi on the dialog</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/D18394#inline-101637">View Inline</a><span style="color: #4b4d51; font-weight: bold;">openconnectwidget.cpp:85</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">d</span><span style="color: #aa2211">-></span><span class="n">tokenDlg</span><span style="color: #aa2211">-></span><span class="n">setLayout</span><span class="p">(</span><span class="n">layout</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">QDialogButtonBox</span><span style="color: #aa2211">*</span> <span class="n">buttons</span> <span style="color: #aa2211">=</span> <span style="color: #aa4000">new</span> <span class="n">QDialogButtonBox</span><span class="p">(</span><span class="n">QDialogButtonBox</span><span style="color: #aa2211">::</span><span class="n">Ok</span><span style="color: #aa2211">|</span><span class="n">QDialogButtonBox</span><span style="color: #aa2211">::</span><span class="n">Cancel</span><span class="p">,</span> <span class="n">d</span><span style="color: #aa2211">-></span><span class="n">tokenDlg</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">connect</span><span class="p">(</span><span class="n">buttons</span><span class="p">,</span> <span style="color: #aa2211">&</span><span class="n">QDialogButtonBox</span><span style="color: #aa2211">::</span><span class="n">accepted</span><span class="p">,</span> <span class="n">d</span><span style="color: #aa2211">-></span><span class="n">tokenDlg</span><span class="p">,</span> <span style="color: #aa2211">&</span><span class="n">QDialog</span><span style="color: #aa2211">::</span><span class="n">accept</span><span class="p">);</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">the button box can be added directly to the ui file, and avoid the need to add it manually</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/D18394#inline-101639">View Inline</a><span style="color: #4b4d51; font-weight: bold;">openconnectwidget.cpp:122-136</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">combo</span><span style="color: #aa2211">-></span><span class="n">itemText</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">startsWith</span><span class="p">(</span><span style="color: #766510">"RSA"</span><span class="p">)</span> <span style="color: #aa2211">&&</span> <span style="color: #aa2211">!</span><span class="n">openconnect_has_stoken_support</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">combo</span><span style="color: #aa2211">-></span><span class="n">removeItem</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">            <span class="n">d</span><span style="color: #aa2211">-></span><span class="n">tokenModeList</span><span class="p">.</span><span class="n">removeAt</span><span class="p">(</span><span class="n">i</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 style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #aa4000">else</span> <span style="color: #aa4000">if</span> <span class="p">(</span><span class="n">combo</span><span style="color: #aa2211">-></span><span class="n">itemText</span><span class="p">(</span><span class="n">i</span><span class="p">).</span><span class="n">startsWith</span><span class="p">(</span><span style="color: #766510">"TOTP"</span><span class="p">)</span> <span style="color: #aa2211">&&</span> <span style="color: #aa2211">!</span><span class="n">openconnect_has_oath_support</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">combo</span><span style="color: #aa2211">-></span><span class="n">removeItem</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">             <span class="n">d</span><span style="color: #aa2211">-></span><span class="n">tokenModeList</span><span class="p">.</span><span class="n">removeAt</span><span class="p">(</span><span class="n">i</span><span class="p">);</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">never ever compare to ui strings! they are translatable, so these checks break when using a translation;<br />
a better way is to use the itemData mechanism of a combobox to associate arbitrary stuff (better some values of an enum) to easily get back the information on the selected item;<br />
also, considering that the items are added statically in the ui file and here removed at runtime depending on the available modes, then IMHO it would be better to directly only add the supported modes at runtime here</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/D18394#inline-101640">View Inline</a><span style="color: #4b4d51; font-weight: bold;">openconnectwidget.cpp:150</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; ">    <span style="color: #aa4000">const</span> <span class="n">NMStringMap</span> <span class="n">dataMap</span> <span style="color: #aa2211">=</span> <span class="n">d</span><span style="color: #aa2211">-></span><span class="n">setting</span><span style="color: #aa2211">-></span><span class="n">data</span><span class="p">();</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">extra empty line</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/D18394#inline-101641">View Inline</a><span style="color: #4b4d51; font-weight: bold;">openconnectwidget.cpp:163</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">index</span> <span style="color: #aa2211">=</span> <span class="n">d</span><span style="color: #aa2211">-></span><span class="n">tokenModeList</span><span class="p">.</span><span class="n">indexOf</span><span class="p">(</span><span class="n">dataMap</span><span class="p">[</span><span class="n">NM_OPENCONNECT_KEY_TOKEN_MODE</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">index</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;">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/D18394#inline-101648">View Inline</a><span style="color: #4b4d51; font-weight: bold;">openconnectwidget.cpp:241</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">d</span><span style="color: #aa2211">-></span><span class="n">tokenDlg</span><span style="color: #aa2211">-></span><span class="n">show</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 style="padding: 0 8px; margin: 0 4px; "><span style="color: #aa4000">bool</span> <span class="n">OpenconnectSettingWidget</span><span style="color: #aa2211">::</span><span class="n">isValid</span><span class="p">()</span> <span style="color: #aa4000">const</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">missing empty line after this</p></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/D18394">https://phabricator.kde.org/D18394</a></div></div><br /><div><strong>To: </strong>enriquem, jgrulich<br /><strong>Cc: </strong>pino, plasma-devel, jraleigh, GB_2, ragreen, Pitel, ZrenBot, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, mart<br /></div>