Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1a1a2a4e authored by Michael Enoma's avatar Michael Enoma
Browse files

Add sample data and various tools attributes to layouts

parent 527b8a7a
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    android:orientation="vertical"
    tools:context=".widget.unread.UnreadWidgetConfigurationActivity">

    <include layout="@layout/toolbar" />

+19 −0
Original line number Diff line number Diff line
{
  "data": [
    {
      "name": "Personal",
      "email": "user@domain.example",
      "color": "#FF1976D2"
    },
    {
      "name": "Work",
      "email": "firstname.lastname@work.example",
      "color": "#FFE91E63"
    },
    {
      "name": "Club",
      "email": "name@sportsclub.example",
      "color": "#FFFFB300"
    }
  ]
}
+48 −0
Original line number Diff line number Diff line
{
  "data": [
    {
      "name": "Inbox",
      "icon": "?attr/iconFolderInbox"
    },
    {
      "name": "Outbox",
      "icon": "?attr/iconFolderOutbox"
    },
    {
      "name": "Archive",
      "icon": "?attr/iconFolderArchive"
    },
    {
      "name": "Drafts",
      "icon": "?attr/iconFolderDrafts"
    },
    {
      "name": "Sent",
      "icon": "?attr/iconFolderSent"
    },
    {
      "name": "Spam",
      "icon": "?attr/iconFolderSpam"
    },
    {
      "name": "Trash",
      "icon": "?attr/iconFolderTrash"
    },
    {
      "name": "Regular folder",
      "icon": "?attr/iconFolder"
    },
    {
      "name": "Another folder",
      "icon": "?attr/iconFolder"
    },
    {
      "name": "And yet another folder",
      "icon": "?attr/iconFolder"
    },
    {
      "name": "Folder",
      "icon": "?attr/iconFolder"
    }
  ]
}
+43 −0
Original line number Diff line number Diff line
package com.fsck.k9.ui.onboarding

import android.app.Activity
import android.content.Intent
import android.os.Bundle
import androidx.navigation.NavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.setupActionBarWithNavController
import com.fsck.k9.ui.R
import com.fsck.k9.ui.base.K9Activity
import com.fsck.k9.ui.base.extensions.findNavController

class OnboardingActivity : K9Activity() {
    private lateinit var navController: NavController

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setLayout(R.layout.activity_onboarding)
        setTitle(R.string.account_setup_basics_title)

        initializeActionBar()
    }

    private fun initializeActionBar() {
        val appBarConfiguration = AppBarConfiguration(topLevelDestinationIds = setOf(R.id.welcomeScreen))

        navController = findNavController(R.id.nav_host_fragment)
        setupActionBarWithNavController(navController, appBarConfiguration)
    }

    override fun onSupportNavigateUp(): Boolean {
        return navController.navigateUp() || super.onSupportNavigateUp()
    }

    companion object {
        @JvmStatic fun launch(activity: Activity) {
            val intent = Intent(activity, OnboardingActivity::class.java).apply {
                flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
            }
            activity.startActivity(intent)
        }
    }
}
+62 −0
Original line number Diff line number Diff line
package com.fsck.k9.ui.onboarding

import android.os.Bundle
import android.text.method.LinkMovementMethod
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.fragment.app.Fragment
import androidx.navigation.fragment.findNavController
import com.fsck.k9.ui.BuildConfig
import com.fsck.k9.ui.R
import com.fsck.k9.ui.helper.HtmlToSpanned
import com.fsck.k9.ui.observeNotNull
import com.fsck.k9.ui.settings.import.SettingsImportResultViewModel
import com.fsck.k9.ui.settings.import.SettingsImportSuccess
import org.koin.android.ext.android.inject
import org.koin.androidx.viewmodel.ext.android.sharedViewModel

class WelcomeFragment : Fragment() {
    private val htmlToSpanned: HtmlToSpanned by inject()
    private val importResultViewModel: SettingsImportResultViewModel by sharedViewModel()

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        return inflater.inflate(R.layout.fragment_welcome_message, container, false)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        val welcome: TextView = view.findViewById(R.id.welcome_message)
        welcome.text = htmlToSpanned.convert(getString(R.string.accounts_welcome))
        welcome.movementMethod = LinkMovementMethod.getInstance()

        view.findViewById<View>(R.id.next).setOnClickListener { launchAccountSetup() }
        view.findViewById<View>(R.id.import_settings).setOnClickListener { launchImportSettings() }

        importResultViewModel.settingsImportResult.observeNotNull(this) {
            if (it == SettingsImportSuccess) {
                launchMessageList()
            }
        }
    }

    private fun launchAccountSetup() {
        if (BuildConfig.USE_NEW_SETUP_UI_FOR_ONBOARDING) {
            findNavController().navigate(R.id.action_welcomeScreen_to_newAddAccountScreen)
        } else {
            findNavController().navigate(R.id.action_welcomeScreen_to_addAccountScreen)
            requireActivity().finish()
        }
    }

    private fun launchImportSettings() {
        findNavController().navigate(R.id.action_welcomeScreen_to_settingsImportScreen)
    }

    private fun launchMessageList() {
        findNavController().navigate(R.id.action_welcomeScreen_to_messageListScreen)
        requireActivity().finish()
    }
}
Loading