====== Areas of concern for rearchitecture discussions ======
[[android:object_guidelines|Android Object Design Guidelines]]
[[android:code_formatting|Android Source Format Guidelines]]
** Prio is (mja/bc) **
* [[android:layer generalization|Layer Generalization]] ( 2 / 1 ) -> 1.5
* **Done 2016**
* Old model had few instances based on LayerEnum (compile time tags)
* Newer model (SmartPlan/TrackManager) needs layers distinguished by runtime tags (names?)
* Can create new layer and drawables for things that require project inspection by renderer. (e.g. user location).
* [[android:code_modernization|Code modernization]] ( 3 / 2 ) -> 2.5
* Remove deprecated dialog interaction in SmartsuiteActivity, etal.
* Implement new (API 23) [[android:lpermission model|permission model]]
* Rewrite activities to avoid needing "noOrientation" activity flagm, use savedState
* Relace some activies with Fragments, e.g. SG Alignment, recovery, task chooser
* 64 bit versions of the .so files (need NDK modernization?)
* [[android:code_modernization|NDK]] ( 11 / 11 ) -> 11 2.5 (by lumping in with Code Modernization)
* Use more modern NDK / Approved Gradle build scheme.
* Strip un-needed .so files from some apps, such as Trimble from everything except for Grade/Blade
* See 64 bit native implementation note in Code Modernization.
* Warnings: ( 9 / 4 ) -> 6.5 2.6
* Handler (replace with Runnables)
* Processing classes
* Reformatting of source
* Diamond operator
* Examine every single ToDo: Fix, ameliorate, remove
* [[android:project_class_refactoring|Project class refactoring]] ( 1 / 6 ) -> 3.5
* App vs. AGTEK_Lib; e.g. SD vs. All, SG/SB vs. rest; not needed code
* e.g. carry too much un-needed functionality on some apps (e.g. highway aligns in SmartPlan, etc)
* e.g. too much inheritence from unwanted apps.
* Too many times in which m_project must be cast to the specific class when in main activity to use app specific methods.
* Testing ( 5 / 3 ) -> 4
* Improve unit test coverage / unit test instances
* Implement UI tests
* Alignment classes (4 / 8) -> 6
* Make easier for use in applications
* Q: Why does an application need it's own alignment classes?
* Q: Why is "defaultAlignment" called what it is? Isn't it just a "singlePoint" alignment, vs. a dual alignment?
* Currently there are alignment methods in Project classes, activity classes, and projection vs. alignment: reduce
* Final isolation of graphics from Project/Layer objects ( 8 / 5 ) -> 6.5
* (no reading the project)
* Shaders
* No more coupling to Project class
* Repackage to non smartsuite
* Multi thread impl to speed things up. ( 7 / 7 ) -> 7
* e.g.draping, isopach?
* e.g. Measure volume computation parallelization
* Action Item: identify other areas to be parallelized.
* ADF evolution ( 6 / 9 ) -> 7.5
* Define layer visibility entry
* Define layer color
* Allow layer properties
* Saved measure area
* Draw area on layers
* Allow layers with LLA lines, not just NEZ.
* View type structure for ADF, explicit vs. app implicit
* UI ( 10 / 10 ) -> 10
* Common bits like MeasureArea entry.
* Better tree-view (current one has too much exposed functionality).
* ActionItem: Identify other common UI bits.
* CachedProjectManager ( 12 / 12 ) -> 12
* Better mirror of project structure (sub folders)
* background syncrhonization with server
* Allow prefetch of file contents (e.g. referenced images? AKA pre-cache)
* File Hell
* We are starting to create a classic CAD file hell: Lots and lots and lots of files and you can't recreate what you have sompleace else because there are too many local files or hidden files and you need a special export/import routine to collect them all in one place or put them back in the right places.
* KMZ vs ADF
* Photos
* Notes
* Tracks
* Measure