Mechele

Untitled

Feb 10th, 2016
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.46 KB | None | 0 0
  1. package com.taxipixi.incarapp.widgets;
  2.  
  3. import android.annotation.TargetApi;
  4. import android.content.Context;
  5. import android.content.Intent;
  6. import android.graphics.Color;
  7. import android.graphics.drawable.Drawable;
  8. import android.net.Uri;
  9. import android.os.Build;
  10. import android.support.v4.app.FragmentActivity;
  11. import android.text.Spannable;
  12. import android.text.SpannableString;
  13. import android.text.style.AbsoluteSizeSpan;
  14. import android.text.style.ForegroundColorSpan;
  15. import android.util.AttributeSet;
  16. import android.util.TypedValue;
  17. import android.view.LayoutInflater;
  18. import android.view.View;
  19. import android.view.ViewGroup;
  20. import android.widget.ImageView;
  21. import android.widget.LinearLayout;
  22. import android.widget.RelativeLayout;
  23. import android.widget.TextView;
  24.  
  25. import com.google.android.gms.maps.CameraUpdateFactory;
  26. import com.google.android.gms.maps.model.LatLng;
  27. import com.taxipixi.Constants;
  28. import com.taxipixi.entity.CabType;
  29. import com.taxipixi.entity.Order;
  30. import com.taxipixi.incarapp.R;
  31. import com.taxipixi.incarapp.api.MenuListeners;
  32. import com.taxipixi.incarapp.api.SystemTime;
  33. import com.taxipixi.incarapp.api.Timeformatter;
  34. import com.taxipixi.incarapp.application.IncarApp;
  35. import com.taxipixi.incarapp.fare.JourneyInfo;
  36. import com.taxipixi.map.ExtendedMapFragment;
  37. import com.taxipixi.navigation.OverlaysForRouteGenerator;
  38. import com.taxipixi.utils.DecimalFormating;
  39. import com.taxipixi.widget.AddressWidget;
  40.  
  41. import java.math.BigDecimal;
  42. import java.text.SimpleDateFormat;
  43. import java.util.Locale;
  44.  
  45. public class JourneyInfoWidget_M extends LinearLayout
  46. {
  47.  
  48. private ViewGroup contactInfo;
  49.  
  50. private AddressWidget origin;
  51.  
  52. private AddressWidget destination;
  53.  
  54. private ExtendedMapFragment mapFragment;
  55.  
  56. private ImageView navigate;
  57.  
  58. //public LinearLayout dropOff;
  59.  
  60.  
  61. private OverlaysForRouteGenerator overlaysForRouteGenerator;
  62.  
  63. private TextView time;
  64. //, fare_per_min;
  65.  
  66. private TextView distance;
  67. private TextView packageDuration;
  68.  
  69. //private TextView fee;
  70.  
  71. //private TextView total;
  72.  
  73. //public TextView perKmCost;
  74.  
  75. //public TextView fare_10_frst_value;
  76. //public TextView min_km_value;
  77. //public TextView fare_after_min_km, immediate_future;
  78.  
  79. //public LinearLayout cabFareInfoLayout;
  80.  
  81. //public RelativeLayout cabFareHireLayout,plus_hire_time;
  82.  
  83. boolean isEnglish = false;
  84.  
  85. //private SimpleDateFormat dateFormatter = new SimpleDateFormat("d MMMM, hh:mm aa"); //changed to 24 hour format
  86. private SimpleDateFormat dateFormatter = new SimpleDateFormat("d MMMM, HH:mm aa");
  87.  
  88. public JourneyInfoWidget_M(Context context) {
  89. super(context);
  90. initializeComponent();
  91. }
  92.  
  93. public JourneyInfoWidget_M(Context context, AttributeSet attrs) {
  94. super(context, attrs);
  95. initializeComponent();
  96. }
  97.  
  98. @TargetApi(Build.VERSION_CODES.HONEYCOMB)
  99. public JourneyInfoWidget_M(Context context, AttributeSet attrs, int defStyle) {
  100. super(context, attrs, defStyle);
  101. initializeComponent();
  102. }
  103.  
  104. private void initializeComponent() {
  105.  
  106. /*dropOff = (LinearLayout) findViewById(R.id.drop_off);
  107. dropOff = (LinearLayout) findViewById(R.id.drop_off);*/
  108.  
  109. LayoutInflater.from(getContext()).inflate(R.layout.new_widget_journey_info, this);
  110.  
  111. //contactInfo = (ViewGroup) findViewById(R.id.contact_info);
  112.  
  113. FragmentActivity fa = (FragmentActivity) getContext();
  114.  
  115. try{
  116. mapFragment = (ExtendedMapFragment) fa.getSupportFragmentManager().findFragmentById(R.id.mapfragment);
  117.  
  118.  
  119. View zoomControls = mapFragment.getView().findViewById(0x1);
  120.  
  121. if (zoomControls != null && zoomControls.getLayoutParams() instanceof RelativeLayout.LayoutParams) {
  122. // ZoomControl is inside of RelativeLayout
  123. RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) zoomControls.getLayoutParams();
  124. // Align it to - parent bottom above Buttons
  125. //params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, R.id.actionButtonsLayout);
  126.  
  127. final int margin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 10,
  128. getResources().getDisplayMetrics());
  129. final int marginBottom = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 120, getResources().getDisplayMetrics());
  130.  
  131. params.setMargins(margin, margin, margin, marginBottom);
  132.  
  133. zoomControls.setLayoutParams(params);
  134. }
  135.  
  136. mapFragment.getView().setVisibility(View.GONE);
  137. }
  138. catch(Exception ex){
  139. ex.printStackTrace();
  140. }
  141. origin = (AddressWidget) findViewById(R.id.origin);
  142. destination = (AddressWidget) findViewById(R.id.destination);
  143.  
  144. time = (TextView) findViewById(R.id.time);
  145. // distance = (TextView) findViewById(R.id.distance);
  146. packageDuration = (TextView) findViewById(R.id.package_duration);
  147.  
  148. /*fee = (TextView) findViewById(R.id.fee);
  149. total = (TextView) findViewById(R.id.total);
  150. perKmCost = (TextView) findViewById(R.id.perKmFare);
  151.  
  152. fare_10_frst_value = (TextView) findViewById(R.id.fare_10_frst_value);
  153. min_km_value = (TextView) findViewById(R.id.min_km_value);
  154. fare_after_min_km = (TextView) findViewById(R.id.fare_after_min_km);
  155. cabFareInfoLayout = (LinearLayout) findViewById(R.id.cabFareInfoLayout);
  156.  
  157. cabFareHireLayout = (RelativeLayout) findViewById(R.id.cabFareHireLayout);
  158. plus_hire_time = (RelativeLayout) findViewById(R.id.plus_hire_time);
  159.  
  160. fare_per_min = (TextView) findViewById(R.id.fare_per_min);*///Deleted by Mechele
  161. //immediate_future = (TextView) findViewById(R.id.immediate_future);
  162.  
  163.  
  164. navigate = (ImageView) findViewById(R.id.navigate);
  165.  
  166. navigate.setOnClickListener(new OnClickListener() {
  167. @Override
  168. public void onClick(View view) {
  169. setViewExpanded(!isViewExpanded());
  170. }
  171. });
  172. // MenuListeners.registerNewDestinationReceiverAndSetter(destination.addressTextView);//transpher texview for setting destination in case of update
  173.  
  174. }
  175.  
  176. public void setViewExpanded(boolean closed) {
  177. LatLng latLng = null;
  178. String description="";
  179. if(origin!=null && origin.getPlace()!=null){
  180. latLng = origin.getPlace().getLatLng();
  181. description = origin.getPlace().getDescription() ;
  182. }
  183. boolean activityFound = true;
  184. if(latLng!=null){
  185. try{
  186. String uri = String.format(Locale.ENGLISH, "http://maps.google.com/maps?daddr=%f,%f (%s)", latLng.latitude, latLng.longitude, description);
  187. Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(uri));
  188. intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
  189. getContext().startActivity(intent);
  190. IncarApp.isNewOrderNeedToBeShown = false;
  191. }catch (Exception ex){
  192. activityFound = false;
  193. IncarApp.isNewOrderNeedToBeShown = true;
  194. }
  195. }
  196.  
  197. if(activityFound)
  198. return;
  199.  
  200. /*int currVisibility = contactInfo.getVisibility();
  201. if (closed && currVisibility != View.VISIBLE) {
  202. contactInfo.setVisibility(View.VISIBLE);
  203. if(mapFragment!=null)
  204. mapFragment.getView().setVisibility(View.GONE);
  205. } else if (!closed && currVisibility == View.VISIBLE) {
  206. contactInfo.setVisibility(View.GONE);
  207. if(mapFragment!=null)
  208. mapFragment.getView().setVisibility(View.VISIBLE);
  209. }*/
  210. }
  211.  
  212. public boolean isViewExpanded() {
  213. return contactInfo.getVisibility() == View.VISIBLE;
  214. }
  215.  
  216. public void setJourneyInfo(JourneyInfo journeyInfo, CabType cabType) {
  217.  
  218. String currency = cabType.getCurrency();
  219.  
  220. isEnglish = cabType.isEnglish();
  221. origin.onNewPlace(journeyInfo.getPickup(), true);
  222.  
  223.  
  224. if (destination!=null) {
  225. destination.onNewPlace(journeyInfo.getDestination(), true);
  226. //destination.setIcon(R.drawable.ic_drop);
  227. } else {
  228. //dropOff.setVisibility(GONE);
  229. }
  230. if(journeyInfo.getBookingType()==null || journeyInfo.getBookingType().equals(Constants.HOURLY)){
  231. packageDuration.setVisibility(VISIBLE);
  232. String packageDetails = journeyInfo.getPackageType();
  233. if(packageDetails.equalsIgnoreCase("FULL DAY")){
  234. int days = journeyInfo.getDays();
  235. String daysString = " DAYS" ;
  236. if(days==1)
  237. daysString = " DAY";
  238. packageDetails = days + daysString;
  239. }
  240.  
  241. if(journeyInfo.getDistanceInMeters()>0){
  242. packageDetails = packageDetails + " /" + journeyInfo.getDistanceInKM() + " KM";
  243. }
  244. packageDuration.setText(packageDetails);
  245. // destination.setAddressText(packageDetails, true);
  246. // destination.setIcon(R.drawable.package_duration);
  247. }
  248.  
  249. if (journeyInfo.getRequestedPickupTime() == null) {
  250. time.setText(
  251. getContext().getString(R.string.confirmation_time_asap));
  252. } else {
  253. long timeLong = journeyInfo.getRequestedPickupTime();
  254.  
  255. // time.setText(setDayTimeColor(Timeformatter.getDateTimeFromSeconds(timeLong, currency)));
  256.  
  257. long networkTS = SystemTime.getSystemTime();
  258.  
  259. /*if(timeLong*1000 <= networkTS + 45*60*1000){
  260. time.setText(setDayTimeColor(Timeformatter.getDateTimeFromSeconds(timeLong, currency), true));
  261. Drawable img = getContext().getResources().getDrawable( R.drawable.immediate_order_icon );
  262. immediate_future.setCompoundDrawablesWithIntrinsicBounds( img, null, null, null);
  263. immediate_future.setText(getResources().getString(R.string.immediate_order));
  264.  
  265. }else{
  266. time.setText(setDayTimeColor(Timeformatter.getDateTimeFromSeconds(timeLong, currency), false));
  267. Drawable img = getContext().getResources().getDrawable( R.drawable.future_order );
  268. immediate_future.setCompoundDrawablesWithIntrinsicBounds( img, null, null, null);
  269. immediate_future.setText(getResources().getString(R.string.future_order));
  270. immediate_future.setTextColor(Color.BLUE);
  271.  
  272. }*/
  273.  
  274. }
  275. /*if(journeyInfo.getFee().floatValue()<=0) {
  276. total.setText(currency +" "+ DecimalFormating.getStringFormatted(journeyInfo.getCost()));
  277. fee.setVisibility(View.GONE);
  278. }else{
  279.  
  280. BigDecimal feeAmount = journeyInfo.getFee();
  281. fee.setText(currency+" " + DecimalFormating.getStringFormatted(feeAmount));
  282.  
  283. if(currency.equalsIgnoreCase("RM")){
  284. fee.setCompoundDrawablesWithIntrinsicBounds(R.drawable.call_fee,0,0,0);
  285. } else if(Locale.getDefault().equals("ru")){
  286. fee.setCompoundDrawablesWithIntrinsicBounds(R.drawable.fee_ru,0,0,0);
  287. } else if(Locale.getDefault().equals("az") || Locale.getDefault().equals("tr")){
  288. fee.setCompoundDrawablesWithIntrinsicBounds(R.drawable.fee_az,0,0,0);
  289. }
  290.  
  291. if(journeyInfo.getHideFee()==1 || cabType.getHideFeeInfo()==1)
  292. fee.setVisibility(View.GONE);
  293. else
  294. fee.setVisibility(View.VISIBLE);
  295.  
  296. }*///Deleted by Mechele
  297.  
  298. /*if (journeyInfo.getDestination()==null && journeyInfo.getBookingType().equals(Constants.POINT_TO_POINT)) {
  299. total.setText("-");
  300. distance.setText("");
  301. total.setVisibility(View.GONE);
  302. }else {
  303. BigDecimal journeyCost = journeyInfo.getCost();
  304. total.setText(currency + " " + DecimalFormating.getStringFormatted(journeyCost));
  305. distance.setText(setTimeOrAdressColor(journeyInfo.getDistanceInKM() +" KM"));
  306. total.setVisibility(View.VISIBLE);
  307. }*/
  308.  
  309. /*if(currency.equals("RM") || !journeyInfo.getBookingType().equals(Constants.POINT_TO_POINT) || journeyInfo.getInitialFare()==null ){
  310.  
  311. perKmCost.setText(currency+ " " + DecimalFormating.getStringFormatted(journeyInfo.getPerKMFare())+"/-");
  312. perKmCost.setVisibility(View.VISIBLE);
  313. cabFareInfoLayout.setVisibility(View.GONE);
  314. }
  315. else {
  316. cabFareInfoLayout.setVisibility(View.VISIBLE);
  317. fare_10_frst_value.setText(setRsFareColorFont(currency+ " " + DecimalFormating.getStringFormatted(journeyInfo.getInitialFare())));
  318. if(journeyInfo.getMinimum()>0)
  319. min_km_value.setText(setRsFareColorFont(getContext().getString(R.string.first) + " " + journeyInfo.getMinimum() + "KM "));
  320. else
  321. min_km_value.setText(getContext().getString(R.string.initial_charge));
  322. fare_after_min_km.setText(setRsFareColorFont(currency+ " " + DecimalFormating.getStringFormatted(journeyInfo.getPerKMFare())));
  323. perKmCost.setVisibility(View.GONE);
  324.  
  325. if(journeyInfo.getHireTimeFareDay()!=null && journeyInfo.getHireTimeFareDay().doubleValue()>0){
  326. fare_per_min.setText(setRsFareColorFont(currency + " " + DecimalFormating.getStringFormatted(journeyInfo.getHireTimeFareDay())));
  327. cabFareHireLayout.setVisibility(View.VISIBLE);
  328. plus_hire_time.setVisibility(View.VISIBLE);
  329. }
  330.  
  331. }*///Deleted by Mechele
  332. if(mapFragment!=null)
  333. mapFragment.getMap().moveCamera(CameraUpdateFactory.newLatLng(journeyInfo.getPickup().getLatLng()));
  334. }
  335.  
  336. public AddressWidget getDestinationTextView(){
  337. return destination;
  338. }
  339. public ExtendedMapFragment getMapView() {
  340. return mapFragment;
  341. }
  342.  
  343. private Spannable setDayTimeColor (String s, boolean red){//setting red color for date and time based upon ", " position from time formater
  344. int color = Color.RED;
  345. if(!red)
  346. color = Color.BLUE ;
  347. int index = s.indexOf(", ");
  348. Spannable span = new SpannableString(s);
  349. span.setSpan(new ForegroundColorSpan(color), 0, index-3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  350. span.setSpan(new AbsoluteSizeSpan(30, true), 0, index-3, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  351. span.setSpan(new ForegroundColorSpan(color), index+2, index+7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  352. span.setSpan(new AbsoluteSizeSpan(30, true), index+2, index+7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  353. return span;
  354. }
  355.  
  356. private Spannable setTimeOrAdressColor (String s){
  357. int index = s.indexOf(" ");
  358. Spannable spannable = new SpannableString(s);
  359. spannable.setSpan(new ForegroundColorSpan(Color.RED), 0, index, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  360. spannable.setSpan(new AbsoluteSizeSpan(30, true), 0, index, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  361. return spannable;
  362. }
  363.  
  364. private Spannable setRsFareColorFont (String s){
  365. int index = s.indexOf(" ");
  366. Spannable spannable = new SpannableString(s);
  367. spannable.setSpan(new ForegroundColorSpan(Color.RED), index+1, s.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  368.  
  369. return spannable;
  370. }
  371.  
  372.  
  373. }
Add Comment
Please, Sign In to add comment