Refactor to have only one activity
This commit is contained in:
@@ -26,7 +26,6 @@ class MainActivity : AppCompatActivity() {
|
|||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContentView(R.layout.activity_main)
|
setContentView(R.layout.activity_main)
|
||||||
preferences.contains(USERNAME) || return
|
preferences.contains(USERNAME) || return
|
||||||
setContentView(R.layout.activity_main)
|
|
||||||
val nav = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
|
val nav = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
|
||||||
nav.navController.navigate(R.id.repository_list_fragment)
|
nav.navController.navigate(R.id.repository_list_fragment)
|
||||||
}
|
}
|
||||||
@@ -38,7 +37,7 @@ class MainActivity : AppCompatActivity() {
|
|||||||
REPOSITORY_NAME to repository.name
|
REPOSITORY_NAME to repository.name
|
||||||
)
|
)
|
||||||
val nav = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
|
val nav = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
|
||||||
nav.navController.navigate(R.id.activity_list_fragment, bundle)
|
nav.navController.navigate(R.id.repository_details_fragment, bundle)
|
||||||
}
|
}
|
||||||
|
|
||||||
class RepositoryListFragmentFactory(
|
class RepositoryListFragmentFactory(
|
||||||
|
@@ -1,57 +0,0 @@
|
|||||||
package fr.uca.iut.clfreville2.teaiswarm
|
|
||||||
|
|
||||||
import android.content.Intent
|
|
||||||
import android.os.Bundle
|
|
||||||
import android.widget.TextView
|
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
|
||||||
import androidx.lifecycle.lifecycleScope
|
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
|
||||||
import fr.uca.iut.clfreville2.teaiswarm.model.RepositoryIdentifier
|
|
||||||
import fr.uca.iut.clfreville2.teaiswarm.model.VersionedFile
|
|
||||||
import fr.uca.iut.clfreville2.teaiswarm.network.GiteaService
|
|
||||||
import kotlinx.coroutines.launch
|
|
||||||
|
|
||||||
const val FILE_PATH = "file_path"
|
|
||||||
|
|
||||||
class RepositoryDetailActivity : AppCompatActivity() {
|
|
||||||
|
|
||||||
private val service = GiteaService()
|
|
||||||
private lateinit var repositoryName: TextView
|
|
||||||
private lateinit var versionedFiles: RecyclerView
|
|
||||||
|
|
||||||
private lateinit var currentRepositoryOwner: String
|
|
||||||
private lateinit var currentRepositoryName: String
|
|
||||||
private var currentFilePath: String? = null
|
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
|
||||||
super.onCreate(savedInstanceState)
|
|
||||||
setContentView(R.layout.activity_repository_detail)
|
|
||||||
|
|
||||||
repositoryName = findViewById(R.id.repository_detail_name)
|
|
||||||
|
|
||||||
val bundle: Bundle? = intent.extras
|
|
||||||
if (bundle != null) {
|
|
||||||
currentRepositoryOwner = bundle.getString(REPOSITORY_OWNER)!!
|
|
||||||
currentRepositoryName = bundle.getString(REPOSITORY_NAME)!!
|
|
||||||
currentFilePath = bundle.getString(FILE_PATH)
|
|
||||||
}
|
|
||||||
|
|
||||||
repositoryName.text = currentRepositoryName
|
|
||||||
|
|
||||||
versionedFiles = findViewById(R.id.versioned_files_view)
|
|
||||||
lifecycleScope.launch {
|
|
||||||
val repos = service.listFileContents(RepositoryIdentifier(currentRepositoryOwner, currentRepositoryName), currentFilePath ?: "")
|
|
||||||
versionedFiles.adapter = FileListAdapter(repos) {
|
|
||||||
file -> adapterOnClick(file)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun adapterOnClick(file: VersionedFile) {
|
|
||||||
val intent = Intent(this, RepositoryDetailActivity()::class.java)
|
|
||||||
intent.putExtra(REPOSITORY_OWNER, currentRepositoryOwner)
|
|
||||||
intent.putExtra(REPOSITORY_NAME, currentRepositoryName)
|
|
||||||
intent.putExtra(FILE_PATH, (currentFilePath ?: "") + file.name)
|
|
||||||
startActivity(intent)
|
|
||||||
}
|
|
||||||
}
|
|
@@ -0,0 +1,66 @@
|
|||||||
|
package fr.uca.iut.clfreville2.teaiswarm.fragment
|
||||||
|
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.view.View
|
||||||
|
import android.widget.Button
|
||||||
|
import android.widget.TextView
|
||||||
|
import androidx.core.os.bundleOf
|
||||||
|
import androidx.fragment.app.Fragment
|
||||||
|
import androidx.lifecycle.lifecycleScope
|
||||||
|
import androidx.navigation.fragment.findNavController
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import fr.uca.iut.clfreville2.teaiswarm.*
|
||||||
|
import fr.uca.iut.clfreville2.teaiswarm.model.RepositoryIdentifier
|
||||||
|
import fr.uca.iut.clfreville2.teaiswarm.model.VersionedFile
|
||||||
|
import fr.uca.iut.clfreville2.teaiswarm.network.GiteaService
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
|
const val FILE_PATH = "file_path"
|
||||||
|
|
||||||
|
class RepositoryDetailsFragment : Fragment(R.layout.repository_details) {
|
||||||
|
|
||||||
|
private val service = GiteaService()
|
||||||
|
private lateinit var repositoryName: TextView
|
||||||
|
private lateinit var repositoryDescription: TextView
|
||||||
|
private lateinit var activity: Button
|
||||||
|
private lateinit var versionedFiles: RecyclerView
|
||||||
|
|
||||||
|
private lateinit var currentRepositoryOwner: String
|
||||||
|
private lateinit var currentRepositoryName: String
|
||||||
|
private var currentFilePath: String? = null
|
||||||
|
|
||||||
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
repositoryName = view.findViewById(R.id.repository_detail_name)
|
||||||
|
repositoryDescription = view.findViewById(R.id.repository_detail_description)
|
||||||
|
activity = view.findViewById(R.id.repository_detail_activity)
|
||||||
|
|
||||||
|
val bundle = requireArguments()
|
||||||
|
currentRepositoryOwner = bundle.getString(REPOSITORY_OWNER)!!
|
||||||
|
currentRepositoryName = bundle.getString(REPOSITORY_NAME)!!
|
||||||
|
currentFilePath = bundle.getString(FILE_PATH)
|
||||||
|
|
||||||
|
repositoryName.text = currentRepositoryName
|
||||||
|
|
||||||
|
versionedFiles = view.findViewById(R.id.versioned_files_view)
|
||||||
|
lifecycleScope.launch {
|
||||||
|
val repos = service.listFileContents(RepositoryIdentifier(currentRepositoryOwner, currentRepositoryName), currentFilePath ?: "")
|
||||||
|
versionedFiles.adapter = FileListAdapter(repos) {
|
||||||
|
file -> adapterOnClick(file)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
activity.setOnClickListener {
|
||||||
|
findNavController().navigate(R.id.activity_list_fragment, bundle)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun adapterOnClick(file: VersionedFile) {
|
||||||
|
val bundle = bundleOf(
|
||||||
|
REPOSITORY_OWNER to currentRepositoryOwner,
|
||||||
|
REPOSITORY_NAME to currentRepositoryName,
|
||||||
|
FILE_PATH to (currentFilePath ?: "") + file.name
|
||||||
|
)
|
||||||
|
findNavController().navigate(R.id.repository_details_fragment, bundle)
|
||||||
|
}
|
||||||
|
}
|
@@ -21,6 +21,12 @@
|
|||||||
android:text="@string/repository_description"
|
android:text="@string/repository_description"
|
||||||
android:padding="16dp" />
|
android:padding="16dp" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/repository_detail_activity"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="@string/activity" />
|
||||||
|
|
||||||
<androidx.recyclerview.widget.RecyclerView
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
android:id="@+id/versioned_files_view"
|
android:id="@+id/versioned_files_view"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
@@ -24,4 +24,8 @@
|
|||||||
android:id="@+id/preferences_fragment"
|
android:id="@+id/preferences_fragment"
|
||||||
android:name="fr.uca.iut.clfreville2.teaiswarm.fragment.PreferencesFragment"
|
android:name="fr.uca.iut.clfreville2.teaiswarm.fragment.PreferencesFragment"
|
||||||
android:label="PreferencesFragment" />
|
android:label="PreferencesFragment" />
|
||||||
|
<fragment
|
||||||
|
android:id="@+id/repository_details_fragment"
|
||||||
|
android:name="fr.uca.iut.clfreville2.teaiswarm.fragment.RepositoryDetailsFragment"
|
||||||
|
android:label="RepositoryDetailsFragment" />
|
||||||
</navigation>
|
</navigation>
|
||||||
|
@@ -13,4 +13,5 @@
|
|||||||
<string name="unknown">Unknown</string>
|
<string name="unknown">Unknown</string>
|
||||||
<string name="username">Username</string>
|
<string name="username">Username</string>
|
||||||
<string name="configure">Configure</string>
|
<string name="configure">Configure</string>
|
||||||
|
<string name="activity">Activity</string>
|
||||||
</resources>
|
</resources>
|
Reference in New Issue
Block a user