yes_no_permission_pd
This commit is contained in:
@@ -1,27 +1,30 @@
|
||||
package cpm.com.gskmtorange;
|
||||
|
||||
import android.Manifest;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.graphics.Bitmap;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.NetworkInfo;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.os.Handler;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.webkit.WebView;
|
||||
import android.webkit.WebViewClient;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
//import com.crashlytics.android.Crashlytics;
|
||||
|
||||
@@ -32,12 +35,22 @@ import androidx.core.app.ActivityCompat;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.core.view.GravityCompat;
|
||||
import androidx.drawerlayout.widget.DrawerLayout;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
import androidx.viewpager2.widget.ViewPager2;
|
||||
|
||||
import com.bumptech.glide.Glide;
|
||||
import com.google.android.material.navigation.NavigationView;
|
||||
import com.google.android.material.snackbar.Snackbar;
|
||||
import com.google.android.material.tabs.TabLayout;
|
||||
import com.google.android.material.tabs.TabLayoutMediator;
|
||||
import com.google.gson.Gson;
|
||||
|
||||
import org.json.JSONObject;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import cpm.com.gskmtorange.Database.GSKOrangeDB;
|
||||
import cpm.com.gskmtorange.GeoTag.GeoTagStoreList;
|
||||
@@ -52,6 +65,7 @@ import cpm.com.gskmtorange.dailyentry.PlanogramPDFActivity;
|
||||
import cpm.com.gskmtorange.dailyentry.ServiceActivity;
|
||||
import cpm.com.gskmtorange.dailyentry.SettingsActivity;
|
||||
import cpm.com.gskmtorange.dailyentry.StoreListActivity;
|
||||
import cpm.com.gskmtorange.dailyentry.WebViewActivity;
|
||||
import cpm.com.gskmtorange.download.DownloadActivity;
|
||||
import cpm.com.gskmtorange.password.ChangePasswordActivity;
|
||||
import cpm.com.gskmtorange.pharma_stores.PharmaActivity;
|
||||
@@ -65,6 +79,10 @@ public class MainActivity extends AppCompatActivity
|
||||
private Context context;
|
||||
WebView webView;
|
||||
ImageView imageView;
|
||||
ViewPager2 viewPager;
|
||||
private Handler sliderHandler = new Handler();
|
||||
private Runnable sliderRunnable;
|
||||
private List<ImageView> dots = new ArrayList<>();
|
||||
String date;
|
||||
String app_ver;
|
||||
private SharedPreferences preferences = null;
|
||||
@@ -75,6 +93,7 @@ public class MainActivity extends AppCompatActivity
|
||||
ArrayList<CoverageBean> coverageList;
|
||||
String error_msg;
|
||||
Toolbar toolbar;
|
||||
LinearLayout dotsLayout;
|
||||
NavigationView navigationView;
|
||||
|
||||
@SuppressLint("SetJavaScriptEnabled")
|
||||
@@ -83,19 +102,62 @@ public class MainActivity extends AppCompatActivity
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_main);
|
||||
toolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
viewPager = findViewById(R.id.viewPager);
|
||||
setSupportActionBar(toolbar);
|
||||
preferences = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
context = this;
|
||||
CommonFunctions.updateLangResources(context, preferences.getString(CommonString.KEY_LANGUAGE, ""));
|
||||
date = preferences.getString(CommonString.KEY_DATE, null);
|
||||
imageView = (ImageView) findViewById(R.id.img_main);
|
||||
dotsLayout = findViewById(R.id.dotsLayout);
|
||||
webView = (WebView) findViewById(R.id.webview);
|
||||
String url = preferences.getString(CommonString.KEY_NOTICE_BOARD_LINK, "");
|
||||
// String url = preferences.getString(CommonString.KEY_NOTICE_BOARD_LINK, "");
|
||||
String url = "https://dle.parinaam.in/OneApp/Dabur/brand-spiels/dabur-brand-spiels.html";
|
||||
user_name = preferences.getString(CommonString.KEY_USERNAME, null);
|
||||
country_id = preferences.getString(CommonString.KEY_COUNTRY_ID, null);
|
||||
db = new GSKOrangeDB(MainActivity.this);
|
||||
webView.setWebViewClient(new MyWebViewClient());
|
||||
webView.getSettings().setJavaScriptEnabled(true);
|
||||
|
||||
String json = loadJSONFromAsset();
|
||||
|
||||
Gson gson = new Gson();
|
||||
NoticeResponse response = gson.fromJson(json, NoticeResponse.class);
|
||||
List<NoticeItem> list = response.getMer_NoticeBoard();
|
||||
Log.d("listdata", String.valueOf(list.size()));
|
||||
setupDots(list.size());
|
||||
|
||||
viewPager.setAdapter(new NoticeAdapter(list, item -> handleClick(item)));
|
||||
viewPager.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
|
||||
|
||||
@Override
|
||||
public void onPageSelected(int position) {
|
||||
super.onPageSelected(position);
|
||||
|
||||
setActiveDot(position); // 👈 your dots logic
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageScrollStateChanged(int state) {
|
||||
super.onPageScrollStateChanged(state);
|
||||
|
||||
if (state == ViewPager2.SCROLL_STATE_DRAGGING) {
|
||||
sliderHandler.removeCallbacks(sliderRunnable); // stop
|
||||
}
|
||||
else if (state == ViewPager2.SCROLL_STATE_IDLE) {
|
||||
startAutoSlide(); // 🔥 don't call postDelayed directly
|
||||
}
|
||||
}
|
||||
});
|
||||
viewPager.setClipToPadding(false);
|
||||
viewPager.setClipChildren(false);
|
||||
// TabLayout tabLayout = findViewById(R.id.tabDots);
|
||||
/*new TabLayoutMediator(tabLayout, viewPager,
|
||||
(tab, position) -> {
|
||||
// no title, just dots
|
||||
}
|
||||
).attach();*/
|
||||
|
||||
if (!url.isEmpty()) {
|
||||
webView.loadUrl(url);
|
||||
}
|
||||
@@ -122,6 +184,148 @@ public class MainActivity extends AppCompatActivity
|
||||
navigationView.setNavigationItemSelectedListener(this);
|
||||
}
|
||||
|
||||
private void setupDots(int size) {
|
||||
dotsLayout.removeAllViews();
|
||||
dots.clear();
|
||||
|
||||
for (int i = 0; i < size; i++) {
|
||||
ImageView dot = new ImageView(this);
|
||||
|
||||
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
|
||||
LinearLayout.LayoutParams.WRAP_CONTENT,
|
||||
LinearLayout.LayoutParams.WRAP_CONTENT
|
||||
);
|
||||
params.setMargins(8, 0, 8, 0);
|
||||
dot.setLayoutParams(params);
|
||||
|
||||
// default (inactive)
|
||||
dot.setImageResource(R.drawable.dot_inactive);
|
||||
|
||||
dotsLayout.addView(dot);
|
||||
dots.add(dot);
|
||||
}
|
||||
|
||||
// set first dot active
|
||||
if (size > 0) {
|
||||
setActiveDot(0);
|
||||
}
|
||||
}
|
||||
|
||||
private void setActiveDot(int position) {
|
||||
|
||||
for (int i = 0; i < dots.size(); i++) {
|
||||
ImageView dot = dots.get(i);
|
||||
|
||||
if (i == position) {
|
||||
// Active dot (bigger + dark)
|
||||
dot.setImageResource(R.drawable.dot_active);
|
||||
|
||||
dot.animate()
|
||||
.scaleX(1f)
|
||||
.scaleY(1f)
|
||||
.setDuration(200)
|
||||
.start();
|
||||
|
||||
} else {
|
||||
// Inactive dot (small + light)
|
||||
dot.setImageResource(R.drawable.dot_inactive);
|
||||
|
||||
dot.animate()
|
||||
.scaleX(1f)
|
||||
.scaleY(1f)
|
||||
.setDuration(200)
|
||||
.start();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void handleClick(NoticeItem item) {
|
||||
|
||||
String url = item.getNoticeLink_FullPage();
|
||||
String type = item.getFullPageTarget();
|
||||
|
||||
if (type == null) return;
|
||||
|
||||
switch (type.toLowerCase()) {
|
||||
|
||||
case "html-webview":
|
||||
Intent webIntent = new Intent(this, WebViewActivity.class);
|
||||
webIntent.putExtra("url", url);
|
||||
webIntent.putExtra("type", item.getFullPageTarget());
|
||||
startActivity(webIntent);
|
||||
break;
|
||||
|
||||
case "html-webbrowser":
|
||||
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
|
||||
break;
|
||||
|
||||
case "video":
|
||||
Intent videoIntent = new Intent(this, WebViewActivity.class);
|
||||
videoIntent.putExtra("url", url);
|
||||
videoIntent.putExtra("type", item.getFullPageTarget());
|
||||
startActivity(videoIntent);
|
||||
break;
|
||||
|
||||
case "image":
|
||||
Intent imageIntent = new Intent(this, WebViewActivity.class);
|
||||
imageIntent.putExtra("url", url);
|
||||
imageIntent.putExtra("type", item.getFullPageTarget());
|
||||
startActivity(imageIntent);
|
||||
break;
|
||||
|
||||
case "deeplink":
|
||||
try {
|
||||
Intent deepIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
|
||||
startActivity(deepIntent);
|
||||
} catch (Exception e) {
|
||||
Toast.makeText(this, "Invalid deeplink", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
break;
|
||||
|
||||
case "contact":
|
||||
handleContact(url);
|
||||
break;
|
||||
|
||||
default:
|
||||
Toast.makeText(this, "Unsupported type", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
|
||||
private void handleContact(String raw) {
|
||||
try {
|
||||
// remove query params
|
||||
String jsonPart = raw.split("\\?")[0];
|
||||
|
||||
JSONObject obj = new JSONObject(jsonPart);
|
||||
|
||||
String number = obj.getString("Value");
|
||||
|
||||
Intent intent = new Intent(Intent.ACTION_DIAL);
|
||||
intent.setData(Uri.parse("tel:" + number));
|
||||
startActivity(intent);
|
||||
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
Toast.makeText(this, "Invalid contact data", Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
|
||||
private String loadJSONFromAsset() {
|
||||
String json = null;
|
||||
try {
|
||||
InputStream is = getAssets().open("notice.json");
|
||||
int size = is.available();
|
||||
byte[] buffer = new byte[size];
|
||||
is.read(buffer);
|
||||
is.close();
|
||||
json = new String(buffer, "UTF-8");
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
return json;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
@@ -131,6 +335,7 @@ public class MainActivity extends AppCompatActivity
|
||||
db.open();
|
||||
//usk
|
||||
navigationView = (NavigationView) findViewById(R.id.nav_view);
|
||||
startAutoSlide();
|
||||
try {
|
||||
app_ver = String.valueOf(getPackageManager().getPackageInfo(getPackageName(), 0).versionName);
|
||||
// login_version.setText("Parinaam Version " + app_ver);
|
||||
@@ -223,6 +428,30 @@ public class MainActivity extends AppCompatActivity
|
||||
storelist = db.getStoreData(date, CommonString.KEY_JOURNEY_PLAN);
|
||||
}
|
||||
|
||||
private void startAutoSlide() {
|
||||
|
||||
if (sliderRunnable != null) {
|
||||
sliderHandler.removeCallbacks(sliderRunnable); // 🔥 prevent duplicate
|
||||
}
|
||||
|
||||
sliderRunnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
if (viewPager.getAdapter() == null) return;
|
||||
|
||||
int nextItem = (viewPager.getCurrentItem() + 1) %
|
||||
viewPager.getAdapter().getItemCount();
|
||||
|
||||
viewPager.setCurrentItem(nextItem, true);
|
||||
|
||||
sliderHandler.postDelayed(this, 3000); // 3 sec
|
||||
}
|
||||
};
|
||||
|
||||
sliderHandler.postDelayed(sliderRunnable, 3000);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBackPressed() {
|
||||
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
|
||||
@@ -377,7 +606,7 @@ public class MainActivity extends AppCompatActivity
|
||||
|
||||
@Override
|
||||
public void onPageFinished(WebView view, String url) {
|
||||
imageView.setVisibility(View.INVISIBLE);
|
||||
imageView.setVisibility(View.GONE);
|
||||
webView.setVisibility(View.VISIBLE);
|
||||
super.onPageFinished(view, url);
|
||||
view.clearCache(true);
|
||||
@@ -502,4 +731,57 @@ public class MainActivity extends AppCompatActivity
|
||||
|
||||
|
||||
}
|
||||
public class NoticeAdapter extends RecyclerView.Adapter<NoticeAdapter.ViewHolder> {
|
||||
|
||||
private List<NoticeItem> list;
|
||||
private OnItemClickListener listener;
|
||||
|
||||
// Interface for click handling
|
||||
public interface OnItemClickListener {
|
||||
void onClick(NoticeItem item);
|
||||
}
|
||||
|
||||
public NoticeAdapter(List<NoticeItem> list, OnItemClickListener listener) {
|
||||
this.list = list;
|
||||
this.listener = listener;
|
||||
}
|
||||
|
||||
public static class ViewHolder extends RecyclerView.ViewHolder {
|
||||
ImageView image;
|
||||
|
||||
public ViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
image = itemView.findViewById(R.id.bannerImage);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public NoticeAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
View view = LayoutInflater.from(parent.getContext())
|
||||
.inflate(R.layout.banner_item, parent, false);
|
||||
return new ViewHolder(view);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(NoticeAdapter.ViewHolder holder, int position) {
|
||||
NoticeItem item = list.get(position);
|
||||
|
||||
Glide.with(holder.itemView.getContext())
|
||||
.load(item.getNoticeLink_Thumbnail())
|
||||
.into(holder.image);
|
||||
|
||||
holder.itemView.setOnClickListener(v -> {
|
||||
if (listener != null) {
|
||||
listener.onClick(item);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return list != null ? list.size() : 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user