diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index bb9ca60..95a386a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -35,9 +35,17 @@ + + android:name=".ui.main.MainActivity" + android:screenOrientation="${orientation}" > + + + + + + + > (){{ put(ViewNames.LOGIN_ACTIVITY, LoginActivity.class); put(ViewNames.LOBBY_ACTIVITY, LobbyActivity.class); - put(ViewNames.MEETING_ACTIVITY, MeetingActivity.class); put(ViewNames.SESSION_ACTIVITY, SessionActivity.class); put(ViewNames.LIST_ACTIVITY, ListSessionsActivity.class); + put(ViewNames.MAIN_ACTIVITY, MainActivity.class); }}; public void goNext(Context context, String activityName, boolean shouldClearStack) diff --git a/app/src/main/java/br/org/cesar/discordtime/stickysessions/ui/ViewNames.java b/app/src/main/java/br/org/cesar/discordtime/stickysessions/ui/ViewNames.java index 32597f3..04429fd 100644 --- a/app/src/main/java/br/org/cesar/discordtime/stickysessions/ui/ViewNames.java +++ b/app/src/main/java/br/org/cesar/discordtime/stickysessions/ui/ViewNames.java @@ -7,5 +7,6 @@ public class ViewNames { public static final String MEETING_ACTIVITY = "meeting_activity"; public static final String SESSION_ACTIVITY = "session_activity"; public static final String LIST_ACTIVITY = "list_activity"; + public static final String MAIN_ACTIVITY = "main_activity"; } diff --git a/app/src/main/java/br/org/cesar/discordtime/stickysessions/ui/lobby/LobbyActivity.java b/app/src/main/java/br/org/cesar/discordtime/stickysessions/ui/lobby/LobbyActivity.java index 07de312..d5c19da 100644 --- a/app/src/main/java/br/org/cesar/discordtime/stickysessions/ui/lobby/LobbyActivity.java +++ b/app/src/main/java/br/org/cesar/discordtime/stickysessions/ui/lobby/LobbyActivity.java @@ -47,7 +47,7 @@ public class LobbyActivity extends AppCompatActivity implements LobbyContract.Vi protected void onCreate(Bundle savedInstanceState) { setTheme(R.style.AppTheme); super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); + setContentView(R.layout.activity_lobby); ((StickySessionApplication) getApplication()).inject(this); diff --git a/app/src/main/java/br/org/cesar/discordtime/stickysessions/ui/login/LoginActivity.kt b/app/src/main/java/br/org/cesar/discordtime/stickysessions/ui/login/LoginActivity.kt index df1ba4a..192e782 100644 --- a/app/src/main/java/br/org/cesar/discordtime/stickysessions/ui/login/LoginActivity.kt +++ b/app/src/main/java/br/org/cesar/discordtime/stickysessions/ui/login/LoginActivity.kt @@ -106,8 +106,8 @@ class LoginActivity : AppCompatActivity() { // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...); if (requestCode == RC_SIGN_IN) { - val task = GoogleSignIn.getSignedInAccountFromIntent(data) try { + val task = GoogleSignIn.getSignedInAccountFromIntent(data) // Google Sign In was successful, authenticate with Firebase val account = task.getResult(ApiException::class.java) firebaseAuthWithGoogle(account!!) diff --git a/app/src/main/java/br/org/cesar/discordtime/stickysessions/ui/main/MainActivity.kt b/app/src/main/java/br/org/cesar/discordtime/stickysessions/ui/main/MainActivity.kt new file mode 100644 index 0000000..65cc5b7 --- /dev/null +++ b/app/src/main/java/br/org/cesar/discordtime/stickysessions/ui/main/MainActivity.kt @@ -0,0 +1,104 @@ +package br.org.cesar.discordtime.stickysessions.ui.main + +import android.os.Build +import android.os.Bundle +import android.view.Menu +import android.view.MenuItem +import android.widget.TextView +import androidx.appcompat.app.ActionBarDrawerToggle +import androidx.appcompat.app.AppCompatActivity +import androidx.appcompat.widget.Toolbar +import androidx.core.content.ContextCompat +import androidx.core.graphics.drawable.DrawableCompat +import androidx.core.view.GravityCompat +import br.org.cesar.discordtime.stickysessions.R +import br.org.cesar.discordtime.stickysessions.ui.meeting.MeetingFragment +import com.google.android.material.navigation.NavigationView +import com.google.android.material.snackbar.Snackbar + +import kotlinx.android.synthetic.main.activity_main.* +import kotlinx.android.synthetic.main.activity_main_app_bar.* + +class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener { + + private lateinit var mToolbarTitle: TextView + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_main) + configureToolbar() + + fab.setOnClickListener { view -> + Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) + .setAction("Action", null).show() + } + + supportFragmentManager.beginTransaction() + .replace(R.id.main_container, MeetingFragment()).commit() + } + + private fun configureToolbar() { + val toolbar = findViewById(R.id.toolbar) + setSupportActionBar(toolbar) + + supportActionBar?.apply { + setDisplayShowHomeEnabled(true) + setDisplayHomeAsUpEnabled(true) + } + + mToolbarTitle = findViewById(R.id.toolbar_title) + mToolbarTitle.apply { + text = getString(R.string.nav_header_desc) + } + + val toggle = ActionBarDrawerToggle( + this, drawer_layout, toolbar, R.string.navigation_drawer_open, + R.string.navigation_drawer_close + ) + + drawer_layout.addDrawerListener(toggle) + toggle.syncState() + + nav_view.setNavigationItemSelectedListener(this) + } + + override fun onBackPressed() { + if (drawer_layout.isDrawerOpen(GravityCompat.START)) { + drawer_layout.closeDrawer(GravityCompat.START) + } else { + super.onBackPressed() + } + } + + override fun onCreateOptionsMenu(menu: Menu): Boolean { + menuInflater.inflate(R.menu.drawer_menu, menu) + + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { + val icon = menu.findItem(R.id.notification_menu).icon + val drawable = DrawableCompat.wrap(icon) + DrawableCompat.setTint(drawable, ContextCompat.getColor(this, R.color.coral)) + menu.findItem(R.id.notification_menu).apply { + setIcon(drawable) + } + } + + return true + } + + override fun onNavigationItemSelected(item: MenuItem): Boolean { + when (item.itemId) { + R.id.nav_meetings -> { showMeetingFragment() } + R.id.nav_about -> { } + R.id.nav_settings -> { } + } + + drawer_layout.closeDrawer(GravityCompat.START) + return true + } + + private fun showMeetingFragment() { + supportFragmentManager.beginTransaction() + .replace(R.id.main_container, MeetingFragment()).commit() + } + +} diff --git a/app/src/main/java/br/org/cesar/discordtime/stickysessions/ui/meeting/MeetingActivity.kt b/app/src/main/java/br/org/cesar/discordtime/stickysessions/ui/meeting/MeetingFragment.kt similarity index 67% rename from app/src/main/java/br/org/cesar/discordtime/stickysessions/ui/meeting/MeetingActivity.kt rename to app/src/main/java/br/org/cesar/discordtime/stickysessions/ui/meeting/MeetingFragment.kt index e7326e3..b2de515 100644 --- a/app/src/main/java/br/org/cesar/discordtime/stickysessions/ui/meeting/MeetingActivity.kt +++ b/app/src/main/java/br/org/cesar/discordtime/stickysessions/ui/meeting/MeetingFragment.kt @@ -3,12 +3,13 @@ package br.org.cesar.discordtime.stickysessions.ui.meeting import android.annotation.SuppressLint import android.os.Bundle import android.util.Log +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import android.widget.ProgressBar -import android.widget.TextView -import androidx.appcompat.app.AppCompatActivity -import androidx.appcompat.widget.Toolbar +import androidx.fragment.app.Fragment import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView import br.org.cesar.discordtime.stickysessions.R import br.org.cesar.discordtime.stickysessions.app.StickySessionApplication import br.org.cesar.discordtime.stickysessions.navigation.exception.InvalidViewNameException @@ -18,42 +19,38 @@ import br.org.cesar.discordtime.stickysessions.navigation.wrapper.IViewStarter import br.org.cesar.discordtime.stickysessions.presentation.meeting.MeetingContract import br.org.cesar.discordtime.stickysessions.presentation.meeting.MeetingItem import br.org.cesar.discordtime.stickysessions.ui.ViewNames -import kotlinx.android.synthetic.main.activity_meeting.* import javax.inject.Inject -import kotlinx.android.synthetic.main.activity_meeting.recycler_view_meetings as mRecyclerView -class MeetingActivity : AppCompatActivity(), MeetingContract.View { +class MeetingFragment : Fragment(), MeetingContract.View { @Inject lateinit var mPresenter: MeetingContract.Presenter @Inject lateinit var mViewStarter: IViewStarter - lateinit var mProgressBar: ProgressBar - lateinit var mAdapter: MeetingItemAdapter + private lateinit var mProgressBar: ProgressBar + private lateinit var mRecyclerView: RecyclerView + private lateinit var mAdapter: MeetingItemAdapter override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - setContentView(R.layout.activity_meeting) - (application as StickySessionApplication).inject(this) - - mProgressBar = findViewById(R.id.progressbar) - configureToolbar() - configureRecycleView() + (activity?.application as StickySessionApplication).inject(this) } - private fun configureToolbar() { - val toolbar = findViewById(R.id.toolbar) - setSupportActionBar(toolbar) + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle?): View? { + val rootView = inflater.inflate(R.layout.fragment_meeting, container, false) - val toolbarTitle = findViewById(R.id.toolbar_title) - toolbarTitle.setText(R.string.toolbar_title_meetings) + mProgressBar = rootView.findViewById(R.id.progressbar) + configureRecyclerView(rootView) + return rootView } @SuppressLint("CheckResult") - private fun configureRecycleView() { - mAdapter = MeetingItemAdapter(this) + private fun configureRecyclerView(rootView: View) { + mAdapter = MeetingItemAdapter(rootView.context) + mRecyclerView = rootView.findViewById(R.id.recycler_view_meetings) mRecyclerView.apply { - layoutManager = LinearLayoutManager(this@MeetingActivity) + layoutManager = LinearLayoutManager(rootView.context) adapter = mAdapter } mAdapter.clickEvent.subscribe { @@ -100,10 +97,10 @@ class MeetingActivity : AppCompatActivity(), MeetingContract.View { @Throws(InvalidViewNameException::class) override fun goNext(route: Route, bundle: IBundle) { - mViewStarter.goNext(this, route.to, route.shouldClearStack, bundle) + mViewStarter.goNext(activity, route.to, route.shouldClearStack, bundle) } companion object { - const val TAG = "MeetingActivity" + const val TAG = "MeetingFragment" } } diff --git a/app/src/main/res/color/drawer_item.xml b/app/src/main/res/color/drawer_item.xml new file mode 100644 index 0000000..d772db7 --- /dev/null +++ b/app/src/main/res/color/drawer_item.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_about.xml b/app/src/main/res/drawable/ic_about.xml new file mode 100644 index 0000000..e3c2ae8 --- /dev/null +++ b/app/src/main/res/drawable/ic_about.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_coffee.xml b/app/src/main/res/drawable/ic_coffee.xml new file mode 100644 index 0000000..96df31a --- /dev/null +++ b/app/src/main/res/drawable/ic_coffee.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_logout.xml b/app/src/main/res/drawable/ic_logout.xml new file mode 100644 index 0000000..6f40d77 --- /dev/null +++ b/app/src/main/res/drawable/ic_logout.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_send.xml b/app/src/main/res/drawable/ic_menu_send.xml new file mode 100644 index 0000000..9745066 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_send.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_menu_share.xml b/app/src/main/res/drawable/ic_menu_share.xml new file mode 100644 index 0000000..b3e39e2 --- /dev/null +++ b/app/src/main/res/drawable/ic_menu_share.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_notification.xml b/app/src/main/res/drawable/ic_notification.xml new file mode 100644 index 0000000..232803d --- /dev/null +++ b/app/src/main/res/drawable/ic_notification.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_settings.xml b/app/src/main/res/drawable/ic_settings.xml new file mode 100644 index 0000000..d36e89c --- /dev/null +++ b/app/src/main/res/drawable/ic_settings.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/font/roboto.xml b/app/src/main/res/font/roboto.xml new file mode 100644 index 0000000..2641caf --- /dev/null +++ b/app/src/main/res/font/roboto.xml @@ -0,0 +1,7 @@ + + + diff --git a/app/src/main/res/font/roboto_bold.xml b/app/src/main/res/font/roboto_bold.xml new file mode 100644 index 0000000..1e8c20a --- /dev/null +++ b/app/src/main/res/font/roboto_bold.xml @@ -0,0 +1,7 @@ + + + diff --git a/app/src/main/res/layout/activity_lobby.xml b/app/src/main/res/layout/activity_lobby.xml new file mode 100644 index 0000000..781346d --- /dev/null +++ b/app/src/main/res/layout/activity_lobby.xml @@ -0,0 +1,49 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 3bb5322..0248be2 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,50 +1,34 @@ - + android:fitsSystemWindows="true" + tools:openDrawer="start"> - + android:layout_height="match_parent"/> - - - + android:layout_height="match_parent" + android:layout_gravity="start" + android:fitsSystemWindows="true" + android:background="@color/white" + app:itemIconTint="@color/drawer_item" + app:itemTextColor="@color/drawer_item" + app:itemBackground="@color/white" + app:headerLayout="@layout/activity_main_nav_header" + app:menu="@menu/profile_menu_drawer"> + + + + - + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main_app_bar.xml b/app/src/main/res/layout/activity_main_app_bar.xml new file mode 100644 index 0000000..f6e491e --- /dev/null +++ b/app/src/main/res/layout/activity_main_app_bar.xml @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main_bottom.xml b/app/src/main/res/layout/activity_main_bottom.xml new file mode 100644 index 0000000..cf605db --- /dev/null +++ b/app/src/main/res/layout/activity_main_bottom.xml @@ -0,0 +1,45 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main_content.xml b/app/src/main/res/layout/activity_main_content.xml new file mode 100644 index 0000000..b2b3d2e --- /dev/null +++ b/app/src/main/res/layout/activity_main_content.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main_nav_header.xml b/app/src/main/res/layout/activity_main_nav_header.xml new file mode 100644 index 0000000..60fb18a --- /dev/null +++ b/app/src/main/res/layout/activity_main_nav_header.xml @@ -0,0 +1,45 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_meeting.xml b/app/src/main/res/layout/activity_meeting.xml deleted file mode 100644 index 1e0686d..0000000 --- a/app/src/main/res/layout/activity_meeting.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - diff --git a/app/src/main/res/layout/fragment_meeting.xml b/app/src/main/res/layout/fragment_meeting.xml new file mode 100644 index 0000000..cd19d6b --- /dev/null +++ b/app/src/main/res/layout/fragment_meeting.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/menu-v26/drawer_menu.xml b/app/src/main/res/menu-v26/drawer_menu.xml new file mode 100644 index 0000000..7368cb9 --- /dev/null +++ b/app/src/main/res/menu-v26/drawer_menu.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/drawer_menu.xml b/app/src/main/res/menu/drawer_menu.xml new file mode 100644 index 0000000..9f2c6b5 --- /dev/null +++ b/app/src/main/res/menu/drawer_menu.xml @@ -0,0 +1,16 @@ + + + >>>>>> 9b34ef6... Create the main screen with new UX/UI using DrawerNavigation + app:showAsAction="always" + android:title="@string/bt_share_session"> + + \ No newline at end of file diff --git a/app/src/main/res/menu/profile_menu_drawer.xml b/app/src/main/res/menu/profile_menu_drawer.xml new file mode 100644 index 0000000..da04616 --- /dev/null +++ b/app/src/main/res/menu/profile_menu_drawer.xml @@ -0,0 +1,22 @@ + + + + + + + + + + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 9c4280b..d5f5a88 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -8,10 +8,11 @@ #ffc000 #ffffff + #000000 #f3f3f3 #42023e #2d042a - #ff534b + #FF534B #b3ffffff #8b8b8b diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 57d8862..ea1854a 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -1,4 +1,12 @@ 147dp + + + 16dp + 16dp + 8dp + 176dp + 16dp + 13sp \ No newline at end of file diff --git a/app/src/main/res/values/preloaded_fonts.xml b/app/src/main/res/values/preloaded_fonts.xml index f353d83..1d19856 100644 --- a/app/src/main/res/values/preloaded_fonts.xml +++ b/app/src/main/res/values/preloaded_fonts.xml @@ -2,5 +2,7 @@ @font/annie_use_your_telescope + @font/roboto + @font/roboto_bold diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index eececf8..9e63826 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -35,10 +35,28 @@ responses 6 responses + dot icon representing sessions icon representing participants %s %s Recents Older + + Open navigation drawer + Close navigation drawer + Maria Silva + maria.silva@gmail.com + Navigation header + Meetings + About + Settings + v %1$s + Logout Icon + LOG OUT + + meetings + + + Hello blank fragment diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 3bdaee5..c0fd428 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -149,4 +149,21 @@ @color/chip_state_colors + + + + + + + +