Post by Simon CPost by Simon CBorrowing some style ideas from fma I've replace the icons
with a tree
Post by Simon Cview, it looks better I think.
I do too! BTW where did you get the icons?
Post by Simon Cadd a standard way for each panel to hook into the tree
view (e.g. SMS
It should also possible to have the same item multiple times
in the tree view.
For example in addition to the phonebook entries, there could
be a node named groups which each group as a child and
phonebook entries in that group as a further child.
I propose changing the main screen to be a tree view similar to the
screenshot I sent out.
The implementation...
The main window object will loose all of it's phone code, it will only
provide the splitter frame, tree view and routing for menu and toolbar
events, it will create a phone object to add to the root of the tree.
The tree view will contain a root node representing a phone object. The
phone object will be a class that contains references to all the wigets for
the phone and will manage the leaves (widgets) under its node in the the
tree view (it's parent). The phone class will contain references to the
database and configuration options for its phone. This allows for multiple
phones to be managed in the same tree view at some point in the future.
A new class will be created to serve as a base class for the widgets, this
will provide access from the widget to the tree view, this will allow the
widget to add objects to the tree rather than having to create their own
tree view (SMS, call history and fileview for example). It will also provide
context sensitive popup menus for the tree, controlled by the widgets which
will publish the menu items for their parts of the tree and subscribing to
the events.
It should be possible to upgrade the widgets one at a time, rather than all
at once, the original widget code will work in the new design without
change. Change will only be required to access the new features.
The phonebook widget will take advantage of the tree view to show things
like categories and allow new categories and contacts to be added via the
popup menu in the tree.
Drag and drop will be added in the widget base class, this will allow a user
to move contacts from one category to another easily or add a ringtone to a
contact. Widgets would subscribe to drop events and provide object hit test
results, the base class would maintain a list of drag and drop data types to
allow the widgets to handle custom objects. When multiple phones are
supported, drag and drop will be supported between phones.
The initial version of the change would provide no addition functionality to
the user, just a look and feel change. Improvements to the individual
widgets would follow as time allowed.
I have not done any of this work, the screenshots I sent out were barely
functional. I'd like to get approval from everyone before I do anything
more. This is a big piece of work, but I think it will be worth it. The
approach described will allow it to be done incrementally, and allow
multiple developers to work on different portions simultaneously. The result
will be bitpim having a really good looking front end to match the best of
what is out there.
Comments?
Simon