From 3075e6acb5c29434b2d7be0c6ad7747a6358f045 Mon Sep 17 00:00:00 2001 From: Joe Robinson Date: Sat, 20 Apr 2019 17:45:19 +0200 Subject: Added Gallery View --- .idea/vcs.xml | 6 +++ app/build.gradle | 5 ++ .../blatech/blaupload3/util/ImageGalleryAdapter.kt | 57 ++++++++++++++++++++++ .../uk/co/blatech/blaupload3/util/JSONLoader.kt | 32 +++++++++++- .../co/blatech/blaupload3/view/GalleryFragment.kt | 33 +++++++++++++ .../uk/co/blatech/blaupload3/view/ListFragment.kt | 2 +- .../uk/co/blatech/blaupload3/view/MainActivity.kt | 44 +++++++---------- app/src/main/res/layout/activity_main.xml | 34 +++++++++---- app/src/main/res/layout/gallery_fragment.xml | 14 ++++++ app/src/main/res/layout/image_gallery_item.xml | 16 ++++++ app/src/main/res/menu/activity_main_drawer.xml | 4 +- app/src/main/res/navigation/nav_graph.xml | 26 +++++++--- gradle.properties | 3 +- 13 files changed, 226 insertions(+), 50 deletions(-) create mode 100644 .idea/vcs.xml create mode 100644 app/src/main/java/uk/co/blatech/blaupload3/util/ImageGalleryAdapter.kt create mode 100644 app/src/main/java/uk/co/blatech/blaupload3/view/GalleryFragment.kt create mode 100644 app/src/main/res/layout/gallery_fragment.xml create mode 100644 app/src/main/res/layout/image_gallery_item.xml diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 8dc6fb0..c4f8b9e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -22,6 +22,9 @@ android { proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } + dataBinding { + enabled = true + } } dependencies { @@ -35,6 +38,8 @@ dependencies { implementation 'com.beust:klaxon:5.0.1' implementation "androidx.navigation:navigation-fragment-ktx:2.1.0-alpha02" // For Kotlin use navigation-fragment-ktx implementation "androidx.navigation:navigation-ui-ktx:2.1.0-alpha02" // For Kotlin use navigation-ui-ktx + implementation "androidx.recyclerview:recyclerview:1.1.0-alpha04" + testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' diff --git a/app/src/main/java/uk/co/blatech/blaupload3/util/ImageGalleryAdapter.kt b/app/src/main/java/uk/co/blatech/blaupload3/util/ImageGalleryAdapter.kt new file mode 100644 index 0000000..82ce858 --- /dev/null +++ b/app/src/main/java/uk/co/blatech/blaupload3/util/ImageGalleryAdapter.kt @@ -0,0 +1,57 @@ +package uk.co.blatech.blaupload3.util + +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import kotlinx.android.synthetic.main.image_gallery_item.view.* +import uk.co.blatech.blaupload3.R +import uk.co.blatech.blaupload3.model.File + +class ImageGalleryAdapter(private val fileList : ArrayList) : RecyclerView.Adapter(){ + + + class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + var imageLoader = AppController.instance?.imageLoader + + fun bind(file: File) { + itemView.gallery_thumbnail.setImageUrl(file.thumb_url.toASCIIString(), imageLoader) + itemView.gallery_title.text = file.filename + } + } + + + fun updateFileList(newFileList : ArrayList) { + Log.i("aaaaa", "bbbbb") + for (file in newFileList) { + Log.i("file", file.toString()) + if (file.type == "image2") { + fileList.add(file) + } + } + notifyDataSetChanged() + + } + override fun getItemId(position: Int): Long { + return position.toLong() + } + + override fun getItemCount(): Int { + return fileList.size + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + val view = LayoutInflater.from(parent.context).inflate(R.layout.image_gallery_item, parent,false) + return ViewHolder(view) + } + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + fileList?.get(position)?.let { file -> + if (file.type == "image2") { + holder.bind(file) + } + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/uk/co/blatech/blaupload3/util/JSONLoader.kt b/app/src/main/java/uk/co/blatech/blaupload3/util/JSONLoader.kt index dff7043..2560849 100644 --- a/app/src/main/java/uk/co/blatech/blaupload3/util/JSONLoader.kt +++ b/app/src/main/java/uk/co/blatech/blaupload3/util/JSONLoader.kt @@ -14,7 +14,7 @@ import uk.co.blatech.blaupload3.model.File class JSONLoader { companion object { - fun getJsonListing(context: Context?, listView: ListView) { + fun loadJsonToList(context: Context?, listView: ListView) { val queue = Volley.newRequestQueue(context) val url = "http://wupload.of.je/?format=json" var fileList = ArrayList() @@ -39,5 +39,33 @@ class JSONLoader { queue.add(jsonRequest) } + + fun loadJsonToAdapter(context: Context?, adapter: ImageGalleryAdapter) { + val queue = Volley.newRequestQueue(context) + val url = "http://wupload.of.je/?format=json" + var fileList = ArrayList() + val jsonRequest = JsonArrayRequest( + Request.Method.GET, + url, + null, + Response.Listener { response -> + + for (i in 0 until response.length()) { + var jsonObj = response.getJSONObject(i) + var upload: File = File(filename =jsonObj.getString("filename"), type = jsonObj.getString("type"), modified = jsonObj.getLong("modified"), size = jsonObj.getLong("size")) + fileList.add(upload) + + + } + adapter.updateFileList(fileList) + }, + Response.ErrorListener { Log.e("json error", "narp")}) + queue.add(jsonRequest) + + } } -} \ No newline at end of file + + + + +} diff --git a/app/src/main/java/uk/co/blatech/blaupload3/view/GalleryFragment.kt b/app/src/main/java/uk/co/blatech/blaupload3/view/GalleryFragment.kt new file mode 100644 index 0000000..bcee796 --- /dev/null +++ b/app/src/main/java/uk/co/blatech/blaupload3/view/GalleryFragment.kt @@ -0,0 +1,33 @@ +package uk.co.blatech.blaupload3.view + +import android.os.Bundle +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.Fragment +import androidx.recyclerview.widget.GridLayoutManager +import kotlinx.android.synthetic.main.gallery_fragment.* +import uk.co.blatech.blaupload3.R +import uk.co.blatech.blaupload3.model.File +import uk.co.blatech.blaupload3.util.ImageGalleryAdapter +import uk.co.blatech.blaupload3.util.JSONLoader + +class GalleryFragment : Fragment() { + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + super.onCreate(savedInstanceState) + Log.i("onCreateView", "foo") + + return inflater.inflate(R.layout.gallery_fragment, container, false) + + } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + val layoutManager = GridLayoutManager(activity?.applicationContext, 5) + gallery_view.layoutManager = layoutManager + val adapter =ImageGalleryAdapter(ArrayList()) + gallery_view.adapter = adapter + JSONLoader.loadJsonToAdapter(activity?.applicationContext, adapter) + Log.i("onCreateView", "bar") + } +} \ No newline at end of file diff --git a/app/src/main/java/uk/co/blatech/blaupload3/view/ListFragment.kt b/app/src/main/java/uk/co/blatech/blaupload3/view/ListFragment.kt index 87a3db5..b326f46 100644 --- a/app/src/main/java/uk/co/blatech/blaupload3/view/ListFragment.kt +++ b/app/src/main/java/uk/co/blatech/blaupload3/view/ListFragment.kt @@ -16,6 +16,6 @@ class ListFragment : Fragment() { } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - JSONLoader.getJsonListing(activity?.applicationContext, activity?.findViewById(R.id.file_list)!!) + JSONLoader.loadJsonToList(activity?.applicationContext, activity?.findViewById(R.id.file_list)!!) } } \ No newline at end of file diff --git a/app/src/main/java/uk/co/blatech/blaupload3/view/MainActivity.kt b/app/src/main/java/uk/co/blatech/blaupload3/view/MainActivity.kt index 1d4b7a5..c2f27a5 100644 --- a/app/src/main/java/uk/co/blatech/blaupload3/view/MainActivity.kt +++ b/app/src/main/java/uk/co/blatech/blaupload3/view/MainActivity.kt @@ -4,24 +4,28 @@ import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import android.view.Menu import android.view.MenuItem +import androidx.core.view.GravityCompat import androidx.navigation.NavController import kotlinx.android.synthetic.main.activity_main.* import androidx.navigation.Navigation -import androidx.navigation.ui.NavigationUI -import com.google.android.material.navigation.NavigationView +import androidx.navigation.ui.* import uk.co.blatech.blaupload3.R -class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener { +class MainActivity : AppCompatActivity(){ private lateinit var navController : NavController + private lateinit var appBarConfiguration : AppBarConfiguration override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) + navController = Navigation.findNavController(this, R.id.nav_host_fragment) NavigationUI.setupWithNavController(nav_view, navController) - nav_view.setNavigationItemSelectedListener(this) - + appBarConfiguration = AppBarConfiguration(navController.graph, drawer_layout) + setSupportActionBar(toolbar) + setupActionBarWithNavController(navController, appBarConfiguration) + nav_view.setupWithNavController(navController) } @@ -42,29 +46,17 @@ class MainActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelecte } } - override fun onNavigationItemSelected(item: MenuItem): Boolean { - // Handle navigation view item clicks here. - when (item.itemId) { - R.id.nav_upload -> { - - // Handle the camera action - } - R.id.nav_gallery -> { - navController.navigate(R.id.file_list) -// } - } - R.id.nav_settings -> { - - } - R.id.nav_share -> { + override fun onSupportNavigateUp(): Boolean { + return navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp() + } - } - R.id.nav_send -> { - } + override fun onBackPressed() { + if (drawer_layout.isDrawerOpen(GravityCompat.START)) { + drawer_layout.closeDrawer(GravityCompat.START) + } else { + super.onBackPressed() } - -// drawer_layout.closeDrawer(GravityCompat.START) - return true } + } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 4cc95a2..3e1b702 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -9,18 +9,32 @@ android:fitsSystemWindows="true" tools:openDrawer="start"> - - - - - + android:orientation="vertical"> + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/image_gallery_item.xml b/app/src/main/res/layout/image_gallery_item.xml new file mode 100644 index 0000000..bd2fc7a --- /dev/null +++ b/app/src/main/res/layout/image_gallery_item.xml @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/activity_main_drawer.xml b/app/src/main/res/menu/activity_main_drawer.xml index cab4f73..5c09517 100644 --- a/app/src/main/res/menu/activity_main_drawer.xml +++ b/app/src/main/res/menu/activity_main_drawer.xml @@ -5,11 +5,11 @@ + app:startDestination="@id/list_fragment"> > - + android:label="List Fragment" + tools:layout="@layout/list_fragment"> + + + + + \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 4a5855f..e74488b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,4 +14,5 @@ org.gradle.jvmargs=-Xmx1536m # Kotlin code style for this project: "official" or "obsolete": kotlin.code.style=official android.useAndroidX=true -android.enableJetifier=true \ No newline at end of file +android.enableJetifier=true +android.databinding.enableV2=true -- cgit v1.2.3