@@ -79,6 +79,7 @@ class QomuiGui(QtWidgets.QWidget):
7979 "firewall" ,
8080 "autoconnect" ,
8181 "minimize" ,
82+ "minimize_on_close" ,
8283 "ipv6_disable" ,
8384 "alt_dns" ,
8485 "bypass" ,
@@ -426,6 +427,16 @@ def setupUi(self, Form):
426427 self .minimizeOptLabel .setIndent (20 )
427428 self .minimizeOptLabel .setFont (italic_font )
428429 self .verticalLayout_5 .addWidget (self .minimizeOptLabel )
430+ self .minimize_on_closeOptCheck = QtWidgets .QCheckBox (self .optionsTab )
431+ self .minimize_on_closeOptCheck .setFont (bold_font )
432+ self .minimize_on_closeOptCheck .setObjectName (_fromUtf8 ("minimize_on_closeOptCheck" ))
433+ self .verticalLayout_5 .addWidget (self .minimize_on_closeOptCheck )
434+ self .minimize_on_closeOptLabel = QtWidgets .QLabel (self .optionsTab )
435+ self .minimize_on_closeOptLabel .setObjectName (_fromUtf8 ("minimize_on_closeOptLabel" ))
436+ self .minimize_on_closeOptLabel .setWordWrap (True )
437+ self .minimize_on_closeOptLabel .setIndent (20 )
438+ self .minimize_on_closeOptLabel .setFont (italic_font )
439+ self .verticalLayout_5 .addWidget (self .minimize_on_closeOptLabel )
429440 self .auto_updateOptCheck = QtWidgets .QCheckBox (self .optionsTab )
430441 self .auto_updateOptCheck .setObjectName (_fromUtf8 ("auto_updateOptCheck" ))
431442 self .auto_updateOptCheck .setFont (bold_font )
@@ -854,6 +865,7 @@ def retranslateUi(self, Form):
854865 self .autoconnectOptCheck .setText (_translate ("Form" , "Autoconnect/reconnect" , None ))
855866 self .auto_updateOptCheck .setText (_translate ("Form" , "Auto-update" , None ))
856867 self .minimizeOptCheck .setText (_translate ("Form" , "Start minimized" , None ))
868+ self .minimize_on_closeOptCheck .setText (_translate ("Form" , "Minimize to tray on close" , None ))
857869 self .firewallOptCheck .setText (_translate ("Form" , "Activate Firewall " , None ))
858870 self .bypassOptCheck .setText (_translate ("Form" , "Allow OpenVPN bypass" , None ))
859871 self .pingOptCheck .setText (_translate ("Form" , "Perform latency check" , None ))
@@ -912,7 +924,10 @@ def retranslateUi(self, Form):
912924 "Automatically (re-)connect to last server" ,
913925 None ))
914926 self .minimizeOptLabel .setText (_translate ("Form" ,
915- "Only works if system tray is available" ,
927+ "Works only if system tray is available" ,
928+ None ))
929+ self .minimize_on_closeOptLabel .setText (_translate ("Form" ,
930+ "Works only if system tray is available" ,
916931 None ))
917932 self .auto_updateOptLabel .setText (_translate ("Form" ,
918933 "Enable automatic updates for supported providers" ,
@@ -1160,39 +1175,43 @@ def restoreUi(self, reason):
11601175 self .showNormal ()
11611176
11621177 def closeEvent (self , event ):
1163- self .exit_event = event
1164- self .confirm = QtWidgets .QMessageBox ()
1165- self .timeout = 5
1166- self .confirm .setText ("Do you really want to quit Qomui?" )
1167- info = "Closing in {} seconds" .format (self .timeout )
1168- self .confirm .setInformativeText (info )
1169- self .confirm .setIcon (QtWidgets .QMessageBox .Question )
1170- self .confirm .addButton (QtWidgets .QPushButton ("Exit" ), QtWidgets .QMessageBox .YesRole )
1171- self .confirm .addButton (QtWidgets .QPushButton ("Cancel" ), QtWidgets .QMessageBox .NoRole )
1172- if self .tray .isSystemTrayAvailable () == True :
1173- self .confirm .addButton (QtWidgets .QPushButton ("Minimize" ), QtWidgets .QMessageBox .RejectRole )
1174- self .exit_timer = QtCore .QTimer (self )
1175- self .exit_timer .setInterval (1000 )
1176- self .exit_timer .timeout .connect (self .change_timeout )
1177- self .exit_timer .start ()
1178-
1179- ret = self .confirm .exec_ ()
1180- self .exit_timer .stop ()
1178+ if self .config_dict ["minimize_on_close" ] == 1 :
1179+ self .hide ()
1180+ else :
1181+ self .exit_event = event
1182+ self .confirm = QtWidgets .QMessageBox ()
1183+ self .timeout = 5
1184+ self .confirm .setText ("Do you really want to quit Qomui?" )
1185+ info = "Closing in {} seconds" .format (self .timeout )
1186+ self .confirm .setInformativeText (info )
1187+ self .confirm .setIcon (QtWidgets .QMessageBox .Question )
1188+ self .confirm .addButton (QtWidgets .QPushButton ("Exit" ), QtWidgets .QMessageBox .YesRole )
1189+ self .confirm .addButton (QtWidgets .QPushButton ("Cancel" ), QtWidgets .QMessageBox .NoRole )
1190+ if self .tray .isSystemTrayAvailable () == True :
1191+ self .confirm .addButton (QtWidgets .QPushButton ("Minimize" ), QtWidgets .QMessageBox .RejectRole )
1192+
1193+ self .exit_timer = QtCore .QTimer (self )
1194+ self .exit_timer .setInterval (1000 )
1195+ self .exit_timer .timeout .connect (self .change_timeout )
1196+ self .exit_timer .start ()
11811197
1182- if ret == 1 :
1183- self .exit_event . ignore ()
1198+ ret = self . confirm . exec_ ()
1199+ self .exit_timer . stop ()
11841200
1185- elif ret == 2 :
1186- self .hide ()
1201+ if ret == 1 :
1202+ self .exit_event . ignore ()
11871203
1188- elif ret == 0 :
1189- self .tray .hide ()
1190- self .kill ()
1191- self .disconnect_bypass ()
1192- self .dbus_call ("load_firewall" , 2 )
1193- with open ("{}/server.json" .format (HOMEDIR ), "w" ) as s :
1194- json .dump (self .server_dict , s )
1195- self .exit_event .accept ()
1204+ elif ret == 2 :
1205+ self .hide ()
1206+
1207+ elif ret == 0 :
1208+ self .tray .hide ()
1209+ self .kill ()
1210+ self .disconnect_bypass ()
1211+ self .dbus_call ("load_firewall" , 2 )
1212+ with open ("{}/server.json" .format (HOMEDIR ), "w" ) as s :
1213+ json .dump (self .server_dict , s )
1214+ self .exit_event .accept ()
11961215
11971216 def change_timeout (self ):
11981217 self .timeout -= 1
0 commit comments