Skip to content

Commit

Permalink
Completed Wallpaper Application
Browse files Browse the repository at this point in the history
  • Loading branch information
muhsan-javed committed Jun 7, 2023
1 parent 4c45a5b commit 2b3d614
Show file tree
Hide file tree
Showing 12 changed files with 300 additions and 21 deletions.
7 changes: 7 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@
android:roundIcon="@mipmap/ic_launcher"
android:supportsRtl="true"
android:theme="@style/Theme.PexelsWallpaper">
<activity android:name=".FullScreenWallpaper">
<activity android:name=".activities.FullScreenWallpaper">

</activity>
<activity android:name=".MainActivity">
<activity android:name=".MainActivityKotlin">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mjtech.pexelswallpaper;
package com.mjtech.pexelswallpaper.Adapters;

import android.content.Context;
import android.content.Intent;
Expand All @@ -11,6 +11,9 @@
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.Glide;
import com.mjtech.pexelswallpaper.R;
import com.mjtech.pexelswallpaper.Models.WallpaperModel;
import com.mjtech.pexelswallpaper.activities.FullScreenWallpaper;

import java.util.List;

Expand Down Expand Up @@ -38,7 +41,7 @@ public void onBindViewHolder(@NonNull WallpaperViewHolder holder, int position)
holder.imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
context.startActivity(new Intent(context,FullScreenWallpaper.class)
context.startActivity(new Intent(context, FullScreenWallpaper.class)
.putExtra("originalUrl",wallpaperModelList.get(position).getOriginalUrl()));
}
});
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mjtech.pexelswallpaper;
package com.mjtech.pexelswallpaper.Models;

public class WallpaperModel {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.mjtech.pexelswallpaper;
package com.mjtech.pexelswallpaper.activities;

import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.AppCompatImageButton;
Expand All @@ -16,6 +16,7 @@

import com.bumptech.glide.Glide;
import com.github.chrisbanes.photoview.PhotoView;
import com.mjtech.pexelswallpaper.R;

import java.io.IOException;
import java.util.Objects;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,15 @@
package com.mjtech.pexelswallpaper;
package com.mjtech.pexelswallpaper.activities;

import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.AppCompatEditText;
import androidx.appcompat.widget.AppCompatImageButton;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import android.annotation.SuppressLint;
import android.content.DialogInterface;
import android.os.Build;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AbsListView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;

import com.android.volley.AuthFailureError;
Expand All @@ -29,6 +19,9 @@
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.mjtech.pexelswallpaper.R;
import com.mjtech.pexelswallpaper.Adapters.WallpaperAdapter;
import com.mjtech.pexelswallpaper.Models.WallpaperModel;

import org.json.JSONArray;
import org.json.JSONException;
Expand Down Expand Up @@ -154,6 +147,7 @@ public Map<String, String> getHeaders() throws AuthFailureError {

}

// Get Data Api Fun
// Uri https://api.pexels.com/v1/curated/?page="+pageNumber+"&per_page=80
public void fetchWallpaper() {
StringRequest request = new StringRequest(Request.Method.GET, "https://api.pexels.com/v1/curated/?page=" + pageNumber + "&per_page=80",
Expand Down Expand Up @@ -214,6 +208,7 @@ public Map<String, String> getHeaders() throws AuthFailureError {
requestQueue.add(request);
}

// Old Search Button function
/*
@Override
public boolean onCreateOptionsMenu(Menu menu) {
Expand Down Expand Up @@ -309,4 +304,100 @@ public Map<String, String> getHeaders() throws AuthFailureError {
}
return super.onOptionsItemSelected(item);
}*/

@Override
public void onBackPressed() {
super.onBackPressed();

}

// Kotlin Code
/*
private lateinit var recyclerView: RecyclerView
private lateinit var edittext: AppCompatEditText
private lateinit var searchOption: AppCompatImageButton
lateinit var wallpaperAdapter: WallpaperAdapter
lateinit var wallpaperModelList: MutableList<WallpaperModel>
var pageNumber = 1
var isScrolling = false
var currentItems:Int = 0
var totalItems :Int = 0
var scrollOutItems: Int = 0
supportActionBar?.hide()
recyclerView = findViewById(R.id.recyclerView)
searchOption = findViewById(R.id.searchOption)
edittext = findViewById(R.id.edittext)
wallpaperModelList = ArrayList()
wallpaperAdapter = WallpaperAdapter(this, wallpaperModelList)
recyclerView.adapter = wallpaperAdapter
val gridLayoutManager = GridLayoutManager(this, 2)
recyclerView.layoutManager = gridLayoutManager
recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
super.onScrollStateChanged(recyclerView, newState)
if (newState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
isScrolling = true
}
}
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
currentItems = gridLayoutManager.childCount
totalItems = gridLayoutManager.itemCount
scrollOutItems = gridLayoutManager.findFirstCompletelyVisibleItemPosition()
if (isScrolling && ((currentItems + scrollOutItems) == totalItems)) {
isScrolling = false
fetchWallpaper()
}
}
})
fetchWallpaper()
}
fun fetchWallpaper() {
val request: StringRequest = object : StringRequest(
Method.GET,
"https://api.pexels.com/v1/curated/?page=$pageNumber&per_page=80", // StringRequest request = new StringRequest(Request.Method.GET, url,
Response.Listener<String?> { response ->
try {
val jsonObject = JSONObject(response)
val jsonArray = jsonObject.getJSONArray("photos")
val length = jsonArray.length()
for (i in 0 until length) {
val `object` = jsonArray.getJSONObject(i)
val id = `object`.getInt("id")
val objectImages = `object`.getJSONObject("src")
val originalUrl = objectImages.getString("original")
val mediumUrl = objectImages.getString("medium")
val wallpaperModel = WallpaperModel(id, originalUrl, mediumUrl)
wallpaperModelList.add(wallpaperModel)
//
}
wallpaperAdapter.notifyDataSetChanged()
pageNumber++
} catch (e: JSONException) {
e.printStackTrace()
Toast.makeText(this@MainActivity, "ERROR" + e.message, Toast.LENGTH_SHORT)
.show()
}
}, Response.ErrorListener { }) {
@Throws(AuthFailureError::class)
override fun getHeaders(): Map<String, String> {
val params: MutableMap<String, String> = HashMap()
params["Authorization"] = "563492ad6f917000010000016190f711658e4eb1a96ff1213e707d57"
return params
}
}
val requestQueue = Volley.newRequestQueue(applicationContext)
requestQueue.add(request)
}
*/
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
package com.mjtech.pexelswallpaper.kotlin

/*
import android.os.Bundle
import android.widget.AbsListView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.AppCompatEditText
import androidx.appcompat.widget.AppCompatImageButton
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.android.volley.AuthFailureError
import com.android.volley.Response
import com.android.volley.toolbox.StringRequest
import com.android.volley.toolbox.Volley
import org.json.JSONException
import org.json.JSONObject
class MainActivityKotlin : AppCompatActivity() {
//private lateinit var binding :ActivityMainBinding
private lateinit var recyclerView: RecyclerView
private lateinit var edittext: AppCompatEditText
private lateinit var searchOption: AppCompatImageButton
lateinit var wallpaperAdapter: WallpaperAdapter
lateinit var wallpaperModelList: MutableList<WallpaperModel>
var pageNumber = 1
var isScrolling = false
var currentItems:Int = 0
var totalItems :Int = 0
var scrollOutItems: Int = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
//binding = ActivityMainBinding.inflate(layoutInflater)
// setContentView(R.layout.activity_main)
supportActionBar?.hide()
// binding.webViewSite.loadUrl("file:///android_asset/index.html")
// binding.webViewSite.settings.javaScriptEnabled = true
// binding.webViewSite.webViewClient = WebViewClient()
recyclerView = findViewById(R.id.recyclerView)
searchOption = findViewById(R.id.searchOption)
edittext = findViewById(R.id.edittext)
wallpaperModelList = ArrayList()
wallpaperAdapter = WallpaperAdapter(this, wallpaperModelList)
recyclerView.adapter = wallpaperAdapter
val gridLayoutManager = GridLayoutManager(this, 2)
recyclerView.layoutManager = gridLayoutManager
recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
super.onScrollStateChanged(recyclerView, newState)
if (newState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
isScrolling = true
}
}
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
currentItems = gridLayoutManager.childCount
totalItems = gridLayoutManager.itemCount
scrollOutItems = gridLayoutManager.findFirstCompletelyVisibleItemPosition()
if (isScrolling && ((currentItems + scrollOutItems) == totalItems)) {
isScrolling = false
fetchWallpaper()
}
}
})
fetchWallpaper()
}
fun fetchWallpaper() {
val request: StringRequest = object : StringRequest(
Method.GET,
"https://api.pexels.com/v1/curated/?page=$pageNumber&per_page=80", // StringRequest request = new StringRequest(Request.Method.GET, url,
Response.Listener<String?> { response ->
try {
val jsonObject = JSONObject(response)
val jsonArray = jsonObject.getJSONArray("photos")
val length = jsonArray.length()
for (i in 0 until length) {
val `object` = jsonArray.getJSONObject(i)
val id = `object`.getInt("id")
val objectImages = `object`.getJSONObject("src")
val originalUrl = objectImages.getString("original")
val mediumUrl = objectImages.getString("medium")
val wallpaperModel = WallpaperModel(id, originalUrl, mediumUrl)
wallpaperModelList.add(wallpaperModel)
//
}
wallpaperAdapter.notifyDataSetChanged()
pageNumber++
} catch (e: JSONException) {
e.printStackTrace()
Toast.makeText(this@MainActivity, "ERROR" + e.message, Toast.LENGTH_SHORT)
.show()
}
}, Response.ErrorListener { }) {
@Throws(AuthFailureError::class)
override fun getHeaders(): Map<String, String> {
val params: MutableMap<String, String> = HashMap()
params["Authorization"] = "563492ad6f917000010000016190f711658e4eb1a96ff1213e707d57"
return params
}
}
val requestQueue = Volley.newRequestQueue(applicationContext)
requestQueue.add(request)
}
}*/
8 changes: 8 additions & 0 deletions app/src/main/java/com/mjtech/pexelswallpaper/kotlin/Models.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.mjtech.pexelswallpaper.kotlin

/*
data class WallpaperModel(
val id: Int,
val originalUrl: String,
val mediumUrl: String
)*/
Loading

0 comments on commit 2b3d614

Please sign in to comment.