This commit fixes a major bug which caused the IDE to lag and freeze when the number of lines in the log view reached 5000 lines.
When this threshold id is reached, the IDE starts to trim lines at the start. However, it trims one line at a time which causes the lag when the frequency of log lines is high.
With this commit, the IDE will trim the lines as usual but a large number of lines will be trimmed at once (300 lines as of this commit). This will delay the next trim cycle and would not block the UI thread.
* refactor: A bunch of (mostly XML) styling
* fix(Main Activity): Make use of a dedicated Splash Activity to enable Dynamic coloring in MainActivity
* feat(edge-to-edge): Ground work to support edge-to-edge experiences throughout the IDE
* fix(edge-to-edge): Manually set bottom padding for fragment containment
* feat(edge-to-edge): Allow full activity rebuild on configuration changes for MainActivity. This allows to ship more specific layout changes and is a ground work to support split screen mode.
* Bug introduced: templates are not shown in the TemplateListFragment after full activity rebuild
* fix: Finish the Splash Activity after launching the Main one
* fix(templates): The list of templates no longer disappears after an activity rebuild or a configuration change
* fix(templates): Keep OnGlobalLayoutListener attached while the View is alive. This ensures that the last item in template list is always aligned to the start.
* feat(design): Custom layout for MainActivity's main fragment in landscape mode
* feat(edge-to-edge): Implement edge-to-edge for PreferencesActivity, move InsetUtils outside of the LimitlessIDEActivity.
* refactor(IDEPreferencesFragment.kt): Comply with the line-length rule, fix a one-line if statement to follow the general codestyle
* refactor(edge-to-edge): Remove PaddingUtils.kt
The reasoning behind this is that after `view.setPadding(left, top, right, bottom)` is executed, `view.getPaddingBottom()` (or for any other side) still returns the old value of padding before the view is measured again. Therefore the implementation of PaddingUtils.kt produces an unwanted and unexpected behaviour.
* feat(edge-to-edge): Create a BottomInsetHeightDistributor view
* fix(templates/design): Use OutlinedButton style for the *Exit* button inside the *New project* wizard's footer
* refactor: Comply with AndroidIDE's code style
* refactor: Make use of helper methods. Optimize XML
* fix(edge-to-edge): Wrong system bar coloring in Dark Mode
* Implement a preference to always show the File Tree action in the toolbar
* Create the ExtendedMenuToolbar which tries to keep as many actions as possible outside of the overflow menu
* Repurpose the show-file-tree-button preference into hide-file-tree-button. Reason: the button is always technically shown, especially if we consider users with large screens.
* Move ExtendedMenuToolbar.kt into com.itsaky.androidide.ui in :common. Fix resource compilation error by escaping the apostrophe.
* Check whether the gesture navigation is enabled for setting the default value of idepref_editor_hide_file_tree_button
* Remove an unnecessary onAttachedToWindow() override