package com.gkmaza.gujarati;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import com.getbase.floatingactionbutton.FloatingActionButton;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.InterstitialAd;
import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.initialization.InitializationStatus;
import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;
import com.google.android.material.navigation.NavigationView;
import com.google.android.material.snackbar.Snackbar;
import com.google.gson.Gson;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.SearchView;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import network.ApiClient;
import network.ApiInterface;
import network.RestError;
import network.connectionManager;
import network.contact;
import network.data;
import network.quoteShow;
import offlineconnection.UserContract;
import offlineconnection.UserDbHelper;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class home extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
RecyclerView recyclerView;
recyclAdapter recyclAdapter;
Context context=this;
UserDbHelper userDbHelper;
SQLiteDatabase sqLiteDatabase;
Cursor cursor;
FloatingActionButton add_quotes,view_quotes;
recyclAdapteroffline recyclAdapteroffline;
SwipeRefreshLayout swipeRefreshLayout;
boolean flag;
private List<contact> contacts;
private ApiInterface apiInterface;
DrawerLayout relativeLayout;
boolean backtoexit=false;
public List<model> modelList;
AdView adView;
private InterstitialAd interstitialAd;
final LoaderDialog loaderDialog = new LoaderDialog();
private AppBarConfiguration mAppBarConfiguration;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
MobileAds.initialize(this,"ca-app-pub-6020255471056041/9686541658");
adView=findViewById(R.id.adView);
MobileAds.initialize(this, new OnInitializationCompleteListener() {
@Override
public void onInitializationComplete(InitializationStatus initializationStatus) {
}
});
AdRequest adRequest=new AdRequest.Builder().build();
adView.loadAd(adRequest);
/* interstitialAd=new InterstitialAd(this);
interstitialAd.setAdUnitId("ca-app-pub-6020255471056041/9494969962");
interstitialAd.loadAd(new AdRequest.Builder().build());
interstitialAd.setAdListener(new AdListener(){
@Override
public void onAdClosed(){
Toast.makeText(home.this, "close", Toast.LENGTH_SHORT).show();
}
});
if (interstitialAd.isLoaded()){
interstitialAd.show();
}
else{
Toast.makeText(this, "not show", Toast.LENGTH_SHORT).show();
}
*/
DrawerLayout drawer = findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener((NavigationView.OnNavigationItemSelectedListener) context);
mAppBarConfiguration = new AppBarConfiguration.Builder(
R.id.nav_home, R.id.nav_all_qoutes, R.id.nav_favorite,
R.id.nav_rate_app, R.id.nav_share, R.id.nav_feedback)
.setDrawerLayout(drawer)
.build();
swipeRefreshLayout=findViewById(R.id.swipelayout);
recyclerView=findViewById(R.id.recycl);
relativeLayout=findViewById(R.id.drawer_layout);
//int rid=R.anim.layout_animation_right_to_left;
//LayoutAnimationController animationController= AnimationUtils.loadLayoutAnimation(this,rid);
recyclerView.setHasFixedSize(true);
add_quotes=findViewById(R.id.action_add);
view_quotes=findViewById(R.id.action_view);
view_quotes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(context,viewmyquotes.class);
startActivity(intent);
Toast.makeText(context, "View Quotes", Toast.LENGTH_SHORT).show();
}
});
add_quotes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, "Add Quotes", Toast.LENGTH_SHORT).show();
Intent intent=new Intent(context,add_quotes.class);
startActivity(intent);
}
});
recyclerView.setLayoutManager(new GridLayoutManager(this,2));
if(connectionManager.checkconnection(getBaseContext())){
flag=true;
get_All();
getonline();
}else{
getoffline();
flag=false;
}
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
if(connectionManager.checkconnection(getBaseContext())){
flag=true;
get_msg_u();
get_All();
getonline();
}else{
get_msg();
flag=false;
getoffline();
swipeRefreshLayout.setRefreshing(false);
}
}
});
}
@SuppressLint("ResourceAsColor")
private void get_msg() {
Snackbar snackbar = Snackbar
.make(relativeLayout, "No Internet Connection!", Snackbar.LENGTH_LONG)
.setAction("RETRY", new View.OnClickListener() {
@Override
public void onClick(View view) {
if(connectionManager.checkconnection(getBaseContext())){
Intent intent=new Intent(getApplicationContext(),home.class);
startActivity(intent);
finish();
}
else{
Toast.makeText(getApplicationContext(), "Check Your Connection", Toast.LENGTH_SHORT).show();
}
}
});
View snackBarView = snackbar.getView();
snackBarView.setBackgroundColor(Color.parseColor("#FF4081"));
snackbar.setActionTextColor(Color.YELLOW);
View sbView = snackbar.getView();
TextView textView = (TextView) sbView.findViewById(R.id.snackbar_text);
textView.setTextColor(Color.WHITE);
snackbar.show();
}
private void get_All() {
apiInterface= ApiClient.getClient().create(ApiInterface.class);
Call<quoteShow> call = apiInterface.get_all_quote();
call.enqueue(new Callback<quoteShow>() {
@Override
public void onResponse(Call<quoteShow> call, Response<quoteShow> response) {
if (response.isSuccessful()) {
userDbHelper = new UserDbHelper(getApplicationContext());
sqLiteDatabase = userDbHelper.getReadableDatabase();
sqLiteDatabase.delete(UserContract.NewUserInfo.TABLE_NAME_Q,null,null);
for (int i=0;i<response.body().getRecords().size();i++){
String name = response.body().getRecords().get(i).getQuotesName();
String id = response.body().getRecords().get(i).getId();
String aname = response.body().getRecords().get(i).getAuthorName();
String status = response.body().getRecords().get(i).getStatus();
String cid = response.body().getRecords().get(i).getCategoryId();
String cname = response.body().getRecords().get(i).getCategoryName();
userDbHelper.addinformations_quotes(id, name, aname,status,cid,cname, sqLiteDatabase);
//Toast.makeText(getBaseContext(), "save", Toast.LENGTH_LONG).show();
} userDbHelper.close();
// recyclerView.setAdapter(recyclAdapter2);
} else {
RestError errorResponse;
Gson gson = new Gson();
try {
errorResponse = gson.fromJson(response.errorBody().string(), RestError.class);
errorResponse.setError(true);
Toast.makeText(context, errorResponse.getMessage(), Toast.LENGTH_SHORT).show();
Log.e("Error", errorResponse.getMessage());
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void onFailure(Call<quoteShow> call, Throwable t) {
//loaderDialog.hideDialog();
t.getCause();
}
}); }
private void getoffline() {
userDbHelper =new UserDbHelper(getApplicationContext());
sqLiteDatabase = userDbHelper.getReadableDatabase();
List<data> data = new ArrayList<>();
String[] projeaction={UserContract.NewUserInfo.C_ID,UserContract.NewUserInfo.C_NAME,UserContract.NewUserInfo.C_DESC};
cursor= sqLiteDatabase.query(UserContract.NewUserInfo.TABLE_NAME,projeaction,null,null,null,null,null);
if(cursor.moveToFirst()){
do{
String id,name,desc;
id=cursor.getString(0);
name=cursor.getString(1);
desc=cursor.getString(2);
data dataProvaider=new data(id,name,desc);
data.add(dataProvaider);
}while(cursor.moveToNext());
}
recyclAdapteroffline=new recyclAdapteroffline(this,data);
recyclerView.setAdapter(recyclAdapteroffline);
}
@SuppressLint("ResourceAsColor")
private void get_msg_u() {
Snackbar snackbar = Snackbar
.make(relativeLayout, "Upto Date..!", Snackbar.LENGTH_LONG)
.setAction("ok", new View.OnClickListener() {
@Override
public void onClick(View view) {
if(connectionManager.checkconnection(getBaseContext())){
}
else{
Toast.makeText(getApplicationContext(), "Check Your Connection !!", Toast.LENGTH_SHORT).show();
}
}
});
View snackBarView = snackbar.getView();
snackBarView.setBackgroundColor(Color.parseColor("#00bfa5"));
snackbar.setActionTextColor(Color.CYAN);
View sbView = snackbar.getView();
TextView textView = (TextView) sbView.findViewById(R.id.snackbar_text);
textView.setTextColor(Color.WHITE);
snackbar.show();
}
private void getonline() {
loaderDialog.showDialog(context);
apiInterface= ApiClient.getClient().create(ApiInterface.class);
Call<contact> call=apiInterface.getdata();
call.enqueue(new Callback<contact>() {
@Override
public void onResponse(Call<contact> call, Response<contact> response) {
loaderDialog.hideDialog();
if (response.isSuccessful()) {
recyclAdapter=new recyclAdapter(context,response.body());
userDbHelper = new UserDbHelper(getApplicationContext());
sqLiteDatabase = userDbHelper.getReadableDatabase();
sqLiteDatabase.delete(UserContract.NewUserInfo.TABLE_NAME,null,null);
for (int i=0;i<response.body().getRecords().size();i++){
String name = response.body().getRecords().get(i).getName();
String id = response.body().getRecords().get(i).getId();
String desc = response.body().getRecords().get(i).getDescription();
userDbHelper.addinformations(id, name, desc, sqLiteDatabase);
//Toast.makeText(getBaseContext(), "save", Toast.LENGTH_LONG).show();
} userDbHelper.close();
recyclerView.setAdapter(recyclAdapter);
recyclAdapter.notifyDataSetChanged();
swipeRefreshLayout.setRefreshing(false);
}
else{
RestError errorResponse;
Gson gson = new Gson();
try {
errorResponse = gson.fromJson(response.errorBody().string(), RestError.class);
errorResponse.setError(true);
Toast.makeText(context, errorResponse.getMessage(), Toast.LENGTH_SHORT).show();
Log.e("Error", errorResponse.getMessage());
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void onFailure(Call<contact> call, Throwable t) {
loaderDialog.hideDialog();
t.getCause();
}
});
}
@Override
public void onBackPressed() {
if(backtoexit)
{super.onBackPressed();
return;
}
this.backtoexit=true;
Toast.makeText(this,"Click Back again to Exit",Toast.LENGTH_LONG).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
backtoexit=false;
}
},2000);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_menu,menu);
final MenuItem menuItem=menu.findItem(R.id.action_search);
final SearchView searchView= (SearchView) menuItem.getActionView();
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}
@Override
public boolean onQueryTextChange(String s) {
if(flag==true){recyclAdapter.getFilter().filter(s);}
else if(flag==false){
recyclAdapteroffline.getFilter().filter(s);
}
return false;
}
});
return super.onCreateOptionsMenu(menu);
}
private List<contact.Record> filterr(List<contact.Record> p1 , String query){
query=query.toLowerCase();
final List<contact.Record> filtermodellist=new ArrayList<>();
for(contact.Record item:p1){
final String text=item.getName().toLowerCase();
if(text.startsWith(query)){
filtermodellist.add(item);
}
}
return filtermodellist;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int i=item.getItemId();
switch (i){
case R.id.item_1:
Intent intent=new Intent(context,about.class);
startActivity(intent);
this.finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public boolean onSupportNavigateUp()
{
return true;
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
int id = menuItem.getItemId();
if (id == R.id.nav_home) {
Intent intent=new Intent(context,home.class);
startActivity(intent);
} else if (id == R.id.nav_all_qoutes) {
Intent intent=new Intent(context,recycle2.class);
intent.putExtra("idname",0+"");
intent.putExtra("fave",0+"");
startActivity(intent);
} else if (id == R.id.nav_favorite) {
Intent intent=new Intent(context,recycle2.class);
intent.putExtra("idname",0+"");
intent.putExtra("fave",5+"");
startActivity(intent);
}else if (id == R.id.nav_rate_app) {
Intent i = new Intent(android.content.Intent.ACTION_VIEW);
i.setData(Uri.parse("http://play.google.com/store/apps/details?id=com.gkmaza.gujarati"));
startActivity(i);
/* Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_SUBJECT,"Rate App");
String app_url =Shared.link;
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT,app_url);
startActivity(Intent.createChooser(shareIntent, "Gujarati Quotes"));
*/
}else if (id == R.id.nav_share) {
Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_SUBJECT,"Gujarati Suvichar/Quotes");
String app_url = Shared.shareapp+Shared.link;
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT,app_url);
startActivity(Intent.createChooser(shareIntent, "Gujarati Quotes"));
}else if (id == R.id.nav_feedback) {
//Toast.makeText(context, "Feedback Comming Soon..!!", Toast.LENGTH_SHORT).show();
Intent intent=new Intent(home.this,feedback.class);
startActivity(intent);
finish();
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
}
No comments:
Post a Comment