Hallo
Ik ben bezig aan een GUI library te maken voor mijn Mini-DK2 microcontroller met ingebouwd 320x240 LCD scherm en touchscreen (de mini-dk2 is compatibel met de online mbed compiler, zodat je hier gemakkelijk in C++ kunt coden).
Wat ik nu heb (deels overgenomen van een andere library):
Een klasse "Menuitems" met daarin alleen informatie zoals een char* met de naam, een functiepointer voor wat te doen als er op dit menuitem is geklikt, een pointer naar een ander menuitem...
Dan is er een klasse "Menu", wat eigelijk niet meer is dan een vector van verschillende menuitems.
Ten slotte is er de "Navigator" klasse, die alles doet in verband met het tonen van de menu's, het controleren dat er een touch plaatsvind en hiermee de juiste dingen doet, de navigator houd ook bij wat het actieve menu is (zodat hij de juiste dingen doet bij een touch).
Het grote nadeel is dat dit alleen maar werkt met "normale" statische menus (dus "menuitem1", "menuitem2" ...). Nu wil ik deze boel wat uitbreiden zodat ik ook andere dingen kan tonen op het scherm (bijvoorbeeld een fader, numeriek toetsenbord voor nummers in te geven, labels...
Nu wil ik helemaal opnieuw beginnen en is mijn vraag hoe ik dit het best zou doen? Dit is wat ik al bedacht heb (copy paste van stackoverflow, maar daar krijg ik geen reactie):
My first thought was using an Abstract class "InterfaceElement", with in it functions like "touchEvent() , draw(), update()". Then I would use different IntefaceElements like Button, Slider, Label... All those InterfaceElements would go into a vector that is in a certain Container (with for each container a different layout). Then a Controller that remembers the currently active Container, and gives through the touchEvents to the container which handles it to the InterfaceElement.
Of zou ik het best overstappen op iets meer MVC achtigs?
Bedankt!
Jannes
Ik ben bezig aan een GUI library te maken voor mijn Mini-DK2 microcontroller met ingebouwd 320x240 LCD scherm en touchscreen (de mini-dk2 is compatibel met de online mbed compiler, zodat je hier gemakkelijk in C++ kunt coden).
Wat ik nu heb (deels overgenomen van een andere library):
Een klasse "Menuitems" met daarin alleen informatie zoals een char* met de naam, een functiepointer voor wat te doen als er op dit menuitem is geklikt, een pointer naar een ander menuitem...
Dan is er een klasse "Menu", wat eigelijk niet meer is dan een vector van verschillende menuitems.
Ten slotte is er de "Navigator" klasse, die alles doet in verband met het tonen van de menu's, het controleren dat er een touch plaatsvind en hiermee de juiste dingen doet, de navigator houd ook bij wat het actieve menu is (zodat hij de juiste dingen doet bij een touch).
Het grote nadeel is dat dit alleen maar werkt met "normale" statische menus (dus "menuitem1", "menuitem2" ...). Nu wil ik deze boel wat uitbreiden zodat ik ook andere dingen kan tonen op het scherm (bijvoorbeeld een fader, numeriek toetsenbord voor nummers in te geven, labels...
Nu wil ik helemaal opnieuw beginnen en is mijn vraag hoe ik dit het best zou doen? Dit is wat ik al bedacht heb (copy paste van stackoverflow, maar daar krijg ik geen reactie):
My first thought was using an Abstract class "InterfaceElement", with in it functions like "touchEvent() , draw(), update()". Then I would use different IntefaceElements like Button, Slider, Label... All those InterfaceElements would go into a vector that is in a certain Container (with for each container a different layout). Then a Controller that remembers the currently active Container, and gives through the touchEvents to the container which handles it to the InterfaceElement.
Of zou ik het best overstappen op iets meer MVC achtigs?
Bedankt!
Jannes