Skip to content

a lot of housekeeping - #413

Merged
psieg merged 42 commits into
psieg:masterfrom
zomfg:feature/clazy
Dec 6, 2020
Merged

a lot of housekeeping#413
psieg merged 42 commits into
psieg:masterfrom
zomfg:feature/clazy

Conversation

@zomfg

Copy link
Copy Markdown

I ran the build through clazy and it highlighted a lot of small things (still does) to improve
here are most of those things:

  • QStringLiteral (compile time QString basically)
  • new connect syntax so slots/signals are checked at build time (found few loose things this way)
    • which in some cases needs c++14, so I bumped everything to 17
      also apparently doing this through FLAGS does not work well because qmake would still append whatever the default is from mkspec, so changing this via CONFIG solves that
  • some missing consts
  • std::chrono_literals for QTimers
  • QList::reserve() where possible
  • random normal gcc/clang warnings (casts etc)

After that I tried building with Qt6 RC, and after some minor massaging it worked

  • QSettings assumes utf-8 now, so no need for setIniCodec() (which is dropped from core anyway)
  • QRegExp* is QRegularExpression* now
  • QListworks slightly differently now and does not like forward declarations for item types
    I'm not sure if there's more to be done for this part given what they say (like is it leaking as is or...)
  • couple other minor things

but just by itself this PR has like 95% of the above (so just this would not build with Qt6 for ex)

once all 3 are merged, another quick pass would be needed (this one should probably go first)

while dealing with slots and signals I did some device refactoring, mostly de-copypasta'd UDP, and fixed couple of small things on the way
there's a lot more to do there, but that'll wait another time

and finally, removed remaining QDekstopWidget usage which I started doing a while ago with some deprecations, but at the time they were saying "use these other classes/methods" which themselves used QDekstopWidget but were not flagged as deprecated for some reason and now everything gets removed in Qt6...
these changes seem to work, but I can't test multiple displays

otherwise this builds and runs on all 3 platforms

@psiegpsieg left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, just a few small notes

int count = QGuiApplication::screens().count();

result = QString("%1%2\r\n").arg(CmdResultCountMonitor).arg(count);
result = QStringLiteral("%1%2\r\n").arg(CmdResultCountMonitor).arg(count);

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When did you swtich to .arg(x,y) and when stick to .arg(X).arg(Y) ?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(QString1, QString2...) (up to 9 i think)
arg(type1).arg(type2)... which is probably equal to (QString(type1), QString(type2)...) allocation wise

virtual ~LedDeviceAlienFx();
QString name() const { return QStringLiteral("lightfx"); }
int maxLedsCount();
int defaultLedsCount() { return 1; }

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just curious, why is the maxLedsCounts in the code file but the defaultLedsCount in the header?

@zomfgzomfgDec 4, 2020

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to avoid adding enum header

Comment threadSoftware/src/LedDeviceManager.cpp
Comment threadSoftware/src/LogWriter.cpp Outdated
Comment threadSoftware/src/PluginsManager.cpp Outdated
@psieg
psieg merged commit 49f0493 into psieg:masterDec 6, 2020
@zomfg
zomfg deleted the feature/clazy branch December 6, 2020 19:40
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@zomfg@psieg
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
a lot of housekeeping by zomfg · Pull Request #413 · psieg/Lightpack · GitHub
Skip to content

a lot of housekeeping - #413

Merged
psieg merged 42 commits into
psieg:masterfrom
zomfg:feature/clazy
Dec 6, 2020
Merged

a lot of housekeeping#413
psieg merged 42 commits into
psieg:masterfrom
zomfg:feature/clazy

Conversation

@zomfg

Copy link
Copy Markdown

I ran the build through clazy and it highlighted a lot of small things (still does) to improve
here are most of those things:

  • QStringLiteral (compile time QString basically)
  • new connect syntax so slots/signals are checked at build time (found few loose things this way)
    • which in some cases needs c++14, so I bumped everything to 17
      also apparently doing this through FLAGS does not work well because qmake would still append whatever the default is from mkspec, so changing this via CONFIG solves that
  • some missing consts
  • std::chrono_literals for QTimers
  • QList::reserve() where possible
  • random normal gcc/clang warnings (casts etc)

After that I tried building with Qt6 RC, and after some minor massaging it worked

  • QSettings assumes utf-8 now, so no need for setIniCodec() (which is dropped from core anyway)
  • QRegExp* is QRegularExpression* now
  • QListworks slightly differently now and does not like forward declarations for item types
    I'm not sure if there's more to be done for this part given what they say (like is it leaking as is or...)
  • couple other minor things

but just by itself this PR has like 95% of the above (so just this would not build with Qt6 for ex)

once all 3 are merged, another quick pass would be needed (this one should probably go first)

while dealing with slots and signals I did some device refactoring, mostly de-copypasta'd UDP, and fixed couple of small things on the way
there's a lot more to do there, but that'll wait another time

and finally, removed remaining QDekstopWidget usage which I started doing a while ago with some deprecations, but at the time they were saying "use these other classes/methods" which themselves used QDekstopWidget but were not flagged as deprecated for some reason and now everything gets removed in Qt6...
these changes seem to work, but I can't test multiple displays

otherwise this builds and runs on all 3 platforms

@psiegpsieg left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, just a few small notes

int count = QGuiApplication::screens().count();

result = QString("%1%2\r\n").arg(CmdResultCountMonitor).arg(count);
result = QStringLiteral("%1%2\r\n").arg(CmdResultCountMonitor).arg(count);

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When did you swtich to .arg(x,y) and when stick to .arg(X).arg(Y) ?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(QString1, QString2...) (up to 9 i think)
arg(type1).arg(type2)... which is probably equal to (QString(type1), QString(type2)...) allocation wise

virtual ~LedDeviceAlienFx();
QString name() const { return QStringLiteral("lightfx"); }
int maxLedsCount();
int defaultLedsCount() { return 1; }

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just curious, why is the maxLedsCounts in the code file but the defaultLedsCount in the header?

@zomfgzomfgDec 4, 2020

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to avoid adding enum header

Comment threadSoftware/src/LedDeviceManager.cpp
Comment threadSoftware/src/LogWriter.cpp Outdated
Comment threadSoftware/src/PluginsManager.cpp Outdated
@psieg
psieg merged commit 49f0493 into psieg:masterDec 6, 2020
@zomfg
zomfg deleted the feature/clazy branch December 6, 2020 19:40
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@zomfg@psieg
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' a lot of housekeeping by zomfg · Pull Request #413 · psieg/Lightpack · GitHub
Skip to content

a lot of housekeeping - #413

Merged
psieg merged 42 commits into
psieg:masterfrom
zomfg:feature/clazy
Dec 6, 2020
Merged

a lot of housekeeping#413
psieg merged 42 commits into
psieg:masterfrom
zomfg:feature/clazy

Conversation

@zomfg

Copy link
Copy Markdown

I ran the build through clazy and it highlighted a lot of small things (still does) to improve
here are most of those things:

  • QStringLiteral (compile time QString basically)
  • new connect syntax so slots/signals are checked at build time (found few loose things this way)
    • which in some cases needs c++14, so I bumped everything to 17
      also apparently doing this through FLAGS does not work well because qmake would still append whatever the default is from mkspec, so changing this via CONFIG solves that
  • some missing consts
  • std::chrono_literals for QTimers
  • QList::reserve() where possible
  • random normal gcc/clang warnings (casts etc)

After that I tried building with Qt6 RC, and after some minor massaging it worked

  • QSettings assumes utf-8 now, so no need for setIniCodec() (which is dropped from core anyway)
  • QRegExp* is QRegularExpression* now
  • QListworks slightly differently now and does not like forward declarations for item types
    I'm not sure if there's more to be done for this part given what they say (like is it leaking as is or...)
  • couple other minor things

but just by itself this PR has like 95% of the above (so just this would not build with Qt6 for ex)

once all 3 are merged, another quick pass would be needed (this one should probably go first)

while dealing with slots and signals I did some device refactoring, mostly de-copypasta'd UDP, and fixed couple of small things on the way
there's a lot more to do there, but that'll wait another time

and finally, removed remaining QDekstopWidget usage which I started doing a while ago with some deprecations, but at the time they were saying "use these other classes/methods" which themselves used QDekstopWidget but were not flagged as deprecated for some reason and now everything gets removed in Qt6...
these changes seem to work, but I can't test multiple displays

otherwise this builds and runs on all 3 platforms

@psiegpsieg left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, just a few small notes

int count = QGuiApplication::screens().count();

result = QString("%1%2\r\n").arg(CmdResultCountMonitor).arg(count);
result = QStringLiteral("%1%2\r\n").arg(CmdResultCountMonitor).arg(count);

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When did you swtich to .arg(x,y) and when stick to .arg(X).arg(Y) ?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(QString1, QString2...) (up to 9 i think)
arg(type1).arg(type2)... which is probably equal to (QString(type1), QString(type2)...) allocation wise

virtual ~LedDeviceAlienFx();
QString name() const { return QStringLiteral("lightfx"); }
int maxLedsCount();
int defaultLedsCount() { return 1; }

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just curious, why is the maxLedsCounts in the code file but the defaultLedsCount in the header?

@zomfgzomfgDec 4, 2020

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to avoid adding enum header

Comment threadSoftware/src/LedDeviceManager.cpp
Comment threadSoftware/src/LogWriter.cpp Outdated
Comment threadSoftware/src/PluginsManager.cpp Outdated
@psieg
psieg merged commit 49f0493 into psieg:masterDec 6, 2020
@zomfg
zomfg deleted the feature/clazy branch December 6, 2020 19:40
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@zomfg@psieg
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' a lot of housekeeping by zomfg · Pull Request #413 · psieg/Lightpack · GitHub
Skip to content

a lot of housekeeping - #413

Merged
psieg merged 42 commits into
psieg:masterfrom
zomfg:feature/clazy
Dec 6, 2020
Merged

a lot of housekeeping#413
psieg merged 42 commits into
psieg:masterfrom
zomfg:feature/clazy

Conversation

@zomfg

Copy link
Copy Markdown

I ran the build through clazy and it highlighted a lot of small things (still does) to improve
here are most of those things:

  • QStringLiteral (compile time QString basically)
  • new connect syntax so slots/signals are checked at build time (found few loose things this way)
    • which in some cases needs c++14, so I bumped everything to 17
      also apparently doing this through FLAGS does not work well because qmake would still append whatever the default is from mkspec, so changing this via CONFIG solves that
  • some missing consts
  • std::chrono_literals for QTimers
  • QList::reserve() where possible
  • random normal gcc/clang warnings (casts etc)

After that I tried building with Qt6 RC, and after some minor massaging it worked

  • QSettings assumes utf-8 now, so no need for setIniCodec() (which is dropped from core anyway)
  • QRegExp* is QRegularExpression* now
  • QListworks slightly differently now and does not like forward declarations for item types
    I'm not sure if there's more to be done for this part given what they say (like is it leaking as is or...)
  • couple other minor things

but just by itself this PR has like 95% of the above (so just this would not build with Qt6 for ex)

once all 3 are merged, another quick pass would be needed (this one should probably go first)

while dealing with slots and signals I did some device refactoring, mostly de-copypasta'd UDP, and fixed couple of small things on the way
there's a lot more to do there, but that'll wait another time

and finally, removed remaining QDekstopWidget usage which I started doing a while ago with some deprecations, but at the time they were saying "use these other classes/methods" which themselves used QDekstopWidget but were not flagged as deprecated for some reason and now everything gets removed in Qt6...
these changes seem to work, but I can't test multiple displays

otherwise this builds and runs on all 3 platforms

@psiegpsieg left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, just a few small notes

int count = QGuiApplication::screens().count();

result = QString("%1%2\r\n").arg(CmdResultCountMonitor).arg(count);
result = QStringLiteral("%1%2\r\n").arg(CmdResultCountMonitor).arg(count);

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When did you swtich to .arg(x,y) and when stick to .arg(X).arg(Y) ?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(QString1, QString2...) (up to 9 i think)
arg(type1).arg(type2)... which is probably equal to (QString(type1), QString(type2)...) allocation wise

virtual ~LedDeviceAlienFx();
QString name() const { return QStringLiteral("lightfx"); }
int maxLedsCount();
int defaultLedsCount() { return 1; }

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just curious, why is the maxLedsCounts in the code file but the defaultLedsCount in the header?

@zomfgzomfgDec 4, 2020

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to avoid adding enum header

Comment threadSoftware/src/LedDeviceManager.cpp
Comment threadSoftware/src/LogWriter.cpp Outdated
Comment threadSoftware/src/PluginsManager.cpp Outdated
@psieg
psieg merged commit 49f0493 into psieg:masterDec 6, 2020
@zomfg
zomfg deleted the feature/clazy branch December 6, 2020 19:40
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@zomfg@psieg
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' a lot of housekeeping by zomfg · Pull Request #413 · psieg/Lightpack · GitHub
Skip to content

a lot of housekeeping - #413

Merged
psieg merged 42 commits into
psieg:masterfrom
zomfg:feature/clazy
Dec 6, 2020
Merged

a lot of housekeeping#413
psieg merged 42 commits into
psieg:masterfrom
zomfg:feature/clazy

Conversation

@zomfg

Copy link
Copy Markdown

I ran the build through clazy and it highlighted a lot of small things (still does) to improve
here are most of those things:

  • QStringLiteral (compile time QString basically)
  • new connect syntax so slots/signals are checked at build time (found few loose things this way)
    • which in some cases needs c++14, so I bumped everything to 17
      also apparently doing this through FLAGS does not work well because qmake would still append whatever the default is from mkspec, so changing this via CONFIG solves that
  • some missing consts
  • std::chrono_literals for QTimers
  • QList::reserve() where possible
  • random normal gcc/clang warnings (casts etc)

After that I tried building with Qt6 RC, and after some minor massaging it worked

  • QSettings assumes utf-8 now, so no need for setIniCodec() (which is dropped from core anyway)
  • QRegExp* is QRegularExpression* now
  • QListworks slightly differently now and does not like forward declarations for item types
    I'm not sure if there's more to be done for this part given what they say (like is it leaking as is or...)
  • couple other minor things

but just by itself this PR has like 95% of the above (so just this would not build with Qt6 for ex)

once all 3 are merged, another quick pass would be needed (this one should probably go first)

while dealing with slots and signals I did some device refactoring, mostly de-copypasta'd UDP, and fixed couple of small things on the way
there's a lot more to do there, but that'll wait another time

and finally, removed remaining QDekstopWidget usage which I started doing a while ago with some deprecations, but at the time they were saying "use these other classes/methods" which themselves used QDekstopWidget but were not flagged as deprecated for some reason and now everything gets removed in Qt6...
these changes seem to work, but I can't test multiple displays

otherwise this builds and runs on all 3 platforms

@psiegpsieg left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, just a few small notes

int count = QGuiApplication::screens().count();

result = QString("%1%2\r\n").arg(CmdResultCountMonitor).arg(count);
result = QStringLiteral("%1%2\r\n").arg(CmdResultCountMonitor).arg(count);

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When did you swtich to .arg(x,y) and when stick to .arg(X).arg(Y) ?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(QString1, QString2...) (up to 9 i think)
arg(type1).arg(type2)... which is probably equal to (QString(type1), QString(type2)...) allocation wise

virtual ~LedDeviceAlienFx();
QString name() const { return QStringLiteral("lightfx"); }
int maxLedsCount();
int defaultLedsCount() { return 1; }

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just curious, why is the maxLedsCounts in the code file but the defaultLedsCount in the header?

@zomfgzomfgDec 4, 2020

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to avoid adding enum header

Comment threadSoftware/src/LedDeviceManager.cpp
Comment threadSoftware/src/LogWriter.cpp Outdated
Comment threadSoftware/src/PluginsManager.cpp Outdated
@psieg
psieg merged commit 49f0493 into psieg:masterDec 6, 2020
@zomfg
zomfg deleted the feature/clazy branch December 6, 2020 19:40
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@zomfg@psieg
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' a lot of housekeeping by zomfg · Pull Request #413 · psieg/Lightpack · GitHub
Skip to content

a lot of housekeeping - #413

Merged
psieg merged 42 commits into
psieg:masterfrom
zomfg:feature/clazy
Dec 6, 2020
Merged

a lot of housekeeping#413
psieg merged 42 commits into
psieg:masterfrom
zomfg:feature/clazy

Conversation

@zomfg

Copy link
Copy Markdown

I ran the build through clazy and it highlighted a lot of small things (still does) to improve
here are most of those things:

  • QStringLiteral (compile time QString basically)
  • new connect syntax so slots/signals are checked at build time (found few loose things this way)
    • which in some cases needs c++14, so I bumped everything to 17
      also apparently doing this through FLAGS does not work well because qmake would still append whatever the default is from mkspec, so changing this via CONFIG solves that
  • some missing consts
  • std::chrono_literals for QTimers
  • QList::reserve() where possible
  • random normal gcc/clang warnings (casts etc)

After that I tried building with Qt6 RC, and after some minor massaging it worked

  • QSettings assumes utf-8 now, so no need for setIniCodec() (which is dropped from core anyway)
  • QRegExp* is QRegularExpression* now
  • QListworks slightly differently now and does not like forward declarations for item types
    I'm not sure if there's more to be done for this part given what they say (like is it leaking as is or...)
  • couple other minor things

but just by itself this PR has like 95% of the above (so just this would not build with Qt6 for ex)

once all 3 are merged, another quick pass would be needed (this one should probably go first)

while dealing with slots and signals I did some device refactoring, mostly de-copypasta'd UDP, and fixed couple of small things on the way
there's a lot more to do there, but that'll wait another time

and finally, removed remaining QDekstopWidget usage which I started doing a while ago with some deprecations, but at the time they were saying "use these other classes/methods" which themselves used QDekstopWidget but were not flagged as deprecated for some reason and now everything gets removed in Qt6...
these changes seem to work, but I can't test multiple displays

otherwise this builds and runs on all 3 platforms

@psiegpsieg left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, just a few small notes

int count = QGuiApplication::screens().count();

result = QString("%1%2\r\n").arg(CmdResultCountMonitor).arg(count);
result = QStringLiteral("%1%2\r\n").arg(CmdResultCountMonitor).arg(count);

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When did you swtich to .arg(x,y) and when stick to .arg(X).arg(Y) ?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(QString1, QString2...) (up to 9 i think)
arg(type1).arg(type2)... which is probably equal to (QString(type1), QString(type2)...) allocation wise

virtual ~LedDeviceAlienFx();
QString name() const { return QStringLiteral("lightfx"); }
int maxLedsCount();
int defaultLedsCount() { return 1; }

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just curious, why is the maxLedsCounts in the code file but the defaultLedsCount in the header?

@zomfgzomfgDec 4, 2020

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to avoid adding enum header

Comment threadSoftware/src/LedDeviceManager.cpp
Comment threadSoftware/src/LogWriter.cpp Outdated
Comment threadSoftware/src/PluginsManager.cpp Outdated
@psieg
psieg merged commit 49f0493 into psieg:masterDec 6, 2020
@zomfg
zomfg deleted the feature/clazy branch December 6, 2020 19:40
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@zomfg@psieg
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' a lot of housekeeping by zomfg · Pull Request #413 · psieg/Lightpack · GitHub
Skip to content

a lot of housekeeping - #413

Merged
psieg merged 42 commits into
psieg:masterfrom
zomfg:feature/clazy
Dec 6, 2020
Merged

a lot of housekeeping#413
psieg merged 42 commits into
psieg:masterfrom
zomfg:feature/clazy

Conversation

@zomfg

Copy link
Copy Markdown

I ran the build through clazy and it highlighted a lot of small things (still does) to improve
here are most of those things:

  • QStringLiteral (compile time QString basically)
  • new connect syntax so slots/signals are checked at build time (found few loose things this way)
    • which in some cases needs c++14, so I bumped everything to 17
      also apparently doing this through FLAGS does not work well because qmake would still append whatever the default is from mkspec, so changing this via CONFIG solves that
  • some missing consts
  • std::chrono_literals for QTimers
  • QList::reserve() where possible
  • random normal gcc/clang warnings (casts etc)

After that I tried building with Qt6 RC, and after some minor massaging it worked

  • QSettings assumes utf-8 now, so no need for setIniCodec() (which is dropped from core anyway)
  • QRegExp* is QRegularExpression* now
  • QListworks slightly differently now and does not like forward declarations for item types
    I'm not sure if there's more to be done for this part given what they say (like is it leaking as is or...)
  • couple other minor things

but just by itself this PR has like 95% of the above (so just this would not build with Qt6 for ex)

once all 3 are merged, another quick pass would be needed (this one should probably go first)

while dealing with slots and signals I did some device refactoring, mostly de-copypasta'd UDP, and fixed couple of small things on the way
there's a lot more to do there, but that'll wait another time

and finally, removed remaining QDekstopWidget usage which I started doing a while ago with some deprecations, but at the time they were saying "use these other classes/methods" which themselves used QDekstopWidget but were not flagged as deprecated for some reason and now everything gets removed in Qt6...
these changes seem to work, but I can't test multiple displays

otherwise this builds and runs on all 3 platforms

@psiegpsieg left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, just a few small notes

int count = QGuiApplication::screens().count();

result = QString("%1%2\r\n").arg(CmdResultCountMonitor).arg(count);
result = QStringLiteral("%1%2\r\n").arg(CmdResultCountMonitor).arg(count);

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When did you swtich to .arg(x,y) and when stick to .arg(X).arg(Y) ?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(QString1, QString2...) (up to 9 i think)
arg(type1).arg(type2)... which is probably equal to (QString(type1), QString(type2)...) allocation wise

virtual ~LedDeviceAlienFx();
QString name() const { return QStringLiteral("lightfx"); }
int maxLedsCount();
int defaultLedsCount() { return 1; }

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just curious, why is the maxLedsCounts in the code file but the defaultLedsCount in the header?

@zomfgzomfgDec 4, 2020

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to avoid adding enum header

Comment threadSoftware/src/LedDeviceManager.cpp
Comment threadSoftware/src/LogWriter.cpp Outdated
Comment threadSoftware/src/PluginsManager.cpp Outdated
@psieg
psieg merged commit 49f0493 into psieg:masterDec 6, 2020
@zomfg
zomfg deleted the feature/clazy branch December 6, 2020 19:40
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@zomfg@psieg
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); a lot of housekeeping by zomfg · Pull Request #413 · psieg/Lightpack · GitHub
Skip to content

a lot of housekeeping - #413

Merged
psieg merged 42 commits into
psieg:masterfrom
zomfg:feature/clazy
Dec 6, 2020
Merged

a lot of housekeeping#413
psieg merged 42 commits into
psieg:masterfrom
zomfg:feature/clazy

Conversation

@zomfg

Copy link
Copy Markdown

I ran the build through clazy and it highlighted a lot of small things (still does) to improve
here are most of those things:

  • QStringLiteral (compile time QString basically)
  • new connect syntax so slots/signals are checked at build time (found few loose things this way)
    • which in some cases needs c++14, so I bumped everything to 17
      also apparently doing this through FLAGS does not work well because qmake would still append whatever the default is from mkspec, so changing this via CONFIG solves that
  • some missing consts
  • std::chrono_literals for QTimers
  • QList::reserve() where possible
  • random normal gcc/clang warnings (casts etc)

After that I tried building with Qt6 RC, and after some minor massaging it worked

  • QSettings assumes utf-8 now, so no need for setIniCodec() (which is dropped from core anyway)
  • QRegExp* is QRegularExpression* now
  • QListworks slightly differently now and does not like forward declarations for item types
    I'm not sure if there's more to be done for this part given what they say (like is it leaking as is or...)
  • couple other minor things

but just by itself this PR has like 95% of the above (so just this would not build with Qt6 for ex)

once all 3 are merged, another quick pass would be needed (this one should probably go first)

while dealing with slots and signals I did some device refactoring, mostly de-copypasta'd UDP, and fixed couple of small things on the way
there's a lot more to do there, but that'll wait another time

and finally, removed remaining QDekstopWidget usage which I started doing a while ago with some deprecations, but at the time they were saying "use these other classes/methods" which themselves used QDekstopWidget but were not flagged as deprecated for some reason and now everything gets removed in Qt6...
these changes seem to work, but I can't test multiple displays

otherwise this builds and runs on all 3 platforms

@psiegpsieg left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, just a few small notes

int count = QGuiApplication::screens().count();

result = QString("%1%2\r\n").arg(CmdResultCountMonitor).arg(count);
result = QStringLiteral("%1%2\r\n").arg(CmdResultCountMonitor).arg(count);

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When did you swtich to .arg(x,y) and when stick to .arg(X).arg(Y) ?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(QString1, QString2...) (up to 9 i think)
arg(type1).arg(type2)... which is probably equal to (QString(type1), QString(type2)...) allocation wise

virtual ~LedDeviceAlienFx();
QString name() const { return QStringLiteral("lightfx"); }
int maxLedsCount();
int defaultLedsCount() { return 1; }

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just curious, why is the maxLedsCounts in the code file but the defaultLedsCount in the header?

@zomfgzomfgDec 4, 2020

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to avoid adding enum header

Comment threadSoftware/src/LedDeviceManager.cpp
Comment threadSoftware/src/LogWriter.cpp Outdated
Comment threadSoftware/src/PluginsManager.cpp Outdated
@psieg
psieg merged commit 49f0493 into psieg:masterDec 6, 2020
@zomfg
zomfg deleted the feature/clazy branch December 6, 2020 19:40
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@zomfg@psieg