ThoughtBox: End of Weekend Progress
Well, 4:00PM was my deadline, so here’s where we landed. That’s a screenshot of the running app. I feel pretty good about the progress that I made, but I think it’s going to take a couple more days to finish this up…so one or two more weekends. For now, you can get the source as it stands right here. Remember, it’s definitely not done so this is just for learning/fun.
Some interesting notes about development: First, I had to restructure the data again once I started building it. The original approach kept all of the tasks in collections that belonged to each of the projects. This made it difficult to get a complete list of all the tasks (without doing a lot of artificial collection manipulation). In the end, I structured the data a lot more like it’s structured on Remember The Milk: I keep a list of tasks and a list of projects and then tie them together with an ID reference. This is a little more DB and a little less XML, but it really simplified things.
Second, I ended up creating three controls that are worth sharing. They need some tweaking before they are general purpose (I was rushing through this stuff) but you can sift through the source and use them as you please.
The first is a Shape called CalloutShape. This is the shape you see surrounding the calendar above. Right now, the arrow is in a fixed spot and has a fixed width and height. That would be really easy to customize though. If you do the work, let me know and I’ll post or link to the cleaned up version. If you haven’t created a shape before, this is probably worth check out. It’s a really straightforward example. When creating the shape’s geometry, I use a CombinedGeometry to merge the arrow with the rounded rectangle. That’s a handy technique for creating a geometry that might otherwise require a lot of math (in this case, to handle the rounded corners)
Next is a panel called IndexingStackPanel. This actually comes from Kaxaml. It’s basically just a StackPanel that sets attached properties on it’s children that let you know the child’s index, whether it’s odd or even, where it is relative to the selected item in a Selector, etc. It’s really useful for things like alternating line colors, etc. This one is relatively robust.
Finally, there’s a really simple Calendar control in there. Probably still too simple at this point. It’s meant to be used with another control that will handle month changes, etc. Right now it just displays a set of dates and let’s you select one. Again, if you do anything cool with it let me know.
Well, thanks for following along this weekend. I’ll keep you posted on ThoughtBox’s progress. If you’re a fellow GTDer and looking for something that works on Windows, I’d love a hand on this project so drop me a line and we can crank this out.
fabiopedrosa
03 aug 2008
looks great, gonna try right now
you shoud also provide binaries
Darren
03 aug 2008
It’s funny, I’ve been working on my own WPF GTD app, mostly to build some more WPF/WCF experience. I’ve also been incorporating the new Composite Application library and some new approaches to application development. It’s a lot of fun, but it’s so hard to find the time when your hobby is also your full-time job.
You’ve made some real progress, and I’m looking forward to seeing where it goes. When I ever get to a point where I can pass my source along, I’ll share too. Take care!
Ken Azuma
03 aug 2008
This is great app! Thanks Robby. If you had any plan to translate it into other language like Japanese, please let me know.
Best,
Ken Azuma
NgocLuu
03 aug 2008
So cool!
Robby Ingebretsen
03 aug 2008
Thanks for all of the positive feedback folks!
@fabiopedrosa: Good call. I posted a binary here: http://blog.nerdplusart.com/wp-content/uploads/2008/08/thoughtbox_v01_binaries.zip. Keep in mind that this is not a functioning app though!
@Darren: looking forward to the sharing.
@Ken: I would LOVE to have it translated. Once I finish this up, maybe you could help me.
NgocLuu
04 aug 2008
Will you apply M-V-VM pattern to this cool app?
lqd
06 aug 2008
Hey robby, first of all this all looks real cool and yummy
we all know you’ve got some serious skills, so stop showing off huh
(actually i’d want to see more …)
A couple of thoughts, first the reference tab flows under the states bar with the default window width. No iggie.
Then how ’bout losing the glass and window decorations, more white space for free. Integrating the thoughtbox logo and title in the states bar as the first state but differentiated enough, to represent the ‘all’ states you said you forgot at the wireframing level (the “thoughtbox state” ?), and finally adding the window decorations to the far right, in case someone wants to close the app, i don’t know why they would, you constantly have some things to do, you need your thoughtbox.
Multiple contexts ? Tags ? Notes integrated right under the item ?
Don’t get me wrong i’m not trying to make you work more week-ends
(I’ll translate it in french for you)
Honestly, this is great stuff robby, thanks for sharing !