@@ -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,65 @@ 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 .isHidden () == False and self .config_dict ["minimize_on_close" ] == 0 :
1179+ self .exit_event = event
1180+ self .confirm = QtWidgets .QMessageBox ()
1181+ self .timeout = 5
1182+ self .confirm .setText ("Do you really want to quit Qomui?" )
1183+ info = "Closing in {} seconds" .format (self .timeout )
1184+ self .confirm .setInformativeText (info )
1185+ self .confirm .setIcon (QtWidgets .QMessageBox .Question )
1186+ self .confirm .addButton (QtWidgets .QPushButton ("Exit" ), QtWidgets .QMessageBox .YesRole )
1187+ self .confirm .addButton (QtWidgets .QPushButton ("Cancel" ), QtWidgets .QMessageBox .NoRole )
1188+ if self .tray .isSystemTrayAvailable () == True :
1189+ self .confirm .addButton (QtWidgets .QPushButton ("Minimize" ), QtWidgets .QMessageBox .RejectRole )
1190+
1191+ self .exit_timer = QtCore .QTimer (self )
1192+ self .exit_timer .setInterval (1000 )
1193+ self .exit_timer .timeout .connect (self .change_timeout )
1194+ self .exit_timer .start ()
1195+
1196+ ret = self .confirm .exec_ ()
1197+ self .exit_timer .stop ()
11811198
1182- if ret == 1 :
1183- self .exit_event .ignore ()
1199+ if ret == 1 :
1200+ self .exit_event .ignore ()
11841201
1185- elif ret == 2 :
1186- self .hide ()
1202+ elif ret == 2 :
1203+ if self .config_dict ["minimize_on_close" ] == 0 :
1204+ self .confirm = QtWidgets .QMessageBox ()
1205+ self .confirm .setIcon (QtWidgets .QMessageBox .Question )
1206+ self .confirm .setText ("Remember choice?" )
1207+ self .confirm .addButton (QtWidgets .QPushButton ("Yes" ), QtWidgets .QMessageBox .YesRole )
1208+ self .confirm .addButton (QtWidgets .QPushButton ("No" ), QtWidgets .QMessageBox .NoRole )
1209+
1210+ self .timeout = 5
1211+ self .confirm .setInformativeText (info )
1212+ self .exit_timer = QtCore .QTimer (self )
1213+ self .exit_timer .setInterval (1000 )
1214+ self .exit_timer .timeout .connect (self .change_timeout )
1215+ self .exit_timer .start ()
1216+
1217+ ret = self .confirm .exec_ ()
1218+ self .exit_timer .stop ()
1219+
1220+ if ret == 0 :
1221+ self .config_dict ["minimize_on_close" ] = 1
1222+ self .save_options (self .config_dict )
1223+
1224+ self .hide ()
11871225
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 ()
1226+ elif ret == 0 :
1227+ self .tray .hide ()
1228+ self .kill ()
1229+ self .disconnect_bypass ()
1230+ self .dbus_call ("load_firewall" , 2 )
1231+ with open ("{}/server.json" .format (HOMEDIR ), "w" ) as s :
1232+ json .dump (self .server_dict , s )
1233+ self .exit_event .accept ()
1234+
1235+ elif self .config_dict ["minimize_on_close" ] == 1 :
1236+ self .hide ()
11961237
11971238 def change_timeout (self ):
11981239 self .timeout -= 1
0 commit comments