From 7f2334513e2ed1f66012668eaebdebfb799b77fb Mon Sep 17 00:00:00 2001 From: caoyuhui <1152604503@qq.com> Date: Thu, 12 Sep 2024 15:01:40 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=A2=E5=A4=96=E6=A3=80=E6=B5=8B=E5=BC=80?= =?UTF-8?q?=E5=85=B3=E4=BF=AE=E6=94=B9=E4=B8=BA=E5=BC=80=E5=85=B3=E6=A0=B7?= =?UTF-8?q?=E5=BC=8F=EF=BC=8C=E5=88=A0=E9=99=A4=E8=A7=82=E7=9E=84=E5=9E=8B?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PayloadAPP.pro | 2 + Src/GDDC/gddcCmdDlg.cpp | 48 +++++++++--------- Src/GDDC/gddcCmdDlg.h | 3 ++ Src/GDDC/gddcCmdDlg.ui | 94 ++++++++++++++++++----------------- imageswitch.cpp | 89 +++++++++++++++++++++++++++++++++ imageswitch.h | 56 +++++++++++++++++++++ mainwindow.qrc | 8 +++ res/switch/switch_close.png | Bin 0 -> 1730 bytes res/switch/switch_close1.png | Bin 0 -> 465 bytes res/switch/switch_close2.png | Bin 0 -> 464 bytes res/switch/switch_close3.png | Bin 0 -> 1911 bytes res/switch/switch_open.png | Bin 0 -> 1760 bytes res/switch/switch_open1.png | Bin 0 -> 330 bytes res/switch/switch_open2.png | Bin 0 -> 328 bytes res/switch/switch_open3.png | Bin 0 -> 1626 bytes 15 files changed, 231 insertions(+), 69 deletions(-) create mode 100644 imageswitch.cpp create mode 100644 imageswitch.h create mode 100644 res/switch/switch_close.png create mode 100644 res/switch/switch_close1.png create mode 100644 res/switch/switch_close2.png create mode 100644 res/switch/switch_close3.png create mode 100644 res/switch/switch_open.png create mode 100644 res/switch/switch_open1.png create mode 100644 res/switch/switch_open2.png create mode 100644 res/switch/switch_open3.png diff --git a/PayloadAPP.pro b/PayloadAPP.pro index 8810257..53933f9 100644 --- a/PayloadAPP.pro +++ b/PayloadAPP.pro @@ -16,12 +16,14 @@ QMAKE_PROJECT_DEPTH = 0 SOURCES += \ global.cpp \ SDFPDlg.cpp \ + imageswitch.cpp \ main.cpp \ mainwindow.cpp \ HEADERS += \ SDFPDlg.h \ global.h \ + imageswitch.h \ mainwindow.h \ FORMS += \ diff --git a/Src/GDDC/gddcCmdDlg.cpp b/Src/GDDC/gddcCmdDlg.cpp index 6e12a86..6e68bcd 100644 --- a/Src/GDDC/gddcCmdDlg.cpp +++ b/Src/GDDC/gddcCmdDlg.cpp @@ -69,8 +69,15 @@ void GDDCCmdDlg::initParam() { ui->comboBox_4_2->addItem("5"); ui->comboBox_4_2->addItem("6"); ui->comboBox_4_2->addItem("7"); - ui->comboBox_4_3->addItem("关闭");//关闭温度报警或者阈值检测功能 - ui->comboBox_4_3->addItem("开启");//开启温度报警或者阈值检测功能 + + m_paramInfraredWarning = 0; + ui->swtichButton_4_1->setChecked(false); + ui->swtichButton_4_1->setFixedSize(100,20); + ui->swtichButton_4_1->setButtonStyle(ImageSwitch::ButtonStyle_1); + //绑定选中切换信号 + connect(ui->swtichButton_4_1, SIGNAL(checkedChanged(bool)), this, SLOT(checkedChangedSlot(bool))); + + /*稳定平台*/ ui->comboBox_5_1->addItem("非常慢"); @@ -659,33 +666,26 @@ void GDDCCmdDlg::on_pushButton_4_18_released() { clearTJDCCmdBuffer(); } // 红外报警设置 void GDDCCmdDlg::on_pushButton_4_19_pressed() { - UINT8 Bit7 = 0; - UINT8 Bit0 = 0; - int sel = ui->lineEdit_4_1->text().toInt(); - int sel2 = ui->lineEdit_4_2->text().toInt()*10; - - if(ui->comboBox_4_3->currentIndex()==0) { // 关闭温度报警或者阈值检测功能; - Bit7 = 0b00000000; - } else { // 开启温度报警或者阈值检测功能; - Bit7 = 0b10000000; - } - - if(ui->radioButton_4_1->isChecked()) { //温度阈值 - Bit0 = 0b00000000; - TJDCCmdBuffer[0] = (std::byte)(Bit7+Bit0); - TJDCCmdBuffer[1] = (std::byte)sel; //观瞄型 - TJDCCmdBuffer[2] = (std::byte)(sel>>8); - } else { //16位 RAW 数据阈值 - Bit0 = 0b00000001; - TJDCCmdBuffer[0] = (std::byte)(Bit7+Bit0); - TJDCCmdBuffer[1] = (std::byte)sel2; //测温型 - TJDCCmdBuffer[2] = (std::byte)(sel2>>8); - } + UINT8 Bit0 = 0b00000001; // 测温型 + int sel = ui->lineEdit_4_2->text().toDouble()*10; + TJDCCmdBuffer[0] = (std::byte)(m_paramInfraredWarning+Bit0); + TJDCCmdBuffer[1] = (std::byte)sel; + TJDCCmdBuffer[2] = (std::byte)(sel>>8); } void GDDCCmdDlg::on_pushButton_4_19_released(){ clearTJDCCmdBuffer(); } +// 开启/关闭温度报警或者阈值检测功能 +void GDDCCmdDlg::checkedChangedSlot(bool param) +{ + if(!param) { + m_paramInfraredWarning = 0b00000000;// 关闭 + } else { + m_paramInfraredWarning = 0b10000000;// 开启 + } +} + // 俯仰+ void GDDCCmdDlg::on_pushButton_5_1_pressed() { if (paramIsFrame) { diff --git a/Src/GDDC/gddcCmdDlg.h b/Src/GDDC/gddcCmdDlg.h index a4ea38c..5d12e09 100644 --- a/Src/GDDC/gddcCmdDlg.h +++ b/Src/GDDC/gddcCmdDlg.h @@ -17,6 +17,7 @@ #include #include #include +#include "imageswitch.h" #define cmdLength 44 namespace Ui { @@ -51,6 +52,7 @@ public: bool detectionAreaSetting; // 检测区域设置 void setTabWidgetGeometry(int, int, int, int); // 设置tabwidget的几何位置 void setAIDetcLineEditText(QString, QString); // 设置AI监测lineEdit的内容 + UINT8 m_paramInfraredWarning; // 红外告警参数 private slots: /*系统控制*/ void on_pushButton_1_1_pressed(); @@ -176,6 +178,7 @@ private slots: void on_pushButton_4_18_released(); void on_pushButton_4_19_pressed(); void on_pushButton_4_19_released(); + void checkedChangedSlot(bool); /*云台控制*/ void on_pushButton_5_1_pressed(); void on_pushButton_5_1_released(); diff --git a/Src/GDDC/gddcCmdDlg.ui b/Src/GDDC/gddcCmdDlg.ui index c6cf031..284a6e8 100644 --- a/Src/GDDC/gddcCmdDlg.ui +++ b/Src/GDDC/gddcCmdDlg.ui @@ -80,7 +80,7 @@ QTabWidget::TabShape::Rounded - 3 + 5 Qt::TextElideMode::ElideNone @@ -1171,7 +1171,7 @@ - 600 + 590 50 100 30 @@ -1347,7 +1347,7 @@ - 490 + 480 10 101 31 @@ -1357,7 +1357,7 @@ - 600 + 590 10 101 30 @@ -1373,7 +1373,7 @@ - 490 + 480 50 101 31 @@ -1383,34 +1383,30 @@ - 720 + 710 10 - 201 - 161 + 181 + 151 红外报警设置 - - - - 10 - 120 - 71 - 31 - - - - 100 - 120 + 80 + 110 71 - 31 + 25 + + + 0 + 0 + + @@ -1418,22 +1414,12 @@ 设置 - - - - 80 - 40 - 91 - 23 - - - - 80 - 80 - 91 + 75 + 70 + 81 23 @@ -1441,9 +1427,9 @@ - 180 - 80 - 16 + 160 + 70 + 14 21 @@ -1451,30 +1437,40 @@ - + - 10 - 40 + 5 + 70 61 21 - 观瞄型 + 温度阈值 - + - 10 - 80 + 60 + 30 + 71 + 21 + + + + + + + 5 + 30 61 21 - 测温型 + 检测开关 @@ -2208,6 +2204,14 @@ font: 12pt "Microsoft YaHei UI"; + + + ImageSwitch + QWidget +
imageswitch.h
+ 1 +
+
diff --git a/imageswitch.cpp b/imageswitch.cpp new file mode 100644 index 0000000..f387ee3 --- /dev/null +++ b/imageswitch.cpp @@ -0,0 +1,89 @@ +#include "imageswitch.h" +#include + +ImageSwitch::ImageSwitch(QWidget *parent) : QWidget(parent) +{ + isChecked = false; + buttonStyle = ButtonStyle_1; + + imgOffFile = ":/res/switch/switch_close.png"; + imgOnFile = ":/res/switch/switch_open.png"; + imgFile = imgOffFile; +} + +void ImageSwitch::mousePressEvent(QMouseEvent *) +{ + imgFile = isChecked ? imgOffFile : imgOnFile; + isChecked = !isChecked; + emit checkedChanged(isChecked); + this->update(); +} + +void ImageSwitch::paintEvent(QPaintEvent *) +{ + QPainter painter(this); + painter.setRenderHints(QPainter::SmoothPixmapTransform); + QImage img(imgFile); + img = img.scaled(this->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation); + + //按照比例自动居中绘制 + int pixX = rect().center().x() - img.width() / 2; + int pixY = rect().center().y() - img.height() / 2; + QPoint point(pixX, pixY); + painter.drawImage(point, img); +} + +QSize ImageSwitch::sizeHint() const +{ + return QSize(87, 28); +} + +QSize ImageSwitch::minimumSizeHint() const +{ + return QSize(87, 28); +} + +bool ImageSwitch::getChecked() const +{ + return isChecked; +} + +void ImageSwitch::setChecked(bool isChecked) +{ + if (this->isChecked != isChecked) { + this->isChecked = isChecked; + imgFile = isChecked ? imgOnFile : imgOffFile; + this->update(); + } +} + +ImageSwitch::ButtonStyle ImageSwitch::getButtonStyle() const +{ + return this->buttonStyle; +} + +void ImageSwitch::setButtonStyle(const ImageSwitch::ButtonStyle &buttonStyle) +{ + if (this->buttonStyle != buttonStyle) { + this->buttonStyle = buttonStyle; + + if (buttonStyle == ButtonStyle_1) { + imgOffFile = ":/res/switch/switch_close.png"; + imgOnFile = ":/res/switch/switch_open.png"; + this->resize(87, 28); + } else if (buttonStyle == ButtonStyle_2) { + imgOffFile = ":/res/switch/switch_close1.png"; + imgOnFile = ":/res/switch/switch_open1.png"; + this->resize(87, 28); + } else if (buttonStyle == ButtonStyle_3) { + imgOffFile = ":/res/switch/switch_close3.png"; + imgOnFile = ":/res/switch/switch_open3.png"; + this->resize(96, 38); + } + + imgFile = isChecked ? imgOnFile : imgOffFile; + setChecked(isChecked); + this->update(); + updateGeometry(); + } +} diff --git a/imageswitch.h b/imageswitch.h new file mode 100644 index 0000000..ec441c3 --- /dev/null +++ b/imageswitch.h @@ -0,0 +1,56 @@ +#ifndef IMAGESWITCH_H +#define IMAGESWITCH_H + +#include + +class ImageSwitch : public QWidget +{ + Q_OBJECT + + Q_ENUMS(ButtonStyle) + + Q_PROPERTY(bool isChecked READ getChecked WRITE setChecked) + Q_PROPERTY(ButtonStyle buttonStyle READ getButtonStyle WRITE setButtonStyle) + +public: + ImageSwitch(); + + + enum ButtonStyle { + ButtonStyle_1 = 0, //开关样式1 + ButtonStyle_2 = 1, //开关样式2 + ButtonStyle_3 = 2 //开关样式3 + }; + explicit ImageSwitch(QWidget *parent = 0); + +protected: + void mousePressEvent(QMouseEvent *); + void paintEvent(QPaintEvent *event); + +private: + bool isChecked; //是否选中 + ButtonStyle buttonStyle; //按钮样式 + + QString imgOffFile; //关闭图片 + QString imgOnFile; //开启图片 + QString imgFile; //当前图片 + +public: + //默认尺寸和最小尺寸 + QSize sizeHint() const; + QSize minimumSizeHint() const; + + //获取和设置是否选中 + bool getChecked() const; + void setChecked(bool isChecked); + + //获取和设置按钮样式 + ButtonStyle getButtonStyle() const; + void setButtonStyle(const ImageSwitch::ButtonStyle &buttonStyle); + +signals: + void checkedChanged(bool checked); + +}; + +#endif // IMAGESWITCH_H diff --git a/mainwindow.qrc b/mainwindow.qrc index e1411a7..5ee3888 100644 --- a/mainwindow.qrc +++ b/mainwindow.qrc @@ -30,5 +30,13 @@ res/lamp/red.png res/lamp/white.png res/lamp/yellow.png + res/switch/switch_close.png + res/switch/switch_open.png + res/switch/switch_close1.png + res/switch/switch_close2.png + res/switch/switch_open1.png + res/switch/switch_open2.png + res/switch/switch_close3.png + res/switch/switch_open3.png diff --git a/res/switch/switch_close.png b/res/switch/switch_close.png new file mode 100644 index 0000000000000000000000000000000000000000..f234ef5dcc09dedc50fe2d8fd2450d7454bab515 GIT binary patch literal 1730 zcmV;z20i(SP)Px*d`Uz>RCr$PT}_A_MHGIoXAfchML|%ApePX%$WB*JR!}iZf`6z)4>`m{#7F{a zHXZ^V448=C63`@|5u>6}FCNszM1`0rM%|r$JsFa{gasi1e=cG+VGSnT&#iHKot>TO zpP8DO>fP$gE=<*{?|tu^n(F#_h0ukkSS+s0<#LOe`DOrEjEFP;1Hd(1fS_{|=K$a= zBA#L9v*G`~@1HFc3dcGP96QlKxm>>G(xpoe0Kol-xC#KS>_j^Yz~&?~k09b#zVCmx zV#Nw65T%bY0gR82Uw851#Vr7^8UXHAiqaSh88{jQ!T0_B{d<-!UHYdAT9gRD^Smw0 zJPZK0sQ_hc#4<2}hB%52SM;!p-?!U)@o`2luD&FK@hy(;^_S!0QeOEehdF1;(2Di z5ddxifbj42X&o`;VG00V6hiDv!$m3qxURcJ{`MqofSG@{ENhgRk2CWT$8o$QbxWnv zwZ8AKM8ta$aV0YkB&lc0R2XQ56&$jKKl9Z1tdS-0V0y!c0Pu~zY%fg#Kgp|wQJYUzFh zU23+ZyIBbFb`}^VA^`w%20U57-UW;kixw>!4EGbv2q32GBq4;;1#rrmAfo-#3r?Gq z8JtIkf*{ygC=_-`mu3V&MBf6yP!m5h^X(7un_eJNu|EhQ?wJw5*x1n~j=p7eY*Al|k2aPa@*7tm5w!Zf5@6ahx?_4wrw{X z7jz1nQoBU-dUYRxQoHlO*aacPRVWW_SeA9PkweV9&2gOFS#~zczbyNu0(%eyL+E+l z24?=Ck-=Opw`5>oK>LZGI5LRn4*<9!uG~WV91)*HB6g4S<;4aZK|3{p{AkOFMk5QWahccg!5nk7`i>Zr%^5r zRc5}-^FITKcu4jDCjns2YZ5bm;yBK_`9K&E$thtuDP*4644jez_^Z(&4@BH;+xE8k zz!(ud3;-kZ!576ooHGJY%xK2URRmyu0x}jgg>X+Th(Vy)CDd3l;ULhw1}gkYWz5um zGZB=rh$)7<-An~5W;9FYDpSE`F(^wRQ;W5-7$i*+ky#E_%WW2{{kI$}k(v!5S%{Zf zjP)Br%$6{<{AzD))|N1{DOCG-DF--fQ)qP@V77%Tr&(Krv$usynC4)Jw!!KIupQIs zV|Gfz=4e8N-%ArArc3?FCGlxR&|Wt77UjaWw-%lPFTJ zSf)nPa-zr@5tvl5scF}yLVKxVYeZm@MQan&?uYNf)1-`(Bq+n=U@|##|WD z>$oOrzcUv`giV_(V-f|S7lk^1WlZRmxiqR5@r`V=dzVJl!Z6py^;`(Oxi+reZF6yC z*M*?R#gVmc%T%*dQ&Yp1Wy!mO&DF7;(S)8?$JYC5E{|3g{p?&G9p$pQK0Z`Fwogl$Vt<$FDCwFT`zgIOfpD z?}~?FjvJk6)j7;lyp&a}YFeG~;h2oZR=K6-pZ6!`-TpSQ|4-FkyG`HkUYdUIjQp9} z`|t04oOY*jUcbTr8Fpv3*T{cdx_4%UQNDuDdfq%SwRvZxIWA{6&u;Bh|IBvi%dH1# ziH}b1X*Aetwj*-JP*7GTDLh|?@gI*v|j} literal 0 HcmV?d00001 diff --git a/res/switch/switch_close2.png b/res/switch/switch_close2.png new file mode 100644 index 0000000000000000000000000000000000000000..29b57b96e16b41225134e82a222819b1966e0c5b GIT binary patch literal 464 zcmeAS@N?(olHy`uVBq!ia0vp^#X#)9!3HEX*Lpk!QjEnx?oJHr&dIz4vb#K8978JN z-rhM_c*uakB{1Xs)g2+3P<=MoqzkYr3c_D6_!!d_G zepfscbKK}mtIlDb;-#!&RnzK>565IQw#qFv|GYnO-t(Um`}gGDcK^07`q!n|KbtFM zj^DMuH|h5Gzk<)?FSq}k_Fj447IR_$XS^*hw;nuu=*Z+s=ESPpg3SgWQ|>v;h?Bmf z<6|?^TwvLCHgoPFp-eCN(PY-ff7bpD0j<^CF;&LzWn;6xF(saht9ekH$R|_&?IM2m Z{WAYw6Q-Q|d;}Op44$rjF6*2UngD##)UW^m literal 0 HcmV?d00001 diff --git a/res/switch/switch_close3.png b/res/switch/switch_close3.png new file mode 100644 index 0000000000000000000000000000000000000000..fec2c064745421bb5b44bdf154c721a03a0f04e1 GIT binary patch literal 1911 zcmV--2Z;EIP)Px+F-b&0RCr$PU0ZAvRT%#M*|yLkrCj7vKyEGF-RUf)6tDq9h=~C&5BNZ$qJ}O? z+W>_K8ht>}XuM!cLD{Z$mrDysfIx`AgVA7uMu{;Ya)|_@K@AZKl}n-9%lu|aKnN{+ zJ!fZ!nWr}W&-eZRcfQWdx$Id&0!JUXn>vFP#k5ZGerC=NIBAW z)$!em6)&|UFcljrLIo(oxE{kk`7AinLHhHg&>S$P#*W7az{;-Pj`qfd3m3M>j$^ls zMuC_Ou+CRMg-KZq=6TT&hKnWOGK2lP(rfLqg)g297jOSPJ_VvSK#gzXXa&3q;Fsg0 z4&R!Y-&tC@;O+2{c0{ZSL}h^54S~f>SVKTYtb{SNJE=2XTUO~k7(-jTNf-qpGC*~8 zb!J*tPJo%8OQNEyt17&!lE`mK>aYf=t=pK-tba*Bu?ZB|T2%m4!D; z?%f)|c;+ja{SKStw%>zR6s)Q!^O{A-RL!GX1FZ7}wlR>*7ruz}%o{rfkBrETC^pGK zEexCo_`Cx8hk+&{G%@H$&0Vl3nYrC#0Ar{J!n$N86%BVu(F9~?KNL+9bHx&V0HZ-c zXQQgB*JLMmmjR4P9)kXxIl|dzigBdG5h0b?HlHD{wu<`d$C^T9m zkqm5OPQaKOu*yZC6DN)z^~{|+w^LM2fX7wU z`K^eWEN6h6oNN?(tgtxre|Ixb=24v+Z39H0fE5iOa$4BF14Lk|WQQ<#zDIR!5|M}H z3@~`mKoq*W`#7Qq`6OZLJX6zLheWU$qkyJRC^S$6crq|Y4$npYIO|LY8ya>fJZ7TH z^@j*OsebeJV=dROt0KUYfoXKUVFC+XEt={Sw&#tuY~QuJ`QOXWT1Bvlo1UO4 zz~JK^)m12}AlkNb&(aG`muf^2$i|&9trQN2BAZqu-$qS!mWd)Dzu%wLs;61va0csa z5WS%&QDk&TcF88P|zeut!1Ni;^^mb%i>D2Y!BFRKz4;;`R6AIlTDI{a_*_Mnn z?a}=FDmtcSVrys1~7hETNhkS%qh1!*tqo@j{qxNGCThs19ZI*`T{2bq|9Xc z&>@52F0jOgrX3)qL35AaFVo2Pd^)&hLtwT-I3P2LSh;#-WME2h5z;f#V}(d=JLYB( zHNb%e&FTC(8Od~eK0vK6V0=Q=^vAQg3i6H(8#<&Z8Nx-y$<$(;4Zw`^M0A0nUnCt( zK>ATl%lk7btON)5d_;^d&FK~c>*(Q|cgQ^Pe znw^1DW&*qO6KJ!r=LFsy83Y3W3tN$jxE}kqAF))C21aCnE)&!R zmxKA^NP!a@$LE--d}*b3Ut)1>w1^F0NLBM`pj1i2M_^2sB^?pAppBLGg1xCKYAWR&mjP}Sy56^G8l!U#h-P(tRZO%O;V{4l93A@ZMT=fN6>W1nK6V8X zVt_m8jqeRg=Z;C81UE6pkb=R?xO1iE0vP9@@ELUASZgL7dBf|y8hZ(L%Xkz>xB=ox z#%?QL0owrbH8&NbZ2(hshx}x01IX9hRE)L(Ow}Fold%mTUvpD2+6FLHcgRo1Hh_H1 xO~q&%z*OBKKN;Hq@-;UVqiq0Fb%*?9{sU|c@lXwyjYR+e002ovPDHLkV1nBeYzF`U literal 0 HcmV?d00001 diff --git a/res/switch/switch_open.png b/res/switch/switch_open.png new file mode 100644 index 0000000000000000000000000000000000000000..50ea27922f76faa8e53ce0187cc70fda039f86f5 GIT binary patch literal 1760 zcmV<61|Ru}P)Px*nn^@KRCr$PU2ljKWf=cGv+kTm7W5@&)(frhc1{V3K&2ujAq@%>`cRr;e@VLQ zLyQBZobCr0AA@7kB>G}4`Q=ZV?%*7I&=|J?4( z?aaLM<(A`lpMUR?RaPB5+laVMz!n+VR|%L7oMeMJz4m@x># zaWD^psq~wRJa}?SW}n}RlOF=EJkvFE5-E$Ba61UM0l3r;IWgdQ3d}nhN*}4pcY+QL zw%X>F0bn}MzQR6N>;cmv05`Wi?qst@41pv+J zx=|tJ1!gQ6uV6W@bsiwXZifAmNDlniDA$Gopr13A!p2r0=BxKcJzb_h4MvU$f*3gv ziPC?WbtY)U&_U1uOdSXN{{UVq)XeLRjBN-2`q^|36x!H`fLPNqpJ0Xd6JuW@nbz))@lcmaSJ^^7}D^PW)62kWJ;8vuH~`wI}?Suf)_(=o7JA>N!# zX7;zj4=Kx-X9JHBu(D2mzY5j7p&r`00H9k2*TXFKG|YXhBwouU5BK@u3#~AFG1qmUDO&#C6TV5E&tN~&Od!i;5Zquuns2mqz59#}^D+`V_0n3rWIXO4_-YJwRx zooA)&LSh$y>)a($@5n4-1puXdzGWYjDP0e@0jq-A=Qj(LQk($T=E{e0R8f_=!{-Sq z0MPU4bs&1aS>cf!&)g?EGNHiP6;&xj%OdeMXR-yK<_J?;cT(yGn zF){9Ok@l}p&8g&E+E5a-HyCxoC56DNvuegU{ubItw~RFa-f%O(F7iUsEaQFx0?A{C z&5L%CXP%srITkj(N9x;-}tq=QQUkOxA%5DQ}?c+d+9bw8~;2+LuFz4VTx$tE>g0em%Uj7?cGfs(%!sULeA;UY3ZdxiE-siI~z_ zKo*Iri2y{oNK|=2D9gmvMggK(CT`epStznL1R`4~as&uuso2^$h-RtS5g?GoqHBY| zsrw(jV$l^4$a3-ZK%hhuxpMIp5XgoRb%UUcga|c^sDMDWjA;x67gLA3Wz2m9K+d6i%s%Vs}3&7-TCEZfId@y-OdkN+RGpNn{1`ISV`@fjamOgD~Uq{1quc!TX*rjv*CsZ|`j6J!Bx@a8Y1e0<+knB>r1l z-Z&oZ@L-YJ?y==(<@$}W^)I=^%Psbvo8Q?|Iftb~QYo!thGJ41l(GA_$&Pc=3vW+5 z{!3>2{W8hVbuq`XrSslDT|eVk4zfbH4(c%?T6PGEDZcA5lty(^Qku_YaZy9@6%2mP R_kmtz@O1TaS?83{1OTD*cVGYj literal 0 HcmV?d00001 diff --git a/res/switch/switch_open2.png b/res/switch/switch_open2.png new file mode 100644 index 0000000000000000000000000000000000000000..e3c0e4276f6beddb9736b9d718336de53057563f GIT binary patch literal 328 zcmeAS@N?(olHy`uVBq!ia0vp^#X#)9!3HEX*Lpk!QjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@fjamOgD~Uq{1quc!MmO=jv*CsZ|^MRWipg#xM(es$YPct`^?dZ z|FK}x1B0z9H|oC6%Ur#G*`i1B=ii^+HlaX5n=z@aLsBWNV}>GxapIjFZ(qOV`}ePZ zN$$R1Ci%G}{&*(e`P<*Zea`2=Rndka(PF{bEKq*TSQ^PeAgj`JPKzJEB)-De>0KDm OqYR#|elF{r5}E+UEp}1> literal 0 HcmV?d00001 diff --git a/res/switch/switch_open3.png b/res/switch/switch_open3.png new file mode 100644 index 0000000000000000000000000000000000000000..e55a16c7a64ed0b7e60e42e45fee0771f417906e GIT binary patch literal 1626 zcmV-g2BrClP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1@B2jK~#8N?cHl^ z6jc-l@N;JSSh|2b+R}%L0scW^APL^W7^iLz^sG(azdB@IBfOmH%CX)tOvzMUkU`1dAQFIaXS!wg5cS>An^3J zJbcAW035QiuIYXc;#>ll#zR++sD&(et8(6)Iv%-fCIE`nG`wAkWWORN{tg~WI5CNx z;_s^RKv_Kx^_dBPBCA$4=RgLnAcCiONIisa>1()grFoZ@8B%nUs zmUN2=yT)_nPEn6t-q_ffE^Flh$PA~=6xSNpbL)CTP7W69|Bc+alPBu&c1F{mkhKF# z06xlv7RI!W=E~hp^*^ydZk65#Crlo^=|I4m!r2``xmCT%FPY9P;egAT~SVogVgG_Xk(**6wR>4FqN#RJ#NqM3F#- zKpVdg-^-P|c_N;*a;r7~0+J<{fzEj6er?0r;P4Rlp9`divYO;pc>vnH+xGy`GH$id zGWJ)l-04ie&JSOBuIzxUl?OojD|6=(5rXr+klo4uQd&g1wwfUe}zxa3p0xJ?Oi@@=wbTxjwo6MzJf zk7BC~_)A6kZhR!U9in*R)jZk&C%i2-nD)JpaAUzZ4Sy2dr#- zC*QKWDiQEmv6o)M!-;{o4#}=P_xA4PFadCod@M`s$sA}uBtCk1!gys6ejuARM#*~b z>~Hn1lnFqREMLCXmoXqZ1;{QT!kfiK#7HsR%fp9or}&vxv5agdpr4|U{&nL1-ynd0 Y0jnyp-Z?+iVgLXD07*qoM6N<$f~njG{{R30 literal 0 HcmV?d00001