<table><tr><td style="">broulik added inline comments.
</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/D25375">View Revision</a></tr></table><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/D25375#inline-149414">View Inline</a><span style="color: #4b4d51; font-weight: bold;">kcmaccess.cpp:141</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(251, 175, 175, .7);">    <span class="bright"></span><span class="n"><span class="bright">QString</span></span><span class="bright"> </span><span class="n"><span class="bright">result</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(251, 175, 175, .7);">    <span class="bright"></span><span style="color: #aa4000"><span class="bright">if</span></span><span class="bright"> </span><span class="p"><span class="bright">((</span></span><span class="bright"></span><span class="n"><span class="bright">modifiers</span></span><span class="bright"> </span><span style="color: #aa2211"><span class="bright">&</span></span><span class="bright"> </span><span class="n"><span class="bright">ScrollMask</span></span><span class="bright"></span><span class="p"><span class="bright">)</span></span><span class="bright"> </span><span style="color: #aa2211"><span class="bright">!=</span></span><span class="bright"> </span><span style="color: #601200"><span class="bright">0</span></span><span class="p">)</span>
</div><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">return</span></span><span class="bright"> </span><span class="n"><span class="bright">modifiers</span></span><span class="bright"> </span><span style="color: #aa2211"><span class="bright">&</span></span><span class="bright"> </span><span class="n"><span class="bright">ScrollMask</span></span><span class="bright"> </span><span style="color: #aa2211"><span class="bright">&</span></span><span class="bright"> </span><span class="n"><span class="bright">LockMask</span></span><span class="bright"> </span><span style="color: #aa2211"><span class="bright">&</span></span><span class="bright"> </span><span class="n"><span class="bright">NumMask</span></span><span class="bright"> </span><span style="color: #aa2211"><span class="bright">?</span></span><span class="bright"> </span><span class="n"><span class="bright">i18n</span></span><span class="bright"></span><span class="p"><span class="bright">(</span></span><span class="bright"></span><span style="color: #766510"><span class="bright">"Press %1 while NumLock, CapsLock and ScrollLock are active"</span></span><span class="bright"></span><span class="p"><span class="bright">,</span></span><span class="bright"> </span><span class="n"><span class="bright">keyname</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);">    <span class="bright">     </span><span style="color: #aa2211"><span class="bright">:</span></span><span class="bright"> </span><span class="n"><span class="bright">modifiers</span></span><span class="bright"> </span><span style="color: #aa2211"><span class="bright">&</span></span><span class="bright"> </span><span class="n"><span class="bright">ScrollMask</span></span><span class="bright"> </span><span style="color: #aa2211"><span class="bright">&</span></span><span class="bright"> </span><span class="n"><span class="bright">LockMask</span></span><span class="bright"> </span><span style="color: #aa2211"><span class="bright">?</span></span><span class="bright"> </span><span class="n"><span class="bright">i18n</span></span><span class="bright"></span><span class="p"><span class="bright">(</span></span><span class="bright"></span><span style="color: #766510"><span class="bright">"Press %1 while CapsLock and ScrollLock are active"</span></span><span class="bright"></span><span class="p"><span class="bright">,</span></span><span class="bright"> </span><span class="n"><span class="bright">keyname</span></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 this shouldn't be something like</p>

<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" 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);">modifiers & (ScrollMask | LockMask | NumMask)</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/D25375#inline-149418">View Inline</a><span style="color: #4b4d51; font-weight: bold;">kcmaccess.cpp:170</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(251, 175, 175, .7);">    <span class="bright"></span><span class="n"><span class="bright">ui</span></span><span class="bright"></span><span class="p"><span class="bright">.</span></span><span class="bright"></span><span class="n"><span class="bright">setupUi</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">this</span></span><span class="p">);</span>
</div><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">int</span></span><span class="bright"> </span><span class="n"><span class="bright">tryOrcaRun</span></span><span class="bright"> </span><span style="color: #aa2211"><span class="bright">=</span></span><span class="bright"> </span><span class="n"><span class="bright">QProcess</span></span><span class="bright"></span><span style="color: #aa2211"><span class="bright">::</span></span><span class="bright"></span><span class="n"><span class="bright">execute</span></span><span class="bright"></span><span class="p"><span class="bright">(</span></span><span class="bright"></span><span class="n"><span class="bright">QStringLiteral</span></span><span class="bright"></span><span class="p"><span class="bright">(</span></span><span class="bright"></span><span style="color: #766510"><span class="bright">"orca"</span></span><span class="bright"></span><span class="p"><span class="bright">),</span></span><span class="bright"> </span><span class="p"><span class="bright">{</span></span><span class="bright"></span><span class="n"><span class="bright">QStringLiteral</span></span><span class="bright"></span><span class="p"><span class="bright">(</span></span><span class="bright"></span><span style="color: #766510"><span class="bright">"--version"</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);">    <span class="n">m_screenReaderInstalled</span> <span style="color: #aa2211">=</span> <span class="n">tryOrcaRun</span> <span style="color: #aa2211">!=</span> <span style="color: #aa2211">-</span><span style="color: #601200">2</span><span class="p">;</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">This call takes 250ms on my machine, perhaps it's better to do that asynchronously, and/or only when actually entering the screen reader page.</p>

<p style="padding: 0; margin: 8px;">Also document the magic number, please</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/D25375#inline-149419">View Inline</a><span style="color: #4b4d51; font-weight: bold;">kcmaccess.cpp:183</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(251, 175, 175, .7);">    <span class="n">KNotifyConfigWidget</span><span style="color: #aa2211">::</span><span class="n">configure</span><span class="p">(<span class="bright"></span></span><span class="bright"></span><span style="color: #aa4000"><span class="bright">this</span></span><span class="p">,</span> <span class="n">QStringLiteral</span><span class="p">(</span><span style="color: #766510">"kaccess"</span><span class="p">));</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">KNotifyConfigWidget</span><span style="color: #aa2211">::</span><span class="n">configure</span><span class="p">(<span class="bright"></span></span><span class="bright"></span><span style="color: #aa4000"><span class="bright">nullptr</span></span><span class="p">,</span> <span class="n">QStringLiteral</span><span class="p">(</span><span style="color: #766510">"kaccess"</span><span class="p">));</span>
</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;">This dialog doesn't have a transient parent now.<br />
In notifications KCM I had to create the dialog myself since we don't have a <tt style="background: #ebebeb; font-size: 13px;">QWidget</tt> 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/D25375#inline-149411">View Inline</a><span style="color: #4b4d51; font-weight: bold;">kcmaccess.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; "><span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">   <span class="bright"> </span><span style="color: #aa4000"><span class="bright">bool</span></span><span class="bright"> </span><span class="n"><span class="bright">custom</span></span><span class="bright"> </span><span style="color: #aa2211"><span class="bright">=</span></span><span class="bright"> </span><span class="n"><span class="bright">ui</span></span><span class="bright"></span><span class="p"><span class="bright">.</span></span><span class="bright"></span><span class="n"><span class="bright">customBell</span></span><span class="bright"></span><span style="color: #aa2211"><span class="bright">-></span></span><span class="bright"></span><span class="n"><span class="bright">isChecked</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(251, 175, 175, .7);">    <span class="n">ui</span><span class="p">.</span><span class="n">soundEdit</span><span style="color: #aa2211">-></span><span class="n">setEnabled</span><span class="p">(</span><span class="n">custom</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span class="n">ui</span><span class="p">.</span><span class="n">soundButton</span><span style="color: #aa2211">-></span><span class="n">setEnabled</span><span class="p">(</span><span class="n">custom</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span class="n">ui</span><span class="p">.</span><span class="n">soundLabel</span><span style="color: #aa2211">-></span><span class="n">setEnabled</span><span class="p">(</span><span class="n">custom</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span style="color: #aa4000">bool</span> <span class="n">visible</span> <span style="color: #aa2211">=</span> <span class="n">ui</span><span class="p">.</span><span class="n">visibleBell</span><span style="color: #aa2211">-></span><span class="n">isChecked</span><span class="p">();</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span class="n">ui</span><span class="p">.</span><span class="n">invertScreen</span><span style="color: #aa2211">-></span><span class="n">setEnabled</span><span class="p">(</span><span class="n">visible</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span class="n">ui</span><span class="p">.</span><span class="n">flashScreen</span><span style="color: #aa2211">-></span><span class="n">setEnabled</span><span class="p">(</span><span class="n">visible</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span class="n">ui</span><span class="p">.</span><span class="n">colorButton</span><span style="color: #aa2211">-></span><span class="n">setEnabled</span><span class="p">(</span><span class="n">visible</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span class="n">ui</span><span class="p">.</span><span class="n">duration</span><span style="color: #aa2211">-></span><span class="n">setEnabled</span><span class="p">(</span><span class="n">visible</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span style="color: #aa4000">bool</span> <span class="n">sticky</span> <span style="color: #aa2211">=</span> <span class="n">ui</span><span class="p">.</span><span class="n">stickyKeys</span><span style="color: #aa2211">-></span><span class="n">isChecked</span><span class="p">();</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span class="n">ui</span><span class="p">.</span><span class="n">stickyKeysLock</span><span style="color: #aa2211">-></span><span class="n">setEnabled</span><span class="p">(</span><span class="n">sticky</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span class="n">ui</span><span class="p">.</span><span class="n">stickyKeysAutoOff</span><span style="color: #aa2211">-></span><span class="n">setEnabled</span><span class="p">(</span><span class="n">sticky</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span class="n">ui</span><span class="p">.</span><span class="n">stickyKeysBeep</span><span style="color: #aa2211">-></span><span class="n">setEnabled</span><span class="p">(</span><span class="n">sticky</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span style="color: #aa4000">bool</span> <span class="n">slow</span> <span style="color: #aa2211">=</span> <span class="n">ui</span><span class="p">.</span><span class="n">slowKeys</span><span style="color: #aa2211">-></span><span class="n">isChecked</span><span class="p">();</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span class="n">ui</span><span class="p">.</span><span class="n">slowKeysDelay</span><span style="color: #aa2211">-></span><span class="n">setEnabled</span><span class="p">(</span><span class="n">slow</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span class="n">ui</span><span class="p">.</span><span class="n">slowKeysPressBeep</span><span style="color: #aa2211">-></span><span class="n">setEnabled</span><span class="p">(</span><span class="n">slow</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span class="n">ui</span><span class="p">.</span><span class="n">slowKeysAcceptBeep</span><span style="color: #aa2211">-></span><span class="n">setEnabled</span><span class="p">(</span><span class="n">slow</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span class="n">ui</span><span class="p">.</span><span class="n">slowKeysRejectBeep</span><span style="color: #aa2211">-></span><span class="n">setEnabled</span><span class="p">(</span><span class="n">slow</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span style="color: #aa4000">bool</span> <span class="n">bounce</span> <span style="color: #aa2211">=</span> <span class="n">ui</span><span class="p">.</span><span class="n">bounceKeys</span><span style="color: #aa2211">-></span><span class="n">isChecked</span><span class="p">();</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span class="n">ui</span><span class="p">.</span><span class="n">bounceKeysDelay</span><span style="color: #aa2211">-></span><span class="n">setEnabled</span><span class="p">(</span><span class="n">bounce</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span class="n">ui</span><span class="p">.</span><span class="n">bounceKeysRejectBeep</span><span style="color: #aa2211">-></span><span class="n">setEnabled</span><span class="p">(</span><span class="n">bounce</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span style="color: #aa4000">bool</span> <span class="n">useTimeout</span> <span style="color: #aa2211">=</span> <span class="n">ui</span><span class="p">.</span><span class="n">timeout</span><span style="color: #aa2211">-></span><span class="n">isChecked</span><span class="p">();</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">    <span class="n">ui</span><span class="p">.</span><span class="n">timeoutDelay</span><span style="color: #aa2211">-></span><span class="n">setEnabled</span><span class="p">(</span><span class="n">useTimeout</span><span class="p">);</span>
</div><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">return</span></span><span class="bright"> </span><span class="n"><span class="bright">QFileDialog</span></span><span class="bright"></span><span style="color: #aa2211"><span class="bright">::</span></span><span class="bright"></span><span class="n"><span class="bright">getOpenFileName</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">nullptr</span></span><span class="bright"></span><span class="p"><span class="bright">,</span></span><span class="bright"> </span><span class="n"><span class="bright">i18n</span></span><span class="bright"></span><span class="p"><span class="bright">(</span></span><span class="bright"></span><span style="color: #766510"><span class="bright">"Choose audio file"</span></span><span class="bright"></span><span class="p"><span class="bright">),</span></span><span class="bright"> </span><span class="n"><span class="bright">QDir</span></span><span class="bright"></span><span style="color: #aa2211"><span class="bright">::</span></span><span class="bright"></span><span class="n"><span class="bright">homePath</span></span><span class="bright"></span><span class="p"><span class="bright">(),</span></span><span class="bright"> </span><span class="n"><span class="bright">i18n</span></span><span class="bright"></span><span class="p"><span class="bright">(</span></span><span class="bright"></span><span style="color: #766510"><span class="bright">"Audio Files (*.mp3 *.wav *.ogg)"</span></span><span class="bright"></span><span class="p"><span class="bright">)</span>);</span>
</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;">Don't ever use nested event loops in QML. You can use <tt style="background: #ebebeb; font-size: 13px;">QtQuick.Dialogs</tt> <tt style="background: #ebebeb; font-size: 13px;">FileDialog</tt> for that.</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/D25375#inline-149420">View Inline</a><span style="color: #4b4d51; font-weight: bold;">kcmaccess.desktop:9</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(251, 175, 175, .7);">X-KDE-Library=kcm<span class="bright">_</span>access
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(251, 175, 175, .7);">X-KDE-Init-Symbol=kcminit_access
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">X-KDE-Library=kcmaccess
</div><div style="padding: 0 8px; margin: 0 4px; ">X-KDE-ParentApp=kcontrol
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">What about this? We still need to autostart kaccess on login.<br />
Perhaps, while at it, you could port it over to proper autostart mechanism rather than abusing kcminit for that.</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/D25375#inline-149416">View Inline</a><span style="color: #4b4d51; font-weight: bold;">kcmaccess.h:41</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">Q_PROPERTY</span><span class="p">(</span><span class="n">ScreenReaderSettings</span> <span style="color: #aa2211">*</span><span class="n">screenReaderSettings</span> <span class="n">MEMBER</span> <span class="n">m_screenReaderSettings</span> <span class="n">CONSTANT</span><span class="p">)</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">Q_PROPERTY</span><span class="p">(</span><span class="n">QString</span> <span class="n">orcaLaunchFeedback</span> <span class="n">READ</span> <span class="n">orcaLaunchFeedback</span> <span class="n">WRITE</span> <span class="n">setOrcaLaunchFeedback</span> <span class="n">NOTIFY</span> <span class="n">orcaLaunchFeedbackChanged</span><span class="p">)</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">Q_PROPERTY</span><span class="p">(</span><span class="n">QString</span> <span class="n">desktopShortcutInfo</span> <span class="n">MEMBER</span> <span class="n">m_desktopShortcutInfo</span> <span class="n">CONSTANT</span><span class="p">)</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">You're not writing to this from QML, doesn't need a <tt style="background: #ebebeb; font-size: 13px;">WRITE</tt> accessor</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/D25375#inline-149412">View Inline</a><span style="color: #4b4d51; font-weight: bold;">kcmaccess.h:42</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">Q_PROPERTY</span><span class="p">(</span><span class="n">QString</span> <span class="n">orcaLaunchFeedback</span> <span class="n">READ</span> <span class="n">orcaLaunchFeedback</span> <span class="n">WRITE</span> <span class="n">setOrcaLaunchFeedback</span> <span class="n">NOTIFY</span> <span class="n">orcaLaunchFeedbackChanged</span><span class="p">)</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">Q_PROPERTY</span><span class="p">(</span><span class="n">QString</span> <span class="n">desktopShortcutInfo</span> <span class="n">MEMBER</span> <span class="n">m_desktopShortcutInfo</span> <span class="n">CONSTANT</span><span class="p">)</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">Q_PROPERTY</span><span class="p">(</span><span style="color: #aa4000">bool</span> <span class="n">screenReaderInstalled</span> <span class="n">MEMBER</span> <span class="n">m_screenReaderInstalled</span> <span class="n">CONSTANT</span><span class="p">)</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">Where is this being used?</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/D25375#inline-149415">View Inline</a><span style="color: #4b4d51; font-weight: bold;">kcmaccess.h:52</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(251, 175, 175, .7);"><span class="bright"></span><span class="n"><span class="bright">protected</span></span> <span style="color: #a0a000">Q_S<span class="bright">LOTS</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);"><span class="bright">   </span> <span class="n">Q_S<span class="bright">CRIPTABLE</span></span><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">configureKNotify</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);">    <span class="n">Q_SCRIPTABLE</span> <span style="color: #aa4000">void</span> <span style="color: #004012">launchOrcaConfiguration</span><span class="p">();</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">We typically use <tt style="background: #ebebeb; font-size: 13px;">Q_INVOKABLE</tt> for methods exported to QML</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/D25375#inline-149417">View Inline</a><span style="color: #4b4d51; font-weight: bold;">kcmaccess.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; background: rgba(151, 234, 151, .6);"><span class="n">public</span> <span style="color: #a0a000">Q_SLOTS</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 class="n">setOrcaLaunchFeedback</span><span class="p">(</span><span style="color: #aa4000">const</span> <span class="n">QString</span><span style="color: #aa2211">&</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;">Make this <tt style="background: #ebebeb; font-size: 13px;">private</tt> and no slot</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/D25375#inline-149421">View Inline</a><span style="color: #4b4d51; font-weight: bold;">Bell.qml: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);">            <span style="color: #aa4000">placeholderText:</span> <span style="color: #004012">i18n</span><span class="p">(</span><span style="color: #766510">"Sound to Play"</span><span class="p">);</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">            <span style="color: #aa4000">text:</span> <span style="color: #004012">kcm</span><span class="p">.</span><span style="color: #004012">bellSettings</span><span class="p">.</span><span style="color: #004012">customBellFile</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">I think we generally don't use <tt style="background: #ebebeb; font-size: 13px;">placeholderText</tt> for text fields like this, where it won't be obvious what they do when there's some text inside? Consider adding a label instead.</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/D25375#inline-149422">View Inline</a><span style="color: #4b4d51; font-weight: bold;">Bell.qml:62</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: #004012">QQC2</span><span class="p">.</span><span style="color: #004012">Button</span> <span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">            <span style="color: #aa4000">text:</span> <span style="color: #004012">i18n</span><span class="p">(</span><span style="color: #766510">"Search"</span><span class="p">)</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">Typically a "browse" button is just a folder icon. (Don't forget a <tt style="background: #ebebeb; font-size: 13px;">ToolTip</tt> and <tt style="background: #ebebeb; font-size: 13px;">Accessible.name</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/D25375#inline-149423">View Inline</a><span style="color: #4b4d51; font-weight: bold;">Bell.qml:89</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">enabled:</span> <span style="color: #aa2211">!</span><span style="color: #004012">kcm</span><span class="p">.</span><span style="color: #004012">bellSettings</span><span class="p">.</span><span style="color: #004012">isImmutable</span><span class="p">(</span><span style="color: #766510">"VisibleBellInvert"</span><span class="p">)</span> <span style="color: #aa2211">&&</span> <span style="color: #004012">kcm</span><span class="p">.</span><span style="color: #004012">bellSettings</span><span class="p">.</span><span style="color: #004012">visibleBell</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">Why are you writing to a different property than you check for immutability?</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/D25375#inline-149424">View Inline</a><span style="color: #4b4d51; font-weight: bold;">Bell.qml:105</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">checked:</span> <span style="color: #aa2211">!</span><span style="color: #004012">kcm</span><span class="p">.</span><span style="color: #004012">bellSettings</span><span class="p">.</span><span style="color: #004012">invertScreen</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">            <span style="color: #aa4000">onCheckedChanged:</span> <span style="color: #004012">kcm</span><span class="p">.</span><span style="color: #004012">bellSettings</span><span class="p">.</span><span style="color: #004012">invertScreen</span> <span style="color: #aa2211">=</span> <span style="color: #aa2211">!</span><span style="color: #004012">checked</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;">onToggled</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/D25375#inline-149425">View Inline</a><span style="color: #4b4d51; font-weight: bold;">Bell.qml:113</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">color:</span> <span style="color: #004012">kcm</span><span class="p">.</span><span style="color: #004012">bellSettings</span><span class="p">.</span><span style="color: #004012">visibleBellColor</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">            <span style="color: #aa4000">onColorChanged:</span> <span style="color: #004012">kcm</span><span class="p">.</span><span style="color: #004012">bellSettings</span><span class="p">.</span><span style="color: #004012">visibleBellColor</span> <span style="color: #aa2211">=</span> <span style="color: #004012">color</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;">Use <tt style="background: #ebebeb; font-size: 13px;">onAccepted</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/D25375#inline-149426">View Inline</a><span style="color: #4b4d51; font-weight: bold;">Bell.qml: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">value:</span> <span style="color: #004012">kcm</span><span class="p">.</span><span style="color: #004012">bellSettings</span><span class="p">.</span><span style="color: #004012">visibleBellPause</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #aa4000">onValueChanged:</span> <span style="color: #004012">kcm</span><span class="p">.</span><span style="color: #004012">bellSettings</span><span class="p">.</span><span style="color: #004012">visibleBellPause</span> <span style="color: #aa2211">=</span> <span style="color: #004012">value</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;">Use <tt style="background: #ebebeb; font-size: 13px;">onValueModified</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/D25375#inline-149427">View Inline</a><span style="color: #4b4d51; font-weight: bold;">KeyboardFilters.qml: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">Kirigami.FormData.label:</span> <span style="color: #004012">i18n</span><span class="p">(</span><span style="color: #766510">"Use system bell:"</span><span class="p">)</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #aa4000">text:</span> <span style="color: #004012">i18n</span><span class="p">(</span><span style="color: #766510">"&when a key is pressed"</span><span class="p">)</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">Add some i18n context <tt style="background: #ebebeb; font-size: 13px;">i18nc("Use system bell when a key is pressed", "...")</tt><br />
Perhaps also an <tt style="background: #ebebeb; font-size: 13px;">Accessible.name</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/D25375#inline-149428">View Inline</a><span style="color: #4b4d51; font-weight: bold;">KeyboardFilters.qml:106</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">onValueChanged:</span> <span style="color: #004012">kcm</span><span class="p">.</span><span style="color: #004012">keyboardSettings</span><span class="p">.</span><span style="color: #004012">bounceDelay</span> <span style="color: #aa2211">=</span> <span style="color: #004012">value</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;">Use <tt style="background: #ebebeb; font-size: 13px;">onValueModified</tt> (and everywhere else)</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/D25375#inline-149413">View Inline</a><span style="color: #4b4d51; font-weight: bold;">ScreenReader.qml:44</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: #004012">QQC2</span><span class="p">.</span><span style="color: #004012">Label</span> <span class="p">{</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span style="color: #aa4000">text:</span> <span style="color: #004012">kcm</span><span class="p">.</span><span style="color: #004012">orcaLaunchFeedback</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;">This looks like the perfect use case for an <tt style="background: #ebebeb; font-size: 13px;">InlineMessage</tt>?</p></div></div></div></div></div><br /><div><strong>REPOSITORY</strong><div><div>R119 Plasma Desktop</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D25375">https://phabricator.kde.org/D25375</a></div></div><br /><div><strong>To: </strong>tcanabrava, ngraham, ervin<br /><strong>Cc: </strong>broulik, cblack, ervin, ognarb, mart, ngraham, plasma-devel, LeGast00n, The-Feren-OS-Dev, jraleigh, zachus, fbampaloukas, GB_2, ragreen, ZrenBot, alexeymin, himcesjf, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, ahiemstra<br /></div>