yes_no_permission_pd

This commit is contained in:
2026-03-28 18:37:46 +05:30
parent 903b281f8c
commit aaec7b4768
627 changed files with 26611 additions and 773 deletions
@@ -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;
}
}
}