List of the modules (should be a subprojects)
model
core
widget
audio
video
network
persistence
platform
non-module
(move to ui)chatlog
test
(should be added)
Friend
(moved from non-module)Group
(moved from non-module)FriendList
(moved from non-module)GroupList
(moved from non-module)Message
TextMessage
FileTransfer
(from ToxFile)
Will interface with c-toxcore
toxsave
(moved from persistence)
(moved to non-module stuff)RecursiveSignalBlocker
(kill it)coredefines.h
(kill it)indexedlist.h
(kill it)cstring.h
(move ToxFile to FileTransfer, make DhtServer it's own class? agree @sudden6 @Diadlo)corestructs.h
ToxId
ToxPk
ToxCall
CoreAv
-> 'ToxAv' ?Core
->ToxCore
(name clash?)CoreFile
->ToxFile
Contains all the user interface stuff
Rename module to 'ui'? (agree: @sudden6 @Diadlo)
dialog
(QDialog
inheritance)SetPasswordDialog
AboutUser
ActiveDialog
ContentDialog
LoadHistoryDialog
FriendRequestDialog
RemoveFriendDialog
form
(GenericForm
inheritance)Settings
layout
(QLayout
inheritance)widget
(QWidget
inheritance)utils
(usefull parts used throughout the ui) (agree @sudden6, against @Diadlo (IMO, should be moved in widget module root))chatlog
(Moved from src root)
Provides qTox audio input and output and notification sounds, provides Video input and output
Has to interface with:
toxav
platform
widget
(for video display)
Most part of this module should have one instance, which should be injected in other classes (see Inversion of control) How do we handle qTox upgrades? (how it handled now?)
What about using macros here (not everywere)?
Example: SETTINGS_PROPERY(name) -> void setName(T name); T getName(); Q_PROPERTY(...)
- Settings interfaces:
I[Global]SettingsGeneral
I[Global]SettingsUI
I[Global]SettingsNetwork
I[Global]SettingsAudio
I[Global]SettingsVideo
- Settings implementations:
SettingsFile
test/SettingsFake
SettingsDb
(for the future it would be interesting to store non global settings in the DB)
IHistory
class DBHistory : public IHistory
IFileTransfers
class DBFileFransfers : public IFileTransfers
We can have one DB provider, which implement all persistence interfaces. Or many DB providers, which implement own interface (see above)
Example: class DBStorage : public IHistory, public IFileTransfers
(should be replaced with DI)Nexus
RecursiveSignalBlocker
IPC
main.cpp
Only specifies the order, not definite times
- complete cmake transistion
- somewhere should be "merge ui/redesign" (WIP by @Diadlo)
- make module == subproject
- reorder the files, as defined above, no code changes yet
- define Interface for Core, ie create clean Header files
- started by @sudden6, see General-Classdiagram and ToxEncrypt-Classdiagram
- implement the new Core interface step by step
- create unit-tests for Core
- setup tests with ToxId as example
- setup tests with ToxPk
- create SettingsInterface
- port from the existing settings implementation
- implement test/FakeSettings (to use it in tests)
- start the UI stuff