Skip to content

Commit f229533

Browse files
committed
Add 'minimize on close' function.
1 parent 2fbc416 commit f229533

File tree

2 files changed

+73
-32
lines changed

2 files changed

+73
-32
lines changed

qomui/qomui_gui.py

Lines changed: 72 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -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

resources/default_config.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"alt_dns1": "208.67.222.222", "alt_dns2": "208.67.220.220", "firewall": 0, "autoconnect": 0, "minimize": 0, "ipv6_disable": 0, "alt_dns": 0, "bypass": 0, "ping": 0, "auto_update": 0, "block_lan": 0, "preserve_rules": 0, "fw_gui_only": 0, "log_level": "Info"}
1+
{"alt_dns1": "208.67.222.222", "alt_dns2": "208.67.220.220", "firewall": 0, "autoconnect": 0, "minimize": 0, "minimize_on_close": 0, "ipv6_disable": 0, "alt_dns": 0, "bypass": 0, "ping": 0, "auto_update": 0, "block_lan": 0, "preserve_rules": 0, "fw_gui_only": 0, "log_level": "Info"}

0 commit comments

Comments
 (0)