fix: delete qmlobjects

This commit is contained in:
Richard Ramos 2020-06-18 17:56:04 -04:00 committed by Iuri Matias
parent a6493725b6
commit 5e03575285
23 changed files with 58 additions and 23 deletions

View File

@ -25,8 +25,8 @@ proc newController*(status: Status): ChatController =
result.variant = newQVariant(result.view)
proc delete*(self: ChatController) =
delete self.view
delete self.variant
delete self.view
proc handleChatEvents(self: ChatController) =
# Display already saved messages

View File

@ -27,7 +27,13 @@ QtObject:
proc setup(self: ChatsView) = self.QAbstractListModel.setup
proc delete(self: ChatsView) = self.QAbstractListModel.delete
proc delete(self: ChatsView) =
self.chats.delete
self.activeChannel.delete
for msg in self.messageList.values:
msg.delete
self.messageList = initTable[string, ChatMessageList]()
self.QAbstractListModel.delete
proc newChatsView*(status: Status): ChatsView =
new(result, delete)

View File

@ -18,7 +18,9 @@ QtObject:
proc setup(self: ChannelsList) = self.QAbstractListModel.setup
proc delete(self: ChannelsList) = self.QAbstractListModel.delete
proc delete(self: ChannelsList) =
self.chats = @[]
self.QAbstractListModel.delete
proc newChannelsList*(): ChannelsList =
new(result, delete)

View File

@ -13,6 +13,7 @@ QtObject:
self.QObject.setup
proc delete*(self: ChatItemView) =
if not self.chatMembers.isNil: self.chatMembers.delete
self.QObject.delete
proc newChatItemView*(status: Status): ChatItemView =

View File

@ -20,7 +20,9 @@ QtObject:
proc setup(self: ChatMembersView) = self.QAbstractListModel.setup
proc delete(self: ChatMembersView) = self.QAbstractListModel.delete
proc delete(self: ChatMembersView) =
self.members = @[]
self.QAbstractListModel.delete
proc newChatMembersView*(status: Status): ChatMembersView =
new(result, delete)

View File

@ -25,8 +25,8 @@ QtObject:
messages*: seq[Message]
proc delete(self: ChatMessageList) =
self.QAbstractListModel.delete
self.messages = @[]
self.QAbstractListModel.delete
proc setup(self: ChatMessageList) =
self.QAbstractListModel.setup

View File

@ -17,8 +17,8 @@ proc newController*(status: Status): LoginController =
result.variant = newQVariant(result.view)
proc delete*(self: LoginController) =
delete self.view
delete self.variant
self.variant.delete
self.view.delete
proc init*(self: LoginController) =
let nodeAccounts = self.status.accounts.openAccounts()

View File

@ -29,8 +29,9 @@ QtObject:
self.QAbstractListModel.setup
proc delete*(self: LoginView) =
self.QAbstractListModel.delete
self.currentAccount.delete
self.accounts = @[]
self.QAbstractListModel.delete
proc newLoginView*(status: Status): LoginView =
new(result, delete)

View File

@ -20,8 +20,8 @@ proc newController*(status: Status): NodeController =
result.variant = newQVariant(result.view)
proc delete*(self: NodeController) =
delete self.view
delete self.variant
delete self.view
proc init*(self: NodeController) =
discard

View File

@ -21,8 +21,8 @@ proc newController*(status: Status): OnboardingController =
result.variant = newQVariant(result.view)
proc delete*(self: OnboardingController) =
delete self.view
delete self.variant
delete self.view
proc init*(self: OnboardingController) =
let accounts = self.status.accounts.generateAddresses()

View File

@ -26,8 +26,9 @@ QtObject:
self.QAbstractListModel.setup
proc delete*(self: OnboardingView) =
self.QAbstractListModel.delete
self.currentAccount.delete
self.accounts = @[]
self.QAbstractListModel.delete
proc newOnboardingView*(status: Status): OnboardingView =
new(result, delete)

View File

@ -23,8 +23,8 @@ proc newController*(status: Status): ProfileController =
result.variant = newQVariant(result.view)
proc delete*(self: ProfileController) =
delete self.view
delete self.variant
delete self.view
proc init*(self: ProfileController, account: Account) =
let profile = account.toProfileModel()

View File

@ -10,6 +10,7 @@ QtObject:
self.QObject.setup
proc delete*(self: ProfileView) =
self.mailserversList.delete
self.QObject.delete
proc newProfileView*(): ProfileView =

View File

@ -20,6 +20,9 @@ QtObject:
self.QObject.setup
proc delete*(self: ProfileView) =
if not self.mailserversList.isNil: self.mailserversList.delete
if not self.contactList.isNil: self.contactList.delete
if not self.profile.isNil: self.profile.delete
self.QObject.delete
proc newProfileView*(status: Status): ProfileView =

View File

@ -17,7 +17,9 @@ QtObject:
proc setup(self: ContactList) = self.QAbstractListModel.setup
proc delete(self: ContactList) = self.QAbstractListModel.delete
proc delete(self: ContactList) =
self.contacts = @[]
self.QAbstractListModel.delete
proc newContactList*(): ContactList =
new(result, delete)

View File

@ -13,7 +13,9 @@ QtObject:
proc setup(self: MailServersList) = self.QAbstractListModel.setup
proc delete(self: MailServersList) = self.QAbstractListModel.delete
proc delete(self: MailServersList) =
self.mailservers = @[]
self.QAbstractListModel.delete
proc newMailServersList*(): MailServersList =
new(result, delete)

View File

@ -27,8 +27,8 @@ proc newController*(status: Status): WalletController =
result.variant = newQVariant(result.view)
proc delete*(self: WalletController) =
delete self.view
delete self.variant
delete self.view
proc init*(self: WalletController) =
self.status.wallet.initAccounts()

View File

@ -23,6 +23,10 @@ QtObject:
totalFiatBalance: string
proc delete(self: WalletView) =
self.accounts.delete
self.currentAssetList.delete
self.currentAccount.delete
self.currentTransactions.delete
self.QAbstractListModel.delete
proc setup(self: WalletView) =

View File

@ -21,8 +21,8 @@ QtObject:
proc setup(self: AccountList) = self.QAbstractListModel.setup
proc delete(self: AccountList) =
self.QAbstractListModel.delete
self.accounts = @[]
self.QAbstractListModel.delete
proc newAccountList*(): AccountList =
new(result, delete)

View File

@ -16,8 +16,8 @@ QtObject:
proc setup(self: AssetList) = self.QAbstractListModel.setup
proc delete(self: AssetList) =
self.QAbstractListModel.delete
self.assets = @[]
self.QAbstractListModel.delete
proc newAssetList*(): AssetList =
new(result, delete)

View File

@ -25,8 +25,8 @@ QtObject:
proc setup(self: TransactionList) = self.QAbstractListModel.setup
proc delete(self: TransactionList) =
self.QAbstractListModel.delete
self.transactions = @[]
self.QAbstractListModel.delete
proc newTransactionList*(): TransactionList =
new(result, delete)

View File

@ -27,10 +27,7 @@ proc mainProc() =
let engine = newQQmlApplicationEngine()
let signalController = signals.newController(app)
defer: # Defer will run this just before mainProc() function ends
app.delete()
engine.delete()
signalController.delete()
# We need this global variable in order to be able to access the application
# from the non-closure callback passed to `libstatus.setSignalEventCallback`
@ -59,9 +56,20 @@ proc mainProc() =
var onboarding = onboarding.newController(status)
engine.setRootContextProperty("loginModel", login.variant)
engine.setRootContextProperty("onboardingModel", onboarding.variant)
defer:
error "TODO: if user is logged in, logout"
engine.delete()
app.delete()
signalController.delete()
login.delete()
onboarding.delete()
wallet.delete()
chat.delete()
profile.delete()
# Initialize only controllers whose init functions
# do not need a running node
proc initControllers() =

View File

@ -36,7 +36,9 @@ QtObject:
discard
proc delete*(self: SignalsController) =
self.variant.delete
self.QObject.delete
self.signalSubscribers = initTable[SignalType, seq[SignalSubscriber]]()
proc addSubscriber*(self: SignalsController, signalType: SignalType, subscriber: SignalSubscriber) =
if not self.signalSubscribers.hasKey(signalType):