Git Product home page Git Product logo

androlabs's Introduction

androlabs's People

Contributors

pranavpurwar avatar rivanparmar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

pranavpurwar

androlabs's Issues

Add the custom FAB to AndroLabsApp file

Note: This task should be done only after #7 is closed.

  • The custom FAB should be added to the AndroLabsApp file in the Scaffold.
  • The FAB should be positioned above the Navigation Bar on small screen devices, while it should be present above the Navigation Rail items on large screen devices.
  • The variables shouldShowBottomBar and shouldShowNavRail available in the AndroLabsAppState can be used to position the FAB accordingly.

NavRail items aren't centered

Describe the bug
The code in AndroLabsApp.kt states that the items of the NavRail are aligned to the center of the rail however, that is not happening. Instead the items move to the bottom of the rail.

To Reproduce
Steps to reproduce the behavior:

  1. Go to any of the TopLevelDestinations

Expected behavior
The NavRail items should be aligned to the center of the rail.

Create a custom Search Bar

Note: This task should only be done after #9 is closed.

  • The composable function for the SearchBar should be named as ALSearchBar and should wrap the Material 3 SearchBar.
  • The SearchBar should be present in a file named SearchBar in the components folder of :core:designsystem module.
  • A different function should also be created for a DockedSearchBar for use on large screen devices.

Hide FAB on Settings screen

The FAB on the TopLevelDestinations should be hidden when a user navigates to the Settings screen. This is because the FAB isn't required there.

Create a module named "database"

  • A module for databases is required for the app.
  • The module should be named as database and should be present inside the core module.
  • The plugins for the module should include androlabs.android.library and androlabs.android.room.

Add a convention plugin for Room database

  • A convention plugin needs to be created for configuration of Room database.
  • The plugin should be created in the convention folder in build-plugins.
  • The file for plugin should be named as AndroidRoomConventionPlugin.

Create JDK port for the app

Description:
A JDK port for Android is required for the app to be able to compile and run the code. The JDK should contain javac compiler along with the jshell. The javac compiler can compile Java code to byte code, while the jshell implements REPL, i.e., the "Read-Eval-Print-Loop". The REPL shall help the app to run Java code without having to compile it.

Modules to be included:
The following modules from the JDK should be present in the port along with the modules that these modules are dependent on:

  • java.compiler
  • jdk.compiler
  • jdk.jshell
  • jdk.zipfs

Use pre-release version for Material 3 library

The app now requires a Search Bar to search for items in lists. The Material library has got a Search Bar that can be used in the app. However having used Material 3 components throughout the app, the Material Search Bar would not align with the overall design of the app. Therefore to use the Material 3 SearchBar, the version of the library needs to be updated to the pre-release version, i.e., 1.1.0-alpha05 as the Search Bar isn't available in the current stable version.

Add documentation for build-plugins

Create a README.md inside the build-plugins folder. The file should:

  • contain proper description of what the build-plugins project does.
  • describe the various convention plugins available and what each plugin does.
  • contain sample reference to implement such plugins.
  • be clear and concise.

[Task]: Complete Module.kt

Description
Task to complete the Module.kt interface.
The interface will be used to open modules present in the project.

Implementation

  • The interface should implement UserDataHolderEx from the Kotlin compiler.
  • The interface will have 9 functions.
  • These functions are:
    getRootFile()
    • This function should have a return type of java.io.File
    getName()
    • This function should have a return type of String
    • The function should return getRootFile().name by default
    open()
    • This function should not return anything
    • The function should be annotated with Throws(IOException::class)
    • The function will be responsible for parsing the contents of the module and may throw IOException of something goes wrong during parsing
    clear()
    • This function should not return anything
    • The function will be responsible for removing all the indexed files
    index()
    • This function should not return anything
    • The function will be responsible for indexing all the files
    addChildModule()
    • This function should not return anything
    • The function should take a Module as a parameter
    • The function will be responsible for adding child modules to the provided module
    getModuleDependencies()
    • This function should have a return type of Set<String>
    • The function should return Collections.emptySet() by default
    • The function will be used for getting the dependencies of the module
  • The last two functions will be implemented once the Project class has been created.

File location
Module: project
File: Module.kt

Create a custom Floating Action Button (FAB)

  • The FAB composable function should be named as ALFloatingActionButton and should wrap the Material 3 FloatingActionButton.
  • The FAB should be present in a file named FloatingActionButton in the components folder of :core:designsystem module.
  • The FAB should take any content for now.
  • The default content should be the Add icon.
  • The FAB's background color should be tertiary.

[TODO]: Implement custom Tab and TabRow

We will need a custom implementation of Tab and TabRow for the New Project Wizard screen. The tabs will be used to allow the users to select various types of activities based on the device type (similar to the Android Studio new project wizard).

[TODO]: Create a FAB that expands into a sheet

Currently, the FAB (ALFloatingActionButton) uses a normal FloatingActionButton. However, we need a FAB that can expand into a sheet like below:

l789s5b1-04.-.Medium.Durations.mp4

(Source: m3.material.io)

The options that should be shown are:

  • "New Project"
  • "Open Project" or "Import"
  • "Get from VCS"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.