detailer_new_changes

This commit is contained in:
2026-06-23 07:05:43 +05:30
parent 0d1e462563
commit de5f4f881f
21 changed files with 769 additions and 137 deletions
+1
View File
@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="AppInsightsSettings">
<option name="selectedTabId" value="Firebase Crashlytics" />
<option name="tabSettings">
<map>
<entry key="Android Vitals">
+32
View File
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="WizardSettings">
<option name="children">
<map>
<entry key="vectorWizard">
<value>
<PersistentState>
<option name="children">
<map>
<entry key="vectorAssetStep">
<value>
<PersistentState>
<option name="values">
<map>
<entry key="assetSourceType" value="FILE" />
<entry key="outputName" value="social_media" />
<entry key="sourceFile" value="C:\Users\ravik\Downloads\social-media (1).svg" />
</map>
</option>
</PersistentState>
</value>
</entry>
</map>
</option>
</PersistentState>
</value>
</entry>
</map>
</option>
</component>
</project>
@@ -11,7 +11,6 @@ import android.util.Log;
import android.widget.Toast;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File;
import java.util.ArrayList;
@@ -320,6 +319,7 @@ public class GSKOrangeDB extends SQLiteOpenHelper {
db.delete(CommonString.TABLE_IRPD, CommonString.KEY_STORE_ID + "='" + storeid + "'", null);
db.delete(CommonString.TABLE_IRPD_POG, CommonString.KEY_STORE_ID + "='" + storeid + "'", null);
db.delete(CommonString.TABLE_IRPD_VISIBILITY, CommonString.KEY_STORE_ID + "='" + storeid + "'", null);
db.delete(CommonString.TABLE_WEBVIEW_TIME_SPENT, CommonString.KEY_STORE_ID + "='" + storeid + "'", null);
} catch (Exception e) {
throw new RuntimeException(e);
}
@@ -367,6 +367,7 @@ public class GSKOrangeDB extends SQLiteOpenHelper {
db.delete(CommonString.TABLE_IRPD, null, null);
db.delete(CommonString.TABLE_IRPD_POG, null, null);
db.delete(CommonString.TABLE_IRPD_VISIBILITY, null, null);
db.delete(CommonString.TABLE_WEBVIEW_TIME_SPENT, null, null);
} catch (Exception e) {
throw new RuntimeException(e);
}
@@ -926,6 +927,80 @@ public class GSKOrangeDB extends SQLiteOpenHelper {
return list;
}
public ArrayList<MasterDetailerGetterSetter> getUploadedDetailerData(String storeid) {
ArrayList<MasterDetailerGetterSetter> list = new ArrayList<>();
Cursor dbcursor = null;
try {
String query = "SELECT * FROM "
+ CommonString.TABLE_WEBVIEW_TIME_SPENT
+ " WHERE STORE_ID = ?";
dbcursor = db.rawQuery(query, new String[]{storeid});
if (dbcursor != null && dbcursor.moveToFirst()) {
do {
MasterDetailerGetterSetter sb = new MasterDetailerGetterSetter();
sb.setStoreId(
dbcursor.getString(
dbcursor.getColumnIndexOrThrow("STORE_ID")));
sb.setVisitdate(
dbcursor.getString(
dbcursor.getColumnIndexOrThrow("VISIT_DATE")));
sb.setStart_time(
dbcursor.getString(
dbcursor.getColumnIndexOrThrow("START_TIME")));
sb.setEnd_time(
dbcursor.getString(
dbcursor.getColumnIndexOrThrow("END_TIME")));
sb.setDuration(
dbcursor.getString(
dbcursor.getColumnIndexOrThrow("DURATION")));
sb.setDetailerId(
dbcursor.getString(
dbcursor.getColumnIndexOrThrow("DETAILER_ID")));
sb.setUserId(
dbcursor.getString(
dbcursor.getColumnIndexOrThrow("USER_ID")));
sb.setCATEGORY_ID(
dbcursor.getString(
dbcursor.getColumnIndexOrThrow("CATEGORY_ID")));
sb.setDT_LEVEL(
dbcursor.getString(
dbcursor.getColumnIndexOrThrow("DT_LEVEL")));
list.add(sb);
} while (dbcursor.moveToNext());
}
} catch (Exception e) {
Log.e("DB_ERROR", "getUploadedDetailerData : " + e.getMessage());
} finally {
if (dbcursor != null && !dbcursor.isClosed()) {
dbcursor.close();
}
}
return list;
}
//insert MAPPING_DISPLAY_CHECKLIST
public void InsertMappingDisplayChecklist(MappingDisplayChecklistGetterSetter data) {
db.delete("MAPPING_DISPLAY_CHECKLIST", null, null);
@@ -11839,23 +11914,45 @@ public class GSKOrangeDB extends SQLiteOpenHelper {
return list;
}
public long insertWebViewTimeSpent(String storeId, String visitDate, String startTime, String endTime, String duration, String noticeboardId, String userId, String categoryId) {
public void insertWebViewTimeSpent(String storeId, String visitDate, String startTime, String endTime, String duration, String detailerId, String userId, String categoryId,String dt_level) {
db.delete(
CommonString.TABLE_WEBVIEW_TIME_SPENT,
"DETAILER_ID = ? AND VISIT_DATE = ? AND STORE_ID = ? AND CATEGORY_ID = ?",
new String[]{detailerId, visitDate, storeId, categoryId}
);
ContentValues values = new ContentValues();
values.put("STORE_ID", storeId);
values.put("VISIT_DATE", visitDate);
values.put("START_TIME", startTime);
values.put("END_TIME", endTime);
values.put("DURATION", duration);
values.put("NOTICEBOARD_ID", noticeboardId);
values.put("USER_ID", userId);
values.put("CATEGORY_ID", categoryId);
return db.insert(CommonString.TABLE_WEBVIEW_TIME_SPENT, null, values);
try {
values.put("STORE_ID", storeId);
values.put("VISIT_DATE", visitDate);
values.put("START_TIME", startTime);
values.put("END_TIME", endTime);
values.put("DURATION", duration);
values.put("DETAILER_ID", detailerId);
values.put("USER_ID", userId);
values.put("CATEGORY_ID", categoryId);
values.put("DT_LEVEL", dt_level);
db.insert(CommonString.TABLE_WEBVIEW_TIME_SPENT, null, values);
} catch (Exception ex) {
Log.d("Exception ", " in " + CommonString.TABLE_WEBVIEW_TIME_SPENT + ex.toString());
}
}
public ArrayList<MasterDetailerGetterSetter> getMasterDetailerData(String tableName) {
public ArrayList<MasterDetailerGetterSetter> getMasterDetailerData(String tableName, @NotNull String storetype, String catId) {
ArrayList<MasterDetailerGetterSetter> list = new ArrayList<>();
try {
String query = "SELECT * FROM " + tableName;
// String query = "SELECT * FROM " + tableName;
String query;
if ("STORE".equalsIgnoreCase(storetype)) {
query = "SELECT * FROM " + tableName + " WHERE CATEGORY_ID = '" + catId + "'";
} else if ("CATEGORY".equalsIgnoreCase(storetype)) {
query = "SELECT * FROM " + tableName + " WHERE CATEGORY_ID = '" + catId + "'";
} else {
query = "SELECT * FROM " + tableName;
}
try (Cursor cursor = db.rawQuery(query, null)) {
while (cursor != null && cursor.moveToNext()) {
MasterDetailerGetterSetter sb = new MasterDetailerGetterSetter();
@@ -153,12 +153,6 @@ public class MainActivity extends AppCompatActivity
});
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);
@@ -251,22 +245,13 @@ public class MainActivity extends AppCompatActivity
if (type == null) return;
// append store id and merchant id (NoticeBoardId) to the url as query params
String storeId = preferences.getString(CommonString.KEY_STORE_ID, "");
String merId = String.valueOf(item.getNoticeBoardId());
String finalUrl = appendStoreMerQuery(url, storeId, merId);
Log.d("finalurl", finalUrl);
// Log full URL in chunks to avoid logcat truncation or masking
switch (type.toLowerCase()) {
case "html-webview":
Log.d("itemdata", String.valueOf(item.getFullPageTarget()));
Intent webIntent = new Intent(this, WebViewActivity.class);
webIntent.putExtra("url", finalUrl);
webIntent.putExtra("url", url);
webIntent.putExtra("type", item.getFullPageTarget());
webIntent.putExtra("storeid", storeId);
webIntent.putExtra("merid", merId);
webIntent.putExtra("dt_level", "");
startActivity(webIntent);
break;
@@ -276,25 +261,23 @@ public class MainActivity extends AppCompatActivity
case "video":
Intent videoIntent = new Intent(this, WebViewActivity.class);
videoIntent.putExtra("url", finalUrl);
videoIntent.putExtra("url", url);
videoIntent.putExtra("type", item.getFullPageTarget());
videoIntent.putExtra("storeid", storeId);
videoIntent.putExtra("merid", merId);
videoIntent.putExtra("dt_level", "");
startActivity(videoIntent);
break;
case "image":
Intent imageIntent = new Intent(this, WebViewActivity.class);
imageIntent.putExtra("url", finalUrl);
imageIntent.putExtra("url", url);
imageIntent.putExtra("type", item.getFullPageTarget());
imageIntent.putExtra("storeid", storeId);
imageIntent.putExtra("merid", merId);
imageIntent.putExtra("dt_level", "");
startActivity(imageIntent);
break;
case "deeplink":
try {
Intent deepIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(finalUrl));
Intent deepIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(deepIntent);
} catch (Exception e) {
Toast.makeText(this, "Invalid deeplink", Toast.LENGTH_SHORT).show();
@@ -1647,22 +1647,21 @@ public class CommonString {
+ TABLE_WEBVIEW_TIME_SPENT
+ " ("
+ "KEY_ID INTEGER PRIMARY KEY AUTOINCREMENT,"
+ "STORE_ID VARCHAR,"
+ "STORE_ID INTEGER,"
+ "VISIT_DATE VARCHAR,"
+ "START_TIME VARCHAR,"
+ "END_TIME VARCHAR,"
+ "DURATION VARCHAR,"
+ "NOTICEBOARD_ID VARCHAR,"
+ "DETAILER_ID INTEGER,"
+ "USER_ID VARCHAR,"
+ "CATEGORY_ID VARCHAR)";
+ "DT_LEVEL VARCHAR,"
+ "CATEGORY_ID INTEGER)";
public static final String BACKUP_FOLDER_NAME = "HaleonMT_Backup";
public static final String IMAGE_FOLDER_NAME = "HaleonMT_Images";
public static final String Download_IMAGE_FOLDER = "Downloaded_HaleonMT_Images";
public static final String ApkFolder = "HaleonMT_ApkFolder";
public static String getApkFolder(Context context) {
return AppUtils.getInternalDirectory(context, ApkFolder).getAbsolutePath() + "/";
}
@@ -2,7 +2,6 @@ package cpm.com.gskmtorange.dailyentry
import android.content.Intent
import android.content.SharedPreferences
import android.net.Uri
import android.os.Bundle
import android.preference.PreferenceManager
import android.util.Log
@@ -11,7 +10,8 @@ import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import android.widget.Toast
import android.view.Menu
import android.view.MenuItem
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
@@ -53,8 +53,17 @@ class BannerActivity : AppCompatActivity() {
db = GSKOrangeDB(this)
db.open()
bannerlistnew = db.getMasterDetailerData("MASTER_DETAILER")
val storetype = intent.getStringExtra("DT_LEVEL") ?: ""
val categoryId = intent.getStringExtra("CategoryId") ?: ""
bannerlistnew = db.getMasterDetailerData("MASTER_DETAILER",storetype,categoryId)
/*if(!categoryId.equals("0")){
bannerlistnew = db.getMasterDetailerData("MASTER_DETAILER",storetype,categoryId)
}
else{
bannerlistnew = db.getMasterDetailerData("MASTER_DETAILER",storetype,"0")
}*/
Log.d("bannerlistkotlin", bannerlistnew?.size.toString())
bannerlistnew?.let {
@@ -64,6 +73,19 @@ class BannerActivity : AppCompatActivity() {
}
}
/* override fun onCreateOptionsMenu(menu: Menu): Boolean {
menuInflater.inflate(R.menu.banner_menu, menu)
return true
}*/
/* override fun onOptionsItemSelected(item: MenuItem): Boolean {
if (item.itemId == R.id.action_social_media) {
// Handle social media icon click
return true
}
return super.onOptionsItemSelected(item)
}*/
private fun handleClick(item: MasterDetailerGetterSetter) {
val url = if (item.dT_URL.isNotEmpty()) item.dT_URL[0] else ""
val type = "html-webview" // Default type as not specified in MASTER_DETAILER metadata
@@ -73,6 +95,7 @@ class BannerActivity : AppCompatActivity() {
val merId = if (item.dtid.isNotEmpty()) item.dtid[0] else ""
val categoryId = intent.getStringExtra("CategoryId") ?: ""
val finalUrl = appendStoreMerQuery(url, storeId, merId)
val storetype = intent.getStringExtra("DT_LEVEL") ?: ""
Log.d("finalurl", finalUrl)
val webIntent = Intent(this, WebViewActivity::class.java).apply {
@@ -81,6 +104,7 @@ class BannerActivity : AppCompatActivity() {
putExtra("storeid", storeId)
putExtra("merid", merId)
putExtra("categoryId", categoryId)
putExtra("dt_level", storetype)
}
startActivity(webIntent)
}
@@ -135,7 +159,6 @@ class BannerActivity : AppCompatActivity() {
holder.itemView.setOnClickListener { listener(item) }
}
override fun getItemCount(): Int = list.size
}
}
@@ -40,8 +40,9 @@ class WebViewActivity : AppCompatActivity() {
private lateinit var preferences: SharedPreferences
private lateinit var db: GSKOrangeDB
private var storeid: String = ""
private var merid: String = ""
private var detailerId: String = ""
private var categoryId: String = ""
private var dt_level: String = ""
@SuppressLint("SetJavaScriptEnabled")
override fun onCreate(savedInstanceState: Bundle?) {
@@ -56,14 +57,24 @@ class WebViewActivity : AppCompatActivity() {
val url = intent.getStringExtra("url") ?: ""
type = intent.getStringExtra("type") ?: "html-webview"
storeid = intent.getStringExtra("storeid") ?: ""
merid = intent.getStringExtra("merid") ?: ""
detailerId = intent.getStringExtra("merid") ?: ""
categoryId = intent.getStringExtra("categoryId") ?: ""
dt_level = intent.getStringExtra("dt_level") ?: ""
handleContent(type, url)
binding.toolbar.setTitle("Banner Detail")
setSupportActionBar(binding.toolbar)
supportActionBar?.setDisplayHomeAsUpEnabled(true)
if(dt_level.isNotEmpty()){
pageStartTime = System.currentTimeMillis()
val formattedTime = SimpleDateFormat(
"HH:mm:ss",
Locale.getDefault()
).format(Date(pageStartTime))
Log.d("WEBVIEW_START_TIME", "Start time is :$formattedTime ")
}
}
private fun handleContent(type: String, url: String) {
@@ -142,14 +153,13 @@ class WebViewActivity : AppCompatActivity() {
binding.webView.webViewClient = object : WebViewClient() {
override fun onPageStarted(view: WebView?, url: String?, favicon: android.graphics.Bitmap?) {
pageStartTime = System.currentTimeMillis()
/* pageStartTime = System.currentTimeMillis()
val formattedTime = SimpleDateFormat(
"HH:mm:ss",
Locale.getDefault()
).format(Date(pageStartTime))
).format(Date(pageStartTime))*/
// println(formattedTime)
Log.d("WEBVIEW_START_TIME", "Start time is :$formattedTime ")
injectJS(view)
}
@@ -429,31 +439,63 @@ class WebViewActivity : AppCompatActivity() {
override fun onPause() {
super.onPause()
player?.pause()
pageEndTime = System.currentTimeMillis()
val start_time = SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(Date(pageStartTime))
val end_time = SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(Date(pageEndTime))
val spent = (pageEndTime - pageStartTime) / 1000
val visit_date = preferences.getString(CommonString.KEY_DATE, "") ?: ""
val user_id = preferences.getString(CommonString.KEY_USERNAME, "") ?: ""
if(dt_level.isNotEmpty()) {
pageEndTime = System.currentTimeMillis()
val start_time =
SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(Date(pageStartTime))
val end_time =
SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(Date(pageEndTime))
val spent = (pageEndTime - pageStartTime) / 1000
db.insertWebViewTimeSpent(
storeid,
visit_date,
start_time,
end_time,
spent.toString(),
detailerId,
user_id,
categoryId,
dt_level
)
// Log.d("WEBVIEW_END_TIME", "End time is :$end_time and viewed for $spent sec ")
/* var detailer_xml = ""
var onXML = ""
val detailerList = db.getUploadedDetailerData(storeid)
Log.d("detailersize", detailerList.size.toString());
if (!detailerList.isEmpty()) {
for (j in detailerList.indices) {
onXML =
"[DETAILER_DATA]" +
"[MID]" + 0 + "[/MID]" +
"[USERID]" + user_id + "[/USERID]" +
"[STORE_ID]" + storeid + "[/STORE_ID]" +
"[VISIT_DATE]" + detailerList.get(j)!!
.getVisitdate() + "[/VISIT_DATE]" +
"[START_TIME]" + detailerList.get(j)!!
.getStart_time() + "[/START_TIME]" +
"[END_TIME]" + detailerList.get(j)!!.getEnd_time() + "[/END_TIME]" +
"[DURATION]" + detailerList.get(j)!!.getDuration() + "[/DURATION]" +
"[DETAILER_ID]" + detailerList.get(j)!!
.getDetailerId() + "[/DETAILER_ID]" +
"[CATEGORY_ID]" + detailerList.get(j)!!
.getCATEGORY_ID().get(0) + "[/CATEGORY_ID]" +
"[DT_LEVEL]" + detailerList.get(j)!!.getDT_LEVEL().get(0) + "[/DT_LEVEL]" +
"[/DETAILER_DATA]"
db.insertWebViewTimeSpent(
storeid,
visit_date,
start_time,
end_time,
spent.toString(),
merid,
user_id,
categoryId
)
detailer_xml = detailer_xml + onXML
}
val sos_xml = "[DATA]" + detailer_xml + "[/DATA]"
Log.e("detailer_xml_data", sos_xml)
Log.d("WEBVIEW_END_TIME", "End time is :$end_time and viewed for $spent sec ")
Log.d("WEBVIEW_END_TIME", "End time is :$end_time and viewed for $spent sec ")
}*/
}
}
override fun onDestroy() {
super.onDestroy()
player?.release()
player = null
// pageStartTime = System.currentTimeMillis()
// Log.d("WEBVIEW_END_TIME", " viewed for $pageStartTime sec")
}
}
@@ -33,7 +33,6 @@ import java.util.Objects;
import cpm.com.gskmtorange.Database.GSKOrangeDB;
import cpm.com.gskmtorange.GetterSetter.AddittionalGetterSetter;
import cpm.com.gskmtorange.GetterSetter.CategoryPictureGetterSetter;
import cpm.com.gskmtorange.MainActivity;
import cpm.com.gskmtorange.R;
import cpm.com.gskmtorange.constant.CommonFunctions;
import cpm.com.gskmtorange.constant.CommonString;
@@ -87,7 +86,7 @@ public class CategoryListActivity extends AppCompatActivity {
Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab_category);
bannerdatacheck = db.getMasterDetailerData("MASTER_DETAILER");
bannerdatacheck = db.getMasterDetailerData("MASTER_DETAILER","", "0");
fab.setOnClickListener(view -> Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG).setAction("Action", null).show());
}
@@ -111,15 +110,6 @@ public class CategoryListActivity extends AppCompatActivity {
// Add a manual KPI tile for "Detailer" (manual usage without a DB category id)
// This will appear as an extra item in the grid. The id used is a reserved key
// "detailer_manual" and its images are mapped in getImageRes().
try {
CategoryGetterSetter detailer = new CategoryGetterSetter();
detailer.setCategory("Detailer");
detailer.setCategory_id("detailer_manual");
categoryList.add(detailer);
} catch (Exception ignored) {
// If CategoryGetterSetter constructor/signatures differ, skip adding manually.
}
if (categoryList != null && !categoryList.isEmpty()) {
for (int i = 0; i < categoryList.size(); i++) {
String category_id = categoryList.get(i).getCategory_id();
@@ -140,7 +130,6 @@ public class CategoryListActivity extends AppCompatActivity {
imageRes = switch (category_id) {
case "1" -> R.mipmap.health_food_drink_tick;
case "2" -> R.mipmap.oralcare_tick;
case "detailer_manual" -> R.mipmap.oralcare_tick;
case "3" -> R.mipmap.wellness_tick;
case "4" -> R.mipmap.nutritionals_tick;
case "5" -> R.mipmap.gastro_n_indigestion_tick;
@@ -153,7 +142,6 @@ public class CategoryListActivity extends AppCompatActivity {
imageRes = switch (category_id) {
case "1" -> R.mipmap.health_food_drink;
case "2" -> R.mipmap.oral_care;
case "detailer_manual" -> R.mipmap.oral_care;
case "3" -> R.mipmap.wellness;
case "4" -> R.mipmap.nutritionals;
case "5" -> R.mipmap.gastro_n_indigestion;
@@ -244,12 +232,6 @@ public class CategoryListActivity extends AppCompatActivity {
return question_list;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
//getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
@@ -258,6 +240,15 @@ public class CategoryListActivity extends AppCompatActivity {
finish();
overridePendingTransition(R.anim.activity_back_in, R.anim.activity_back_out);
}
if (id == R.id.action_social_media) {
Intent intent = new Intent(CategoryListActivity.this, BannerActivity.class);
intent.putExtra("StoreId", store_id);
intent.putExtra("MerId",mer_Id);
intent.putExtra("CategoryId", "0");
intent.putExtra("DT_LEVEL","STORE");
startActivity(intent);
overridePendingTransition(R.anim.activity_in, R.anim.activity_out);
}
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
@@ -297,19 +288,12 @@ public class CategoryListActivity extends AppCompatActivity {
Log.e("CatImg--", "" + categoryData.getCategory_img());
holder.categoryIcon.setImageResource(categoryData.getCategory_img());
holder.lay_menu.setOnClickListener(view -> {
if(categoryData.getCategory().equalsIgnoreCase("Detailer")){
Intent intent = new Intent(CategoryListActivity.this, BannerActivity.class);
intent.putExtra("StoreId", store_id);
intent.putExtra("MerId",mer_Id);
startActivity(intent);
overridePendingTransition(R.anim.activity_in, R.anim.activity_out);
} else{
Intent intent = new Intent(CategoryListActivity.this, CategoryWisePerformanceActivity.class);
intent.putExtra("categoryName", categoryData.getCategory());
intent.putExtra("categoryId", categoryData.getCategory_id());
startActivity(intent);
overridePendingTransition(R.anim.activity_in, R.anim.activity_out);
}
});
}
@@ -711,4 +695,10 @@ public class CategoryListActivity extends AppCompatActivity {
}
return flag;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.banner_menu, menu);
return true;
}
}
@@ -484,10 +484,10 @@ public class DailyDataMenuActivity extends AppCompatActivity {
}
//Detailer
data = new DailyDataMenuGetterSetter();
/* data = new DailyDataMenuGetterSetter();
data.setCategory_name("Detailer");
data.setCategory_img(R.mipmap.oral_care);
categoryList.add(data);
categoryList.add(data);*/
if (categoryList.size() % 2 != 0) {
data = new DailyDataMenuGetterSetter();
@@ -552,22 +552,29 @@ public class DailyDataMenuActivity extends AppCompatActivity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
//getMenuInflater().inflate(R.menu.main, menu);
getMenuInflater().inflate(R.menu.banner_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == android.R.id.home) {
finish();
}
if (id == R.id.action_social_media) {
Intent intent = new Intent(DailyDataMenuActivity.this, BannerActivity.class);
String merId = preferences.getString(CommonString.KEY_MERCHANDISER_ID, "");
intent.putExtra("StoreId", store_id);
intent.putExtra("MerId", merId);
intent.putExtra("CategoryId", categoryId);
intent.putExtra("DT_LEVEL", "CATEGORY");
startActivity(intent);
overridePendingTransition(R.anim.activity_in, R.anim.activity_out);
}
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
@@ -770,9 +777,9 @@ public class DailyDataMenuActivity extends AppCompatActivity {
holder.categoryName.setTextColor(isPdPogIRMapping() != null && !isPdPogIRMapping().isEmpty() && camera_allow.equals("1")
? ContextCompat.getColor(context, R.color.black) : ContextCompat.getColor(context, R.color.grey_background));
}*/
else if (dailyData.getCategory_name().equalsIgnoreCase("Detailer")) {
/* else if (dailyData.getCategory_name().equalsIgnoreCase("Detailer")) {
holder.categoryName.setTextColor(ContextCompat.getColor(context, R.color.black));
}
}*/
else{
holder.irview.setVisibility(View.GONE);
}
@@ -843,15 +850,16 @@ public class DailyDataMenuActivity extends AppCompatActivity {
overridePendingTransition(R.anim.activity_in, R.anim.activity_out);
}
}
else if (dailyData.getCategory_name().equalsIgnoreCase("Detailer")) {
/* else if (dailyData.getCategory_name().equalsIgnoreCase("Detailer")) {
Intent intent = new Intent(DailyDataMenuActivity.this, BannerActivity.class);
String merId = preferences.getString(CommonString.KEY_MERCHANDISER_ID, "");
intent.putExtra("StoreId", store_id);
intent.putExtra("MerId", merId);
intent.putExtra("CategoryId", categoryId);
intent.putExtra("DT_LEVEL", "CATEGORY");
startActivity(intent);
overridePendingTransition(R.anim.activity_in, R.anim.activity_out);
}
}*/
else if (dailyData.getCategory_name().equalsIgnoreCase(getResources().getString(R.string.title_activity_ir_image))) {
if (isPdIRMapping() != null && !isPdIRMapping().isEmpty() && camera_allow.equals("1")) {
Intent intent = new Intent(DailyDataMenuActivity.this, PDimageActivity.class);
@@ -47,6 +47,7 @@ import cpm.com.gskmtorange.xmlGetterSetter.ImageGetterSetter;
import cpm.com.gskmtorange.xmlGetterSetter.MSL_AvailabilityGetterSetter;
import cpm.com.gskmtorange.xmlGetterSetter.MSL_AvailabilityStockFacingGetterSetter;
import cpm.com.gskmtorange.xmlGetterSetter.MappingPharmaQuestionGetterSetter;
import cpm.com.gskmtorange.xmlGetterSetter.MasterDetailerGetterSetter;
import cpm.com.gskmtorange.xmlGetterSetter.NoCameraDataGetterSetter;
import cpm.com.gskmtorange.xmlGetterSetter.POGGetterSetter;
import cpm.com.gskmtorange.xmlGetterSetter.PharmaMSLInsertedGetterSetter;
@@ -1555,9 +1556,6 @@ public class UploadActivity extends AppCompatActivity {
data.name = getString(R.string.ir_data_upload);
publishProgress(data);
////IRPDVisibility-Upload Data
/* String irPD_visi_xmlData = "";
onXML = "";
@@ -1647,8 +1645,54 @@ public class UploadActivity extends AppCompatActivity {
data.value = 72;
data.name = getString(R.string.visit_type_data_uploading);
publishProgress(data);
}
String detailer_xml = "";
onXML = "";
ArrayList<MasterDetailerGetterSetter> detailerList = db.getUploadedDetailerData(coverageList.get(i).getStoreId());
if (!detailerList.isEmpty()) {
for (int j = 0; j < detailerList.size(); j++) {
onXML =
"[DETAILER_DATA]" +
"[MID]" + mid + "[/MID]" +
"[USERID]" + userId + "[/USERID]" +
"[STORE_ID]" + coverageList.get(i).getStoreId() + "[/STORE_ID]" +
"[VISIT_DATE]" + detailerList.get(j).getVisitdate() + "[/VISIT_DATE]" +
"[START_TIME]" + detailerList.get(j).getStart_time() + "[/START_TIME]" +
"[END_TIME]" + detailerList.get(j).getEnd_time() + "[/END_TIME]" +
"[DURATION]" + detailerList.get(j).getDuration() + "[/DURATION]" +
"[DETAILER_ID]" + detailerList.get(j).getDetailerId() + "[/DETAILER_ID]" +
"[CATEGORY_ID]" + detailerList.get(j).getCATEGORY_ID().get(0) + "[/CATEGORY_ID]" +
"[DT_LEVEL]" + detailerList.get(j).getDT_LEVEL().get(0) + "[/DT_LEVEL]" +
"[/DETAILER_DATA]";
detailer_xml = detailer_xml + onXML;
}
final String sos_xml = "[DATA]" + detailer_xml + "[/DATA]";
Log.e("detailer_xml_data", sos_xml);
request = new SoapObject(CommonString.NAMESPACE, CommonString.METHOD_UPLOAD_STOCK_XML_DATA);
request.addProperty("XMLDATA", sos_xml);
request.addProperty("KEYS", "DETAILER_USAGE_TRACKER_XML");
request.addProperty("USERNAME", userId);
request.addProperty("MID", mid);
envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
androidHttpTransport = new OkHttpTransportSE(CommonString.URL);
androidHttpTransport.call(CommonString.SOAP_ACTION + CommonString.METHOD_UPLOAD_STOCK_XML_DATA, envelope);
result = envelope.getResponse();
if (!result.toString().equalsIgnoreCase(CommonString.KEY_SUCCESS)) {
return CommonString.METHOD_UPLOAD_STOCK_XML_DATA;
}
}
data.value = 73;
data.name = getString(R.string.detailer_data_uploading);
publishProgress(data);
}
// SET COVERAGE STATUS
String final_xml = "";
@@ -67,4 +67,72 @@ public class MasterDetailerGetterSetter {
public void setDT_THUMBNAIL(String DT_THUMBNAIL) {
this.DT_THUMBNAIL.add(DT_THUMBNAIL);
}
public String getVisitdate() {
return visitdate;
}
public void setVisitdate(String visitdate) {
this.visitdate = visitdate;
}
public String getStart_time() {
return start_time;
}
public void setStart_time(String start_time) {
this.start_time = start_time;
}
public String getEnd_time() {
return end_time;
}
public void setEnd_time(String end_time) {
this.end_time = end_time;
}
public String getDuration() {
return duration;
}
public void setDuration(String duration) {
this.duration = duration;
}
public String getStoreId() {
return storeId;
}
public void setStoreId(String storeId) {
this.storeId = storeId;
}
public String getDetailerId() {
return detailerId;
}
public void setDetailerId(String detailerId) {
this.detailerId = detailerId;
}
public String getDt_level() {
return dt_level;
}
public void setDt_level(String dt_level) {
this.dt_level = dt_level;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
String visitdate,start_time,end_time,duration,storeId,detailerId,dt_level,userId;
}
@@ -0,0 +1,151 @@
<!--
~ Copyright (C) 2026 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="512dp"
android:height="512dp"
android:viewportWidth="511.92"
android:viewportHeight="511.92">
<path
android:pathData="M195.33,356.65H20.18c-7,0 -12.68,-5.68 -12.68,-12.68V183.29c0,-7 5.68,-12.68 12.68,-12.68H195.33c7,0 12.68,5.68 12.68,12.68v160.68C208.01,350.97 202.33,356.65 195.33,356.65z"
android:fillColor="#FE93D3"/>
<path
android:pathData="M195.33,170.61h-47.74l13.44,109.88c0.69,5.67 -3.73,10.68 -9.45,10.68h-1.09c-18.12,0 -32.81,14.69 -32.81,32.81v32.68h77.66c7,0 12.68,-5.68 12.68,-12.68V183.29C208.01,176.29 202.33,170.61 195.33,170.61z"
android:fillColor="#FE73C5"/>
<path
android:pathData="M7.5,320.8v23.17c0,7 5.68,12.68 12.68,12.68H195.33c7,0 12.68,-5.68 12.68,-12.68V183.29c0,-7 -5.68,-12.68 -12.68,-12.68H20.18c-7,0 -12.68,5.68 -12.68,12.68v108.51"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M104.73,237.21c1.82,1.26 4.23,1.26 6.05,0c3.45,-2.38 9.77,-5.64 18.54,-5.64c12.77,0 21.56,9.87 21.56,21.35c0,12.97 -11.41,28.26 -40.87,41.7c-1.43,0.65 -3.08,0.65 -4.51,0c-29.46,-13.44 -40.87,-28.73 -40.87,-41.7c0,-11.49 8.8,-21.35 21.56,-21.35C94.96,231.57 101.28,234.83 104.73,237.21z"
android:fillColor="#F9F7F8"/>
<path
android:pathData="M104.73,237.21c1.82,1.26 4.23,1.26 6.05,0c3.45,-2.38 9.77,-5.64 18.54,-5.64c12.77,0 21.56,9.87 21.56,21.35c0,12.97 -11.41,28.26 -40.87,41.7c-1.43,0.65 -3.08,0.65 -4.51,0c-29.46,-13.44 -40.87,-28.73 -40.87,-41.7c0,-11.49 8.8,-21.35 21.56,-21.35C94.96,231.57 101.28,234.83 104.73,237.21z"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M415.03,320.8l-216.92,26.52c-4.77,0.58 -9.11,-2.81 -9.7,-7.58L154.34,61.08c-0.58,-4.77 2.81,-9.11 7.58,-9.7l216.92,-26.52c4.77,-0.58 9.11,2.81 9.7,7.58l34.07,278.65C423.2,315.88 419.8,320.22 415.03,320.8z"
android:fillColor="#F9F7F8"/>
<path
android:pathData="M378.85,24.87l-28.34,3.46c4.77,-0.58 9.11,2.81 9.7,7.58l34.07,278.65c0.58,4.77 -2.81,9.11 -7.58,9.7l28.34,-3.46c4.77,-0.58 8.17,-4.92 7.58,-9.7L388.54,32.45C387.96,27.68 383.62,24.28 378.85,24.87z"
android:fillColor="#EFEDEF"/>
<path
android:pathData="M392.8,67.33l-4.26,-34.88c-0.58,-4.77 -4.92,-8.17 -9.7,-7.58L161.93,51.39c-4.77,0.58 -8.17,4.92 -7.58,9.7l34.07,278.65c0.58,4.77 4.92,8.17 9.7,7.58L415.03,320.8c4.77,-0.58 8.17,-4.92 7.58,-9.7L396.35,96.33"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M217.16,97.46L336.33,82.89"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M223.03,145.42L342.2,130.85"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M228.89,193.38L348.06,178.81"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M234.76,241.34L353.93,226.77"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M240.62,289.3L359.79,274.73"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M470.14,288.42l33.62,-92.69c2.07,-5.7 -0.88,-11.99 -6.57,-14.06l-157.66,-57.19c-5.7,-2.07 -11.99,0.88 -14.06,6.57l-30.97,85.38C403.75,199.2 386.75,280.08 470.14,288.42z"
android:fillColor="#C8EFFE"/>
<path
android:pathData="M497.18,181.67l-23.82,-8.64c5.7,2.07 8.64,8.36 6.57,14.06l-34.78,95.88c7.24,2.59 15.45,4.5 24.98,5.45l33.62,-92.69C505.83,190.03 502.88,183.74 497.18,181.67z"
android:fillColor="#B3DAFE"/>
<path
android:pathData="M470.14,288.42l33.62,-92.69c2.07,-5.7 -0.88,-11.99 -6.57,-14.06l-157.66,-57.19c-5.7,-2.07 -11.99,0.88 -14.06,6.57l-30.97,85.38C403.75,199.2 386.75,280.08 470.14,288.42z"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M294.49,216.44l-32.32,89.11c-2.07,5.7 0.88,11.99 6.57,14.06l157.66,57.19c5.7,2.07 11.99,-0.88 14.06,-6.57l29.67,-81.8C386.75,280.08 403.75,199.2 294.49,216.44z"
android:fillColor="#9BE69D"/>
<path
android:pathData="M445.16,282.97l-28.51,78.61c-2.07,5.7 -8.36,8.64 -14.06,6.57l23.82,8.64c5.7,2.07 11.99,-0.88 14.06,-6.57l29.67,-81.8C460.61,287.47 452.4,285.56 445.16,282.97z"
android:fillColor="#6FD7A3"/>
<path
android:pathData="M294.49,216.44l-32.32,89.11c-2.07,5.7 0.88,11.99 6.57,14.06l157.66,57.19c5.7,2.07 11.99,-0.88 14.06,-6.57l29.67,-81.8C386.75,280.08 403.75,199.2 294.49,216.44z"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M446.25,211.59m-15.18,0a15.18,15.18 0,1 1,30.37 0a15.18,15.18 0,1 1,-30.37 0"
android:fillColor="#FFE177"/>
<path
android:pathData="M446.25,211.59m-15.18,0a15.18,15.18 0,1 1,30.37 0a15.18,15.18 0,1 1,-30.37 0"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M361.52,487.12H150.48c-7.07,0 -12.81,-5.73 -12.81,-12.81V323.97c0,-7.07 5.73,-12.81 12.81,-12.81h211.04c7.07,0 12.81,5.73 12.81,12.81v150.35C374.33,481.39 368.59,487.12 361.52,487.12z"
android:fillColor="#EB5569"/>
<path
android:pathData="M361.52,311.16h-24.26c7.07,0 12.81,5.73 12.81,12.81v150.35c0,7.07 -5.73,12.81 -12.81,12.81h24.26c7.07,0 12.81,-5.73 12.81,-12.81V323.97C374.33,316.89 368.59,311.16 361.52,311.16z"
android:fillColor="#E53950"/>
<path
android:pathData="M280.82,392.63l-40.82,-27.66c-5.22,-3.54 -12.28,0.2 -12.28,6.51v55.33c0,6.31 7.05,10.05 12.28,6.51l40.82,-27.66C285.42,402.53 285.42,395.75 280.82,392.63z"
android:fillColor="#F9F7F8"/>
<path
android:pathData="M280.82,392.63l-40.82,-27.66c-5.22,-3.54 -12.28,0.2 -12.28,6.51v55.33c0,6.31 7.05,10.05 12.28,6.51l40.82,-27.66C285.42,402.53 285.42,395.75 280.82,392.63z"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M374.33,413.46v-89.5c0,-7.07 -5.73,-12.81 -12.81,-12.81H150.48c-7.07,0 -12.81,5.73 -12.81,12.81v150.35c0,7.07 5.73,12.81 12.81,12.81h211.04c7.07,0 12.81,-5.73 12.81,-12.81v-31.85"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
</vector>
@@ -0,0 +1,151 @@
<!--
~ Copyright (C) 2026 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="512dp"
android:height="512dp"
android:viewportWidth="511.92"
android:viewportHeight="511.92">
<path
android:pathData="M195.33,356.65H20.18c-7,0 -12.68,-5.68 -12.68,-12.68V183.29c0,-7 5.68,-12.68 12.68,-12.68H195.33c7,0 12.68,5.68 12.68,12.68v160.68C208.01,350.97 202.33,356.65 195.33,356.65z"
android:fillColor="#FE93D3"/>
<path
android:pathData="M195.33,170.61h-47.74l13.44,109.88c0.69,5.67 -3.73,10.68 -9.45,10.68h-1.09c-18.12,0 -32.81,14.69 -32.81,32.81v32.68h77.66c7,0 12.68,-5.68 12.68,-12.68V183.29C208.01,176.29 202.33,170.61 195.33,170.61z"
android:fillColor="#FE73C5"/>
<path
android:pathData="M7.5,320.8v23.17c0,7 5.68,12.68 12.68,12.68H195.33c7,0 12.68,-5.68 12.68,-12.68V183.29c0,-7 -5.68,-12.68 -12.68,-12.68H20.18c-7,0 -12.68,5.68 -12.68,12.68v108.51"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M104.73,237.21c1.82,1.26 4.23,1.26 6.05,0c3.45,-2.38 9.77,-5.64 18.54,-5.64c12.77,0 21.56,9.87 21.56,21.35c0,12.97 -11.41,28.26 -40.87,41.7c-1.43,0.65 -3.08,0.65 -4.51,0c-29.46,-13.44 -40.87,-28.73 -40.87,-41.7c0,-11.49 8.8,-21.35 21.56,-21.35C94.96,231.57 101.28,234.83 104.73,237.21z"
android:fillColor="#F9F7F8"/>
<path
android:pathData="M104.73,237.21c1.82,1.26 4.23,1.26 6.05,0c3.45,-2.38 9.77,-5.64 18.54,-5.64c12.77,0 21.56,9.87 21.56,21.35c0,12.97 -11.41,28.26 -40.87,41.7c-1.43,0.65 -3.08,0.65 -4.51,0c-29.46,-13.44 -40.87,-28.73 -40.87,-41.7c0,-11.49 8.8,-21.35 21.56,-21.35C94.96,231.57 101.28,234.83 104.73,237.21z"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M415.03,320.8l-216.92,26.52c-4.77,0.58 -9.11,-2.81 -9.7,-7.58L154.34,61.08c-0.58,-4.77 2.81,-9.11 7.58,-9.7l216.92,-26.52c4.77,-0.58 9.11,2.81 9.7,7.58l34.07,278.65C423.2,315.88 419.8,320.22 415.03,320.8z"
android:fillColor="#F9F7F8"/>
<path
android:pathData="M378.85,24.87l-28.34,3.46c4.77,-0.58 9.11,2.81 9.7,7.58l34.07,278.65c0.58,4.77 -2.81,9.11 -7.58,9.7l28.34,-3.46c4.77,-0.58 8.17,-4.92 7.58,-9.7L388.54,32.45C387.96,27.68 383.62,24.28 378.85,24.87z"
android:fillColor="#EFEDEF"/>
<path
android:pathData="M392.8,67.33l-4.26,-34.88c-0.58,-4.77 -4.92,-8.17 -9.7,-7.58L161.93,51.39c-4.77,0.58 -8.17,4.92 -7.58,9.7l34.07,278.65c0.58,4.77 4.92,8.17 9.7,7.58L415.03,320.8c4.77,-0.58 8.17,-4.92 7.58,-9.7L396.35,96.33"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M217.16,97.46L336.33,82.89"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M223.03,145.42L342.2,130.85"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M228.89,193.38L348.06,178.81"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M234.76,241.34L353.93,226.77"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M240.62,289.3L359.79,274.73"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M470.14,288.42l33.62,-92.69c2.07,-5.7 -0.88,-11.99 -6.57,-14.06l-157.66,-57.19c-5.7,-2.07 -11.99,0.88 -14.06,6.57l-30.97,85.38C403.75,199.2 386.75,280.08 470.14,288.42z"
android:fillColor="#C8EFFE"/>
<path
android:pathData="M497.18,181.67l-23.82,-8.64c5.7,2.07 8.64,8.36 6.57,14.06l-34.78,95.88c7.24,2.59 15.45,4.5 24.98,5.45l33.62,-92.69C505.83,190.03 502.88,183.74 497.18,181.67z"
android:fillColor="#B3DAFE"/>
<path
android:pathData="M470.14,288.42l33.62,-92.69c2.07,-5.7 -0.88,-11.99 -6.57,-14.06l-157.66,-57.19c-5.7,-2.07 -11.99,0.88 -14.06,6.57l-30.97,85.38C403.75,199.2 386.75,280.08 470.14,288.42z"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M294.49,216.44l-32.32,89.11c-2.07,5.7 0.88,11.99 6.57,14.06l157.66,57.19c5.7,2.07 11.99,-0.88 14.06,-6.57l29.67,-81.8C386.75,280.08 403.75,199.2 294.49,216.44z"
android:fillColor="#9BE69D"/>
<path
android:pathData="M445.16,282.97l-28.51,78.61c-2.07,5.7 -8.36,8.64 -14.06,6.57l23.82,8.64c5.7,2.07 11.99,-0.88 14.06,-6.57l29.67,-81.8C460.61,287.47 452.4,285.56 445.16,282.97z"
android:fillColor="#6FD7A3"/>
<path
android:pathData="M294.49,216.44l-32.32,89.11c-2.07,5.7 0.88,11.99 6.57,14.06l157.66,57.19c5.7,2.07 11.99,-0.88 14.06,-6.57l29.67,-81.8C386.75,280.08 403.75,199.2 294.49,216.44z"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M446.25,211.59m-15.18,0a15.18,15.18 0,1 1,30.37 0a15.18,15.18 0,1 1,-30.37 0"
android:fillColor="#FFE177"/>
<path
android:pathData="M446.25,211.59m-15.18,0a15.18,15.18 0,1 1,30.37 0a15.18,15.18 0,1 1,-30.37 0"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M361.52,487.12H150.48c-7.07,0 -12.81,-5.73 -12.81,-12.81V323.97c0,-7.07 5.73,-12.81 12.81,-12.81h211.04c7.07,0 12.81,5.73 12.81,12.81v150.35C374.33,481.39 368.59,487.12 361.52,487.12z"
android:fillColor="#EB5569"/>
<path
android:pathData="M361.52,311.16h-24.26c7.07,0 12.81,5.73 12.81,12.81v150.35c0,7.07 -5.73,12.81 -12.81,12.81h24.26c7.07,0 12.81,-5.73 12.81,-12.81V323.97C374.33,316.89 368.59,311.16 361.52,311.16z"
android:fillColor="#E53950"/>
<path
android:pathData="M280.82,392.63l-40.82,-27.66c-5.22,-3.54 -12.28,0.2 -12.28,6.51v55.33c0,6.31 7.05,10.05 12.28,6.51l40.82,-27.66C285.42,402.53 285.42,395.75 280.82,392.63z"
android:fillColor="#F9F7F8"/>
<path
android:pathData="M280.82,392.63l-40.82,-27.66c-5.22,-3.54 -12.28,0.2 -12.28,6.51v55.33c0,6.31 7.05,10.05 12.28,6.51l40.82,-27.66C285.42,402.53 285.42,395.75 280.82,392.63z"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
<path
android:pathData="M374.33,413.46v-89.5c0,-7.07 -5.73,-12.81 -12.81,-12.81H150.48c-7.07,0 -12.81,5.73 -12.81,12.81v150.35c0,7.07 5.73,12.81 12.81,12.81h211.04c7.07,0 12.81,-5.73 12.81,-12.81v-31.85"
android:strokeLineJoin="round"
android:strokeWidth="15"
android:fillColor="#00000000"
android:strokeColor="#000000"
android:strokeLineCap="round"/>
</vector>
@@ -1,35 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
<androidx.cardview.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
app:cardCornerRadius="8dp"
app:cardCornerRadius="12dp"
app:cardElevation="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="16dp"
android:gravity="center_vertical">
android:layout_height="110dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/imgThumbnail"
android:layout_width="60dp"
android:layout_height="60dp"
android:scaleType="centerCrop"
android:src="@mipmap/ic_launcher" />
<!-- Red Vertical Strip -->
<View
android:layout_width="4dp"
android:layout_height="match_parent"
android:background="@color/colorPrimaryDark"/>
<TextView
android:id="@+id/tvName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:text="Detailer Name"
android:textColor="@color/black"
android:textSize="16sp"
android:textStyle="bold" />
<!-- Content Area -->
<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical"
android:padding="12dp">
<TextView
android:id="@+id/tvName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:textSize="22sp"
android:textStyle="bold"
android:textColor="#000000"/>
<TextView
android:id="@+id/tvViewDetail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@string/view_detailer"
android:fontFamily="sans-serif-medium"
android:textSize="12sp"
android:textColor="@color/colorPrimary"/>
</LinearLayout>
<!-- Right Icon Area -->
<LinearLayout
android:layout_width="80dp"
android:layout_height="match_parent"
android:background="#E8FBE3"
android:gravity="center"
android:orientation="vertical">
<ImageView
android:id="@+id/imgThumbnail"
android:layout_width="70dp"
android:layout_height="90dp"
/>
</LinearLayout>
</LinearLayout>
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_social_media"
android:icon="@drawable/social_media"
android:title="Social Media"
app:showAsAction="always" />
</menu>
@@ -220,6 +220,7 @@
<string name="order_taking_data_uploading">Order Taking Data Uploading</string>
<string name="order_received_data_uploading">Order Received Data Uploading</string>
<string name="visit_type_data_uploading">Visit Type Data Uploading</string>
<string name="detailer_data_uploading">Detailer Data Uploading</string>
<string name="stock_data_uploading">Stock Data Uploading</string>
<string name="t2p_data_uploading">T2P Data Uploading</string>
<string name="additional_data_uploading">Additional Visibility Data Uploading</string>
@@ -469,6 +470,7 @@
<string name="please_enter_order_qty">Please enter order qty</string>
<string name="add_different_sku">This SKU has already been added. Please add a different SKU.</string>
<string name="order_details">Order Details</string>
<string name="view_detailer">View Detailer →</string>
</resources>
@@ -1,6 +1,6 @@
#Thu May 14 13:16:57 IST 2026
#Thu Jun 18 11:00:06 IST 2026
com.androidbuts.multispinnerfilter.library-main-6\:/layout/activity_main.xml=E\:\\Haleon_Egypt_PD\\library\\build\\intermediates\\packaged_res\\debug\\packageDebugResources\\layout\\activity_main.xml
com.androidbuts.multispinnerfilter.library-main-6\:/layout/alert_dialog_listview_search.xml=E\:\\Haleon_Egypt_PD\\library\\build\\intermediates\\packaged_res\\debug\\packageDebugResources\\layout\\alert_dialog_listview_search.xml
com.androidbuts.multispinnerfilter.library-main-6\:/layout/item_listview_multiple.xml=E\:\\Haleon_Egypt_PD\\library\\build\\intermediates\\packaged_res\\debug\\packageDebugResources\\layout\\item_listview_multiple.xml
com.androidbuts.multispinnerfilter.library-main-6\:/layout/item_listview_single.xml=E\:\\Haleon_Egypt_PD\\library\\build\\intermediates\\packaged_res\\debug\\packageDebugResources\\layout\\item_listview_single.xml
com.androidbuts.multispinnerfilter.library-main-6\:/layout/textview_for_spinner.xml=E\:\\Haleon_Egypt_PD\\library\\build\\intermediates\\packaged_res\\debug\\packageDebugResources\\layout\\textview_for_spinner.xml
com.androidbuts.multispinnerfilter.library-main-6\:/layout/item_listview_multiple.xml=E\:\\Haleon_Egypt_PD\\library\\build\\intermediates\\packaged_res\\debug\\packageDebugResources\\layout\\item_listview_multiple.xml
@@ -1,4 +1,4 @@
#Thu May 14 12:13:15 IST 2026
#Wed Jun 17 15:19:01 IST 2026
com.androidbuts.multispinnerfilter.library-main-5\:/layout/activity_main.xml=E\:\\Haleon_Egypt_PD\\library\\build\\intermediates\\packaged_res\\release\\packageReleaseResources\\layout\\activity_main.xml
com.androidbuts.multispinnerfilter.library-main-5\:/layout/alert_dialog_listview_search.xml=E\:\\Haleon_Egypt_PD\\library\\build\\intermediates\\packaged_res\\release\\packageReleaseResources\\layout\\alert_dialog_listview_search.xml
com.androidbuts.multispinnerfilter.library-main-5\:/layout/item_listview_multiple.xml=E\:\\Haleon_Egypt_PD\\library\\build\\intermediates\\packaged_res\\release\\packageReleaseResources\\layout\\item_listview_multiple.xml