JS8Call-Improved master
Loading...
Searching...
No Matches
styles.h
Go to the documentation of this file.
1
10
11#pragma once
12#include <QtCore/QOperatingSystemVersion>
13#include <QtCore/QString>
14#include <QtGlobal>
15#include <QtGui/QGuiApplication>
16#include <QHBoxLayout>
17#include <QSlider>
18#include <QLabel>
19#include <QWidget>
20
51static inline QString statusLabelStyle(const QString &bg = "#6699ff",
52 const QString &fg = "#000000") {
53#if defined(Q_OS_MACOS)
54 return QStringLiteral("QLabel{background-color: %1; color: %2; "
55 "border-radius: 6px; padding: 2px 8px; "
56 "border: 1px solid rgba(0,0,0,0.15)}")
57 .arg(bg, fg);
58#elif defined(Q_OS_WIN)
59 return QStringLiteral("QLabel{background-color:%1; color:%2; "
60 "border-radius:4px; padding:0px 8px; "
61 "border:1px solid rgba(0,0,0,0.25)}")
62 .arg(bg, fg);
63#else // Linux/other
64 return QStringLiteral("QLabel{background-color:%1; color:%2; "
65 "border-radius:1px; padding:1px 6px; "
66 "border:1px inset rgba(0,0,0,0.18)}")
67 .arg(bg, fg);
68#endif
69}
70
71enum class TxStatusAppearance {
72 Receiving, // green on black text
73 Transmitting, // red
74 Decoding, // same as Receiving
75 IdleTimeout // black bg, white fg
76};
77
78QString txStatusLabelStyle(TxStatusAppearance appearance);
79
80static inline QString makeStyle(const QString &bg, const QString &fg) {
81#if defined(Q_OS_LINUX)
82 return QString("QLabel{background-color:%1; color:%2; "
83 "border-radius:1px; padding:1px 6px; "
84 "border:1px inset rgba(0,0,0,0.18);}")
85 .arg(bg, fg);
86#elif defined(Q_OS_WIN)
87 return QString("QLabel{background-color:%1; color:%2; "
88 "border-radius:4px; padding:0px 8px; "
89 "border:1px solid rgba(0,0,0,0.25);}")
90 .arg(bg, fg);
91#elif defined(Q_OS_MACOS)
92 return QString("QLabel{background-color:%1; color:%2; "
93 "border-radius:6px; padding:2px 8px; "
94 "border:1px solid rgba(0,0,0,0.15);}")
95 .arg(bg, fg);
96#else
97 return QString("QLabel{background-color:%1; color:%2;}").arg(bg, fg);
98#endif
99}
100
101inline QString txStatusLabelStyle(TxStatusAppearance appearance) {
102 switch (appearance) {
103 case TxStatusAppearance::Receiving:
104 return makeStyle("#22ff22", "#000000");
105 case TxStatusAppearance::Transmitting:
106 return makeStyle("#ff2222", "#000000");
107 case TxStatusAppearance::Decoding:
108 return makeStyle("#22ff22", "#000000");
109 case TxStatusAppearance::IdleTimeout:
110 return makeStyle("#000000", "#ffffff");
111 default:
112 return QString(); // no style for compiler fallback
113 }
114}
115
132static inline QString progress_bar_stylesheet(bool small = false) {
133 const QString base = QString("QProgressBar {"
134 " border: 0px;"
135 " background-color: #ffffff;"
136 " color: #000000;"
137 " text-align: center;"
138 " padding: 0px;"
139 " %1"
140 "}"
141 "QProgressBar::chunk {"
142 " background-color: #a5cdff;"
143 " border-radius: %2px;"
144 " %3"
145 "}");
146
147 const int height = small ? 10 : 14; // overall control height
148 const int radius = small ? 3 : 5; // roundness of the bar ends
149 const QString barDim =
150 QString("min-height:%1px; max-height:%1px; border-radius:%2px;")
151 .arg(height)
152 .arg(radius);
153 const QString chunkDim = QString("min-height:%1px;").arg(height);
154 return base.arg(barDim, QString::number(radius), chunkDim);
155}
156
179inline QString buttonStyle() {
180#if defined(Q_OS_WIN)
181 return R"(
182 QPushButton {
183 background-color: #6699ff;
184 color: black;
185 border: none;
186 border-radius: 4px;
187 padding: 3px 9px;
188 min-height: 15px;
189 max-height: 15px;
190 font-family: "Segoe UI";
191 }
192 QPushButton:hover {
193 background-color: #4d7fff;
194 color: white;
195 }
196 QPushButton:pressed {
197 background-color: #003EAA;
198 }
199 QPushButton:disabled {
200 background-color: #ececec;
201 color: #888888;
202 }
203 )";
204
205#elif defined(Q_OS_MACOS)
206 return R"(
207 QPushButton {
208 background-color: #6699ff;
209 color: black;
210 border: none;
211 border-radius: 6px;
212 padding: 3px 9px;
213 min-height: 15px;
214 max-height: 15px;
215 font-family: "-apple-system";
216 }
217 QPushButton:hover {
218 background-color: #4d7fff;
219 color: white;
220 }
221 QPushButton:pressed {
222 background-color: #003EAA;
223 }
224 QPushButton:disabled {
225 background-color: #ececec;
226 color: #888888;
227 }
228 )";
229
230#elif defined(Q_OS_LINUX)
231 return R"(
232 QPushButton {
233 background-color: #6699ff;
234 color: black;
235 border: none;
236 border-radius: 5px;
237 padding: px 9px;
238 font-family: "Ubuntu", "Noto Sans";
239 }
240 QPushButton:hover {
241 background-color: #4d7fff;
242 }
243 QPushButton:pressed {
244 background-color: #003EAA;
245 }
246 QPushButton:disabled {
247 background-color: #ececec;
248 color: #888888;
249 }
250 )";
251
252#else
253 return QString();
254#endif
255}
256
257// defines the background, color, font and size of the header bar frequency
258// display, the #else section contains the definitions for linux
259static inline QString logFrameStyle() {
260#if defined(Q_OS_MACOS)
261 return QStringLiteral("QFrame#frame { background-color: #F2F2F0; }"
262 "QLabel#currentFreq {"
263 " color: #39FF14;"
264 " background-color: black;"
265 " border-radius:6px; padding:0px 8px; "
266 " font-family: Monaco, 'Courier New', monospace;"
267 " font-size: 20pt;"
268 " font-weight: bold;"
269 " min-width: 200px;"
270 " min-height: 40px;"
271 "}");
272#elif defined(Q_OS_WIN)
273 return QStringLiteral("QFrame#frame { background-color: #DDEEFF; }"
274 "QLabel#currentFreq {"
275 " color: #39FF14;"
276 " background-color: black;"
277 " border-radius:4px; padding:0px 8px; "
278 " font-family: Consolas, 'Courier New', monospace;"
279 " font-size: 20pt;"
280 " font-weight: bold;"
281 " min-width: 200px;"
282 " min-height: 40px;"
283 "}");
284#else
285 return QStringLiteral("QFrame#frame { background-color: #F2F2F0; }"
286 "QLabel#currentFreq {"
287 " color: #39FF14;"
288 " background-color: black;"
289 " border-radius:0px; padding:0px 8px; "
290 " font-size: 28pt;"
291 " font-weight: bold;"
292 " min-width: 200px;"
293 " min-height: 40px;"
294 "}");
295#endif
296}
297
315#if defined(Q_OS_MACOS)
316namespace Styles {
317
318constexpr const char *LogWidgetStyle =
319 "QFrame#logWidget { background-color: #F2F2F0; }";
320
321constexpr const char *DialFreqUpDownButtonStyle =
322 "QPushButton {"
323 " background-color: #000000;"
324 " color: #39FF14;"
325 " font-size: 10pt;"
326 " border:0px solid;"
327 " border-radius:2px;"
328 "}"
329 "QPushButton:pressed {"
330 " background-color: #222;"
331 "}";
332
333class OffsetSliderWidget : public QWidget {
334 public:
335 explicit OffsetSliderWidget(QWidget *parent = nullptr) : QWidget(parent) {
336 auto *layout = new QHBoxLayout(this);
337 auto *caption = new QLabel("Offset:", this);
338 caption->setStyleSheet("QLabel { color: black; }");
339 slider = new QSlider(Qt::Horizontal, this);
340 // Lock the QSlider's appearance regardless of the system theme
341 slider->setStyleSheet(R"(
342 QSlider {
343 background: transparent;
344 min-height: 24px;
345 }
346 QSlider::groove:horizontal {
347 border: 1px solid #b0b0b0;
348 height: 6px;
349 background: #a5cdff;
350 border-radius: 3px;
351 }
352 QSlider::handle:horizontal {
353 background: #6699ff;
354 border: 1px solid #c2c8d1;
355 width: 16px;
356 margin: -3px 0;
357 border-radius: 6px;
358 }
359 QSlider::sub-page:horizontal {
360 background: #a5cdff;
361 border-radius: 3px;
362 }
363 QSlider::add-page:horizontal {
364 background: #e0e0e0;
365 border-radius: 3px;
366 }
367 )");
368 slider->setRange(0, 3000);
369 slider->setValue(1500);
370 valueLabel = new QLabel("0 Hz", this);
371 valueLabel->setStyleSheet("QLabel { color: black; }");
372 valueLabel->setMinimumWidth(60);
373 layout->addWidget(caption);
374 layout->addWidget(slider, 1);
375 layout->addWidget(valueLabel);
376 connect(slider, &QSlider::valueChanged, this, [this](int val) {
377 valueLabel->setText(QString("%1 Hz").arg(val));
378 if (onValueChanged) onValueChanged(val);
379 });
380 }
381
382 int offset() const { return slider->value(); }
383 void setValue(int hz) { slider->setValue(hz); }
384 void setOnValueChanged(std::function<void(int)> cb) { onValueChanged = cb; }
385
386 private:
387 QSlider *slider;
388 QLabel *valueLabel;
389 std::function<void(int)> onValueChanged;
390};
391
392constexpr const char *LabCallsignStyle = "QLabel {"
393 " font-size: 12pt;"
394 " line-height:12pt;"
395 " color : black;"
396 "}";
397
398constexpr const char *LabUTCStyle =
399 "QLabel {"
400 " border-radius:6px;"
401 " font-size: 14pt;"
402 " line-height:14pt;"
403 " font-family: Monaco, 'Courier New', monospace;"
404 " font-weight: bold;"
405 " background-color: black;"
406 " color : #39FF14;"
407 "}";
408
409constexpr const char *ButtonGridStyle =
410 "QPushButton {"
411 " background-color:lightgray;"
412 " padding:0.25em 0.25em; font-weight:normal;"
413 " border-style:solid;"
414 " border-width:0px;"
415 " border-radius:6px;"
416 "}"
417 "QPushButton:checked {"
418 " background-color:#6699ff;"
419 "}";
420
421constexpr const char *MonitorTxButtonStyle =
422 "QPushButton {"
423 " background-color:lightgray;"
424 " color:black;"
425 " padding:0.25em 0.25em; font-weight:normal;"
426 " border-style:solid;"
427 " border-width:0px;"
428 " border-radius:6px;"
429 "}"
430 "QPushButton:checked {"
431 " background-color:#22FF22;"
432 " color:black;"
433 "}"
434 "QPushButton[transmitting=\"true\"] {"
435 " background-color:#FF2222;"
436 " color:black;"
437 "}";
438
439constexpr const char *MonitorButtonStyle =
440 "QPushButton {"
441 " background-color:lightgray;"
442 " color:black;"
443 " padding:0.25em 0.25em; font-weight:normal;"
444 " border-style:solid;"
445 " border-width:0px;"
446 " border-radius:6px;"
447 "}"
448 "QPushButton:checked {"
449 " background-color:#22FF22;"
450 " color:black;"
451 "}";
452
453constexpr const char *LogQSOButtonStyle =
454 "QPushButton {"
455 " background-color:#6699ff;"
456 " color:black;"
457 " padding:0.25em 0.25em; font-weight:normal;"
458 " border-style:solid;"
459 " border-width:0px;"
460 " border-radius:6px;"
461 "}"
462 "QPushButton:checked {"
463 " background-color:#6699ff;"
464 " color:black;"
465 "}";
466
467constexpr const char *TuneButtonStyle =
468 "QPushButton {"
469 " background-color:lightgray;"
470 " color:black;"
471 " padding:0.25em 0.25em; font-weight:normal;"
472 " border-style:solid;"
473 " border-width:0px;"
474 " border-radius:6px;"
475 "}"
476 "QPushButton:checked {"
477 " background-color:#6699ff;"
478 " color:black;"
479 "}";
480
481constexpr const char *ModeButtonStyle =
482 "QPushButton {"
483 " padding:0.25em 0.25em; font-weight:bold;"
484 " border-style:solid;"
485 " border-width:0px;"
486 " border-radius:6px;"
487 " background-color:#6699ff;"
488 " color:black;"
489 "}"
490 "QPushButton:checked {"
491 " background-color:#6699ff;"
492 " color:black;"
493 "}";
494
495constexpr const char *SpotButtonStyle =
496 "QPushButton {"
497 " background-color:lightgray;"
498 " color:black;"
499 " padding:0.25em 0.25em; font-weight:normal;"
500 " border-style:solid;"
501 " border-width:0px;"
502 " border-radius:6px;"
503 "}"
504 "QPushButton:checked {"
505 " background-color:#6699ff;"
506 " color:black;"
507 "}";
508
509}
510#elif defined(Q_OS_WIN)
511namespace Styles {
512
513constexpr const char *LogWidgetStyle =
514 "QFrame#logWidget { background-color: #DDEEFF; }";
515
516constexpr const char *DialFreqUpDownButtonStyle =
517 "QPushButton {"
518 " background-color: #000000;"
519 " color: #39FF14;"
520 " font-size: 12pt;"
521 " border:0px solid;"
522 " border-radius:2px;"
523 "}"
524 "QPushButton:pressed {"
525 " background-color: #222;"
526 "}";
527
528class OffsetSliderWidget : public QWidget {
529 public:
530 explicit OffsetSliderWidget(QWidget *parent = nullptr) : QWidget(parent) {
531 auto *layout = new QHBoxLayout(this);
532 auto *caption = new QLabel("Offset:", this);
533 caption->setStyleSheet("QLabel { color: black; }");
534 slider = new QSlider(Qt::Horizontal, this);
535 // Lock the QSlider's appearance regardless of the system theme
536 slider->setStyleSheet(R"(
537 QSlider {
538 background: transparent;
539 min-height: 24px;
540 }
541 QSlider::groove:horizontal {
542 border: 1px solid #b0b0b0;
543 height: 6px;
544 background: #a5cdff;
545 border-radius: 3px;
546 }
547 QSlider::handle:horizontal {
548 background: #6699ff;
549 border: 1px solid #c2c8d1;
550 width: 16px;
551 margin: -3px 0;
552 border-radius: 5px;
553 }
554 QSlider::sub-page:horizontal {
555 background: #a5cdff;
556 border-radius: 3px;
557 }
558 QSlider::add-page:horizontal {
559 background: #e0e0e0;
560 border-radius: 3px;
561 }
562 )");
563 slider->setRange(0, 3000);
564 slider->setValue(1500);
565 valueLabel = new QLabel("0 Hz", this);
566 valueLabel->setStyleSheet("QLabel { color: black; }");
567 valueLabel->setMinimumWidth(60);
568 layout->addWidget(caption);
569 layout->addWidget(slider, 1);
570 layout->addWidget(valueLabel);
571 connect(slider, &QSlider::valueChanged, this, [this](int val) {
572 valueLabel->setText(QString("%1 Hz").arg(val));
573 if (onValueChanged) onValueChanged(val);
574 });
575 }
576
577 int offset() const { return slider->value(); }
578 void setValue(int hz) { slider->setValue(hz); }
579 void setOnValueChanged(std::function<void(int)> cb) { onValueChanged = cb; }
580
581 private:
582 QSlider *slider;
583 QLabel *valueLabel;
584 std::function<void(int)> onValueChanged;
585};
586
587constexpr const char *LabCallsignStyle = "QLabel {"
588 " font-size: 12pt;"
589 " line-height:12pt;"
590 " color : black;"
591 "}";
592
593constexpr const char *LabUTCStyle =
594 "QLabel {"
595 " border-radius:4px;"
596 " font-size: 14pt;"
597 " line-height:14pt;"
598 " font-family: Consolas, 'Courier New', monospace;"
599 " font-weight: bold;"
600 " background-color: black;"
601 " color : #39FF14;"
602 "}";
603
604constexpr const char *ButtonGridStyle =
605 "QPushButton {"
606 " background-color:lightgray;"
607 " padding:0.25em 0.25em; font-weight:normal;"
608 " border-style:solid;"
609 " border-width:0px;"
610 " border-radius:4px;"
611 "}"
612 "QPushButton:checked {"
613 " background-color:#6699ff;"
614 "}";
615
616constexpr const char *MonitorTxButtonStyle =
617 "QPushButton {"
618 " background-color:lightgray;"
619 " color:black;"
620 " padding:0.25em 0.25em; font-weight:normal;"
621 " border-style:solid;"
622 " border-width:0px;"
623 " border-radius:4px;"
624 "}"
625 "QPushButton:checked {"
626 " background-color:#22FF22;"
627 " color:black;"
628 "}"
629 "QPushButton[transmitting=\"true\"] {"
630 " background-color:#FF2222;"
631 " color:black;"
632 "}";
633
634constexpr const char *MonitorButtonStyle =
635 "QPushButton {"
636 " background-color:lightgray;"
637 " color:black;"
638 " padding:0.25em 0.25em; font-weight:normal;"
639 " border-style:solid;"
640 " border-width:0px;"
641 " border-radius:4px;"
642 "}"
643 "QPushButton:checked {"
644 " background-color:#22FF22;"
645 " color:black;"
646 "}";
647
648constexpr const char *LogQSOButtonStyle =
649 "QPushButton {"
650 " background-color:lightgray;"
651 " color:black;"
652 " padding:0.25em 0.25em; font-weight:normal;"
653 " border-style:solid;"
654 " border-width:0px;"
655 " border-radius:4px;"
656 "}"
657 "QPushButton:checked {"
658 " background-color:#6699ff;"
659 " color:black;"
660 "}";
661
662constexpr const char *TuneButtonStyle = LogQSOButtonStyle; // Same as above
663
664constexpr const char *ModeButtonStyle =
665 "QPushButton {"
666 " padding:0.25em 0.25em; font-weight:bold;"
667 " border-style:solid;"
668 " border-width:0px;"
669 " border-radius:4px;"
670 " background-color:#6699ff;"
671 " color:black;"
672 "}"
673 "QPushButton:checked {"
674 " background-color:#6699ff;"
675 " color:black;"
676 "}";
677
678constexpr const char *SpotButtonStyle =
679 "QPushButton {"
680 " background-color:lightgray;"
681 " color:black;"
682 " padding:0.25em 0.25em; font-weight:normal;"
683 " border-style:solid;"
684 " border-width:0px;"
685 " border-radius:4px;"
686 "}"
687 "QPushButton:checked {"
688 " background-color:#6699ff;"
689 " color:black;"
690 "}";
691
692}
693#else
694namespace Styles {
695
696// background color of the header bar - must be the same as the frequency display above
697constexpr const char *LogWidgetStyle =
698 "QFrame#logWidget { background-color: #F2F2F0; }";
699
700// definition of the frequency displqy for the up/down buttons
701constexpr const char *DialFreqUpDownButtonStyle =
702 "QPushButton {"
703 " background-color: #000000;"
704 " color: #39FF14;"
705 " font-size: 12pt;"
706 " border:1px solid;"
707 " border-radius:0px;"
708 "}"
709 "QPushButton:pressed {"
710 " background-color: #222;"
711 "}";
712
713class OffsetSliderWidget : public QWidget {
714 public:
715 explicit OffsetSliderWidget(QWidget *parent = nullptr) : QWidget(parent) {
716 auto *layout = new QHBoxLayout(this);
717 auto *caption = new QLabel("Offset:", this);
718 caption->setStyleSheet("QLabel { color: black; }");
719 slider = new QSlider(Qt::Horizontal, this);
720 // Lock the QSlider's appearance regardless of the system theme
721 slider->setStyleSheet(R"(
722 QSlider {
723 background: transparent;
724 min-height: 24px;
725 }
726 QSlider::groove:horizontal {
727 border: 1px solid #b0b0b0;
728 height: 6px;
729 background: #a5cdff;
730 border-radius: 3px;
731 }
732 QSlider::handle:horizontal {
733 background: #6699ff;
734 border: 1px solid #c2c8d1;
735 width: 16px;
736 margin: -3px 0;
737 border-radius: 5px;
738 }
739 QSlider::sub-page:horizontal {
740 background: #a5cdff;
741 border-radius: 3px;
742 }
743 QSlider::add-page:horizontal {
744 background: #e0e0e0;
745 border-radius: 3px;
746 }
747 )");
748 slider->setRange(0, 3000);
749 slider->setValue(1500);
750 valueLabel = new QLabel("0 Hz", this);
751 valueLabel->setStyleSheet("QLabel { color: black; }");
752 valueLabel->setMinimumWidth(60);
753 layout->addWidget(caption);
754 layout->addWidget(slider, 1);
755 layout->addWidget(valueLabel);
756 connect(slider, &QSlider::valueChanged, this, [this](int val) {
757 valueLabel->setText(QString("%1 Hz").arg(val));
758 if (onValueChanged) onValueChanged(val);
759 });
760 }
761
762 int offset() const { return slider->value(); }
763 void setValue(int hz) { slider->setValue(hz); }
764 void setOnValueChanged(std::function<void(int)> cb) { onValueChanged = cb; }
765
766 private:
767 QSlider *slider;
768 QLabel *valueLabel;
769 std::function<void(int)> onValueChanged;
770};
771
772// definition of the display of the callsign label
773constexpr const char *LabCallsignStyle = "QLabel {"
774 " font-size: 14pt;"
775 " line-height:12pt;"
776 " color : black;"
777 "}";
778
779// definition of the display of the of the date/time label
780constexpr const char *LabUTCStyle =
781 "QLabel {"
782 " border-radius:0px;"
783 " font-size: 18pt;"
784 " line-height:18pt;"
785 " font-family: \"DejaVu Sans Mono\", \"Liberation Mono\", \"Noto Mono\", \"Ubuntu Mono\", monospace;"
786 " font-weight: bold;"
787 " background-color: black;"
788 " color : #39FF14;"
789 "}";
790
791// defintion of the display of the button grid
792constexpr const char *ButtonGridStyle =
793 "QPushButton {"
794 " background-color:lightgray;"
795 " padding:0.25em 0.25em; font-weight:normal;"
796 " border-style:solid;"
797 " border-width:0px;"
798 " border-radius:0px;"
799 "}"
800 "QPushButton:checked {"
801 " background-color:#6699ff;"
802 "}";
803
804// defintion of the display of the Tx button
805constexpr const char *MonitorTxButtonStyle =
806 "QPushButton {"
807 " background-color:lightgray;"
808 " padding:0.25em 0.25em; font-weight:normal;"
809 " border-style:solid;"
810 " border-width:0px;"
811 " border-radius:0px;"
812 "}"
813 "QPushButton:checked {"
814 " background-color:#22FF22;"
815 "}"
816 "QPushButton[transmitting=\"true\"] {"
817 " background-color:#FF2222;"
818 "}";
819
820// definition of the display of the Rx button
821constexpr const char *MonitorButtonStyle =
822 "QPushButton {"
823 " background-color:lightgray;"
824 " padding:0.25em 0.25em; font-weight:normal;"
825 " border-style:solid;"
826 " border-width:0px;"
827 " border-radius:0px;"
828 "}"
829 "QPushButton:checked {"
830 " background-color:#22FF22;"
831 "}";
832
833// defintion of the display of the Log and Tune buttons
834constexpr const char *LogQSOButtonStyle =
835 "QPushButton {"
836 " background-color:lightgray;"
837 " padding:0.25em 0.25em; font-weight:normal;"
838 " border-style:solid;"
839 " border-width:0px;"
840 " border-radius:0px;"
841 "}"
842 "QPushButton:checked {"
843 " background-color:#6699ff;"
844 "}";
845
846constexpr const char *TuneButtonStyle = LogQSOButtonStyle; // Same as above
847
848// definition of the display of the Mode button
849constexpr const char *ModeButtonStyle =
850 "QPushButton {"
851 " padding:0.25em 0.25em; font-weight:bold;"
852 " border-style:solid;"
853 " border-width:0px;"
854 " border-radius:0px;"
855 " background-color:#6699ff;"
856 "}"
857 "QPushButton:checked {"
858 " background-color:#6699ff;"
859 "}";
860
861// defintion of the display of the Spot button
862constexpr const char *SpotButtonStyle =
863 "QPushButton {"
864 " background-color:lightgray;"
865 " padding:0.25em 0.25em; font-weight:normal;"
866 " border-style:solid;"
867 " border-width:0px;"
868 " border-radius:0px;"
869 "}"
870 "QPushButton:checked {"
871 " background-color:#6699ff;"
872 "}";
873
874}
875#endif
876
Definition styles.h:713
Defines platform-specific style constants for JS8Call's header bar controls.
QString buttonStyle()
Returns a platform-native QPushButton stylesheet.
Definition styles.h:179
QString txStatusLabelStyle(TxStatusAppearance appearance)
Returns the QSS stylesheet string for a given TX status state.
Definition styles.h:101