Now that Weatherfire is feature-complete (at least for the first release), I just have some little things left to do.
The two biggest things from a user’s point of view is that the help needs to be written and the options screen still has to be implemented. The only thing that’s going to be on the options screen to start with is a button to choose whether the metric or imperial units should be used, but that’s pretty important.
There are a handful of minor things that need to be done as well. For instance, currently if there is a decimal value for one of the info fields it will display the entire length. “2.66666666667” (or however many digits it is) doesn’t look very good, and instead the number of decimal places will probably be limited to two.
Also, I’m going to work on some optimizations. As the program is right now there are noticeable delays when switching to a new screen, in particular the info screens, as the app is processing a large amount of data and locks up the UI while it’s doing so. This isn’t that big of an issue if the user has only entered in a small amount of data, but as more and more is added the lag will become more obvious.
Some fixes:
- I’ve just been trying to get this done quickly without really caring about optimizations so far, so there is plenty of redundant code that can be cut. There’s a lot of computing the same data repeatedly within the same functions, so I can remove all the duplicates.
- I might move the data computing code into a separate worker so it doesn’t block the main thread. The UI would be created and displayed first, with the data filled in once the calculations are complete. I’m not certain that this is a good idea though, as it still makes the app look like it’s lagging.
- Currently if the info screens are accessed multiple times without additional data being added, the info has to be calculated each time, despite that it will still be the same. It would reduce the delays further if the calculated info was cached, so then if the screen was accessed again the data could simply be taken from the cache.