Subversion Repositories SmartDukaan

Rev

Rev 15356 | Rev 16080 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
14792 manas 1
package com.saholic.profittill.main;
2
 
3
 
15356 manas 4
import android.app.Fragment;
5
import android.app.FragmentManager;
14792 manas 6
import android.content.Context;
7
import android.content.Intent;
8
import android.content.SharedPreferences;
15356 manas 9
import android.content.res.Configuration;
10
import android.content.res.TypedArray;
14792 manas 11
import android.graphics.Color;
12
import android.graphics.drawable.ColorDrawable;
13
import android.net.ConnectivityManager;
14
import android.os.AsyncTask;
15356 manas 15
import android.os.Bundle;
14792 manas 16
import android.os.PersistableBundle;
15356 manas 17
import android.support.v4.app.ActionBarDrawerToggle;
18
import android.support.v4.widget.DrawerLayout;
14792 manas 19
import android.support.v7.app.ActionBarActivity;
15356 manas 20
import android.util.Log;
14792 manas 21
import android.view.KeyEvent;
22
import android.view.Menu;
23
import android.view.MenuItem;
24
import android.view.View;
25
import android.view.ViewConfiguration;
26
import android.view.Window;
27
import android.widget.AdapterView;
28
import android.widget.ListView;
29
import android.widget.Toast;
15356 manas 30
 
14792 manas 31
import com.facebook.Session;
32
import com.google.android.gms.analytics.HitBuilders;
33
import com.google.android.gms.analytics.Tracker;
34
import com.google.android.gms.common.ConnectionResult;
35
import com.google.android.gms.common.api.GoogleApiClient;
36
import com.google.android.gms.plus.Plus;
37
import com.mixpanel.android.mpmetrics.MixpanelAPI;
38
import com.saholic.profittill.Constants.ProfitTillConstants;
15356 manas 39
import com.saholic.profittill.R;
40
import com.saholic.profittill.Utils.UtilityFunctions;
14792 manas 41
import com.saholic.profittill.navigationdrawer.NavDrawerItem;
42
import com.saholic.profittill.navigationdrawer.NavDrawerListAdapter;
43
import com.testin.agent.TestinAgent;
44
 
45
import org.apache.http.HttpEntity;
46
import org.apache.http.HttpResponse;
47
import org.apache.http.NameValuePair;
48
import org.apache.http.client.HttpClient;
49
import org.apache.http.client.entity.UrlEncodedFormEntity;
50
import org.apache.http.client.methods.HttpPost;
51
import org.apache.http.impl.client.DefaultHttpClient;
52
import org.apache.http.message.BasicNameValuePair;
53
import org.json.JSONException;
54
import org.json.JSONObject;
55
 
56
import java.lang.reflect.Field;
57
import java.lang.reflect.Method;
58
import java.text.SimpleDateFormat;
59
import java.util.ArrayList;
60
import java.util.Date;
61
 
62
 
63
public class MainActivity extends ActionBarActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
64
    private DrawerLayout mDrawerLayout;
65
    private ListView mDrawerList;
66
    private ActionBarDrawerToggle mDrawerToggle;
67
    public GoogleApiClient mGoogleApiClient;
68
    SharedPreferences userData;
69
    SharedPreferences apiData;
70
    boolean glogout;
71
    SharedPreferences.Editor userDataEditor;
72
    SharedPreferences.Editor apiSettingsEditor;
73
    SharedPreferences.Editor inviteDataEditor;
74
    SharedPreferences inviteData;
75
    private String[] navMenuTitles;
76
    private TypedArray navMenuIcons;
77
    String type1;
78
    private ArrayList<NavDrawerItem> navDrawerItems;
79
    private NavDrawerListAdapter adapter;
80
    int flag;
81
    boolean shouldGoInvisible;
82
    int titleVisible;
83
    StringBuilder subtag,sb;
84
    String userIdAffliate;
85
    Date dateAffliate;
86
    String stringDateAffliate;
87
    SimpleDateFormat dateFormatAffliate;
88
    String redirectUrl;
89
    MixpanelAPI mixpanel;
90
    String notificationURL;
91
    ArrayList<NameValuePair> nameValuePairsGcm;
92
    @Override
93
    protected void onCreate(Bundle savedInstanceState) {
94
        super.onCreate(savedInstanceState);
95
        setContentView(R.layout.activity_main);
96
        TestinAgent.init(this);
97
        userData = getApplicationContext().getSharedPreferences("User_Data", MODE_PRIVATE);
98
        apiData = getApplicationContext().getSharedPreferences("API_Data", MODE_PRIVATE);
99
        userDataEditor = userData.edit();
100
        apiSettingsEditor = apiData.edit();
101
        inviteData = getApplicationContext().getSharedPreferences("Invite_Data", Context.MODE_PRIVATE);
102
        inviteDataEditor = inviteData.edit();
103
        TestinAgent.setUserInfo(userData.getString("id",""));
104
        mixpanel = MixpanelAPI.getInstance(getApplicationContext(), ProfitTillConstants.MIX_PANEL_TOKEN);
105
        type1 = userData.getString("type",null);
106
 
107
        if(getIntent().getAction()=="20"){
15588 manas 108
            Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
109
                    GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
110
            t.send(new HitBuilders.EventBuilder()
111
                    .setCategory("Notification")
112
                    .setAction("Notification Opened ")
113
                    .setLabel("For User Id " + userData.getString("id","0"))
114
                    .build());
14792 manas 115
            flag=20;
116
            notificationURL = String.valueOf(getIntent().getData());
117
            nameValuePairsGcm = new ArrayList<>();
118
            nameValuePairsGcm.add(new BasicNameValuePair("user_id",userData.getString("id","")));
119
            nameValuePairsGcm.add(new BasicNameValuePair("cid",getIntent().getExtras().getString("cid")));
15356 manas 120
            nameValuePairsGcm.add(new BasicNameValuePair("timestamp", UtilityFunctions.notificationDate()));
14792 manas 121
            nameValuePairsGcm.add(new BasicNameValuePair("result","opened"));
122
            getIntent().getExtras().remove("cid");
123
            new NotificationOpenedData().execute(nameValuePairsGcm);
124
        }else if(getIntent().getAction()=="15"){
15588 manas 125
            Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
126
                    GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
127
            t.send(new HitBuilders.EventBuilder()
128
                    .setCategory("Notification")
129
                    .setAction("Notification Opened ")
130
                    .setLabel("For User Id " + userData.getString("id","0"))
131
                    .build());
14792 manas 132
            flag=15;
133
            nameValuePairsGcm = new ArrayList<>();
134
            nameValuePairsGcm.add(new BasicNameValuePair("user_id",userData.getString("id","")));
135
            nameValuePairsGcm.add(new BasicNameValuePair("cid",getIntent().getExtras().getString("cid")));
15356 manas 136
            nameValuePairsGcm.add(new BasicNameValuePair("timestamp",UtilityFunctions.notificationDate()));
14792 manas 137
            nameValuePairsGcm.add(new BasicNameValuePair("result","opened"));
138
            getIntent().getExtras().remove("cid");
139
            new NotificationOpenedData().execute(nameValuePairsGcm);
140
        }else if(getIntent().getAction()=="7"){
15588 manas 141
            Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
142
                    GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
143
            t.send(new HitBuilders.EventBuilder()
144
                    .setCategory("Notification")
145
                    .setAction("Notification Opened ")
146
                    .setLabel("For User Id " + userData.getString("id","0"))
147
                    .build());
14792 manas 148
            flag=7;
149
            nameValuePairsGcm = new ArrayList<>();
150
            nameValuePairsGcm.add(new BasicNameValuePair("user_id",userData.getString("id","")));
151
            nameValuePairsGcm.add(new BasicNameValuePair("cid",getIntent().getExtras().getString("cid")));
15356 manas 152
            nameValuePairsGcm.add(new BasicNameValuePair("timestamp",UtilityFunctions.notificationDate()));
14792 manas 153
            nameValuePairsGcm.add(new BasicNameValuePair("result","opened"));
154
            getIntent().getExtras().remove("cid");
155
            new NotificationOpenedData().execute(nameValuePairsGcm);
156
        }else if(getIntent().getAction()=="6"){
15588 manas 157
            Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
158
                    GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
159
            t.send(new HitBuilders.EventBuilder()
160
                    .setCategory("Notification")
161
                    .setAction("Notification Opened ")
162
                    .setLabel("For User Id " + userData.getString("id","0"))
163
                    .build());
14792 manas 164
            flag=6;
165
            nameValuePairsGcm = new ArrayList<>();
166
            nameValuePairsGcm.add(new BasicNameValuePair("user_id",userData.getString("id","")));
167
            nameValuePairsGcm.add(new BasicNameValuePair("cid",getIntent().getExtras().getString("cid")));
15356 manas 168
            nameValuePairsGcm.add(new BasicNameValuePair("timestamp",UtilityFunctions.notificationDate()));
14792 manas 169
            nameValuePairsGcm.add(new BasicNameValuePair("result","opened"));
170
            getIntent().getExtras().remove("cid");
171
            new NotificationOpenedData().execute(nameValuePairsGcm);
172
        }else {
173
            Bundle i = getIntent().getExtras();
174
            if (i != null) {
175
                flag = Integer.parseInt(i.getString("displayView"));
176
                if (flag == 31) {
177
                    redirectUrl = i.getString("redirectUrl");
178
                }
179
            }
180
        }
181
 
182
 
183
 
184
        getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.WHITE));
185
        getSupportActionBar().setIcon(R.drawable.logo_cirlce_1);
186
        getSupportActionBar().setDisplayShowCustomEnabled(true);
187
        getSupportActionBar().setDisplayShowTitleEnabled(false);
188
 
189
        try {
190
            ViewConfiguration config = ViewConfiguration.get(this);
191
            Field menuKeyField = ViewConfiguration.class
192
                    .getDeclaredField("sHasPermanentMenuKey");
193
            if (menuKeyField != null) {
194
                menuKeyField.setAccessible(true);
195
                menuKeyField.setBoolean(config, false);
196
            }
197
        } catch (Exception ex) {
198
            Log.d("Exception","Message"+ex);
199
        }
200
 
201
        if(type1!=null && type1.equalsIgnoreCase("google")) {
202
            mGoogleApiClient = new GoogleApiClient.Builder(this)
203
                    .addConnectionCallbacks(this)
204
                    .addOnConnectionFailedListener(this).addApi(Plus.API)
205
                    .addScope(Plus.SCOPE_PLUS_LOGIN).build();
206
            mGoogleApiClient.connect();
207
        }
208
 
209
        /*mTitle = mDrawerTitle = getTitle();*/
210
        // load slide menu items
211
        navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items);
212
 
213
        // nav drawer icons from resources
214
        navMenuIcons = getResources()
215
                .obtainTypedArray(R.array.nav_drawer_icons);
216
 
217
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
218
        mDrawerList = (ListView) findViewById(R.id.list_slidermenu);
219
        mDrawerLayout.setBackgroundColor(getResources().getColor(R.color.White));
220
        navDrawerItems = new ArrayList<NavDrawerItem>();
221
 
222
 
223
 
224
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(0, -1)));
225
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(1, 0)));
226
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons.getResourceId(2, -1)));
227
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons.getResourceId(3, -1)));
228
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[4], navMenuIcons.getResourceId(4, -1)));
229
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[5], navMenuIcons.getResourceId(5, -1)));
230
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[6], navMenuIcons.getResourceId(6, -1)));
231
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[7], navMenuIcons.getResourceId(7, -1)));
232
        navDrawerItems.add(new NavDrawerItem(navMenuTitles[8], navMenuIcons.getResourceId(8, -1)));
233
       /* navDrawerItems.add(new NavDrawerItem(navMenuTitles[9], navMenuIcons.getResourceId(8, -1)));*/
234
        navMenuIcons.recycle();
235
 
236
        mDrawerList.setOnItemClickListener(new SlideMenuClickListener());
237
 
238
        // setting the nav drawer list adapter
239
        adapter = new NavDrawerListAdapter(getApplicationContext(),navDrawerItems);
240
        mDrawerList.setAdapter(adapter);
241
 
242
        // enabling action bar app icon and behaving it as toggle button
243
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
244
        getSupportActionBar().setHomeButtonEnabled(true);
245
 
246
        mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
247
                R.drawable.menubutton, //nav menu toggle icon
248
                R.string.hello_world, // nav drawer open - description for accessibility
249
                R.string.hello_world// nav drawer close - description for accessibility
250
        ) {
251
            public void onDrawerClosed(View view) {
252
                if(titleVisible!=0) {
253
                    if(titleVisible==1)
254
                        getSupportActionBar().setCustomView(R.layout.actionbarmyfavorites);
255
 
256
                    if(titleVisible==2)
257
                        getSupportActionBar().setCustomView(R.layout.actionbarprefernces);
258
 
259
                    if(titleVisible==3)
260
                        getSupportActionBar().setCustomView(R.layout.actionbarmywallet);
261
 
262
                    if(titleVisible==4)
263
                        getSupportActionBar().setCustomView(R.layout.actionbarmyorders);
264
 
265
                    if(titleVisible==5)
266
                        getSupportActionBar().setCustomView(R.layout.actionbarpendingcashback);
267
 
268
                    if(titleVisible==6)
269
                        getSupportActionBar().setCustomView(R.layout.actionbarmyprofile);
270
 
271
 
272
                }
273
                else{
274
                    if (getTitle().equals("Deals")) {
275
                        getSupportActionBar().setCustomView(R.layout.actionbardeals);
276
                    }
277
                    if (getTitle().equals("Saholic") || getTitle().equals("Flipkart") || getTitle().equals("Snapdeal") || getTitle().equals("Amazon")) {
278
                        getSupportActionBar().setCustomView(R.layout.actionbarprofittill);
279
                    }
280
                    if (getTitle().equals("FAQ")) {
281
                        getSupportActionBar().setCustomView(R.layout.actionbaraboutus);
282
                    }
283
                    if (getTitle().equals("Contact Us")) {
284
                        getSupportActionBar().setCustomView(R.layout.actionbarcontactus);
285
                    }
286
                    if (getTitle().equals("Search")) {
287
                        getSupportActionBar().setCustomView(R.layout.actionbarsearch);
288
                    }
289
                    if (getTitle().equals("How It Works")) {
290
                        getSupportActionBar().setCustomView(R.layout.actionbarhowitworks);
291
                    }
292
                }
293
                shouldGoInvisible = false;
294
                invalidateOptionsMenu();
295
            }
296
 
297
            public void onDrawerOpened(View drawerView) {
298
                getSupportActionBar().setCustomView(R.layout.actionbarprofittill);
299
                shouldGoInvisible = true;
300
                invalidateOptionsMenu();
301
            }
302
            @Override
303
            public void onDrawerSlide(View drawerView, float slideOffset) {
304
 
305
 
306
            }
307
 
308
        };
309
        mDrawerLayout.setDrawerListener(mDrawerToggle);
310
 
311
        if (savedInstanceState == null) {
312
 
313
                if (flag == 7) {
314
                    getSupportActionBar().setCustomView(R.layout.actionbarhowitworks);
315
                    displayView(flag);
316
                } else if (flag == 6) {
317
                    getSupportActionBar().setCustomView(R.layout.actionbarcontactus);
318
                    displayView(flag);
319
                } else if (flag == 15) {
320
                    getSupportActionBar().setCustomView(R.layout.actionbarmyprofile);
321
                    MyProfile myProfile = new MyProfile();
322
                    this.getFragmentManager().beginTransaction()
323
                            .replace(R.id.frame_container, myProfile, "Mike")
324
                            .addToBackStack(null)
325
                            .commit();
326
                }else if (flag == 20) {
327
                    getSupportActionBar().setCustomView(R.layout.actionbardeals);
328
                    JSONObject propsNotification = new JSONObject();
329
                    try {
330
                        mixpanel.identify(userData.getString("id",null));
331
                        propsNotification.put("Screen", "Notification Url opened");
332
                        mixpanel.track("Notification Opened", propsNotification);
333
                    } catch (JSONException e) {
334
                        e.printStackTrace();
335
                    }
336
                    Bundle args = new Bundle();
337
                    DealsHomeFragment notifcationFragment = new DealsHomeFragment();
338
                    args.putString("key", notificationURL);
339
                    this.getFragmentManager().beginTransaction()
340
                            .replace(R.id.frame_container, notifcationFragment, "Mike")
341
                            .addToBackStack(null)
342
                            .commit();
343
                    notifcationFragment.setArguments(args);
344
                }else if (flag == 31) {
345
                    getSupportActionBar().setCustomView(R.layout.actionbardeals);
346
                    Bundle args = new Bundle();
347
                    DealsHomeFragment redirectUrlFragment = new DealsHomeFragment();
348
                    args.putString("key", redirectUrl);
349
                    this.getFragmentManager().beginTransaction()
350
                            .replace(R.id.frame_container, redirectUrlFragment, "Mike")
351
                            .addToBackStack(null)
352
                            .commit();
353
                    redirectUrlFragment.setArguments(args);
354
                }else {
355
                    getSupportActionBar().setCustomView(R.layout.actionbardeals);
356
                    displayView(0);
357
                }
358
 
359
        }
360
    }
361
 
362
    /**
363
     * Slide menu item click listener
364
     * */
365
    private class SlideMenuClickListener implements
366
            ListView.OnItemClickListener {
367
        @Override
368
        public void onItemClick(AdapterView<?> parent, View view, int position,
369
                                long id) {
370
            // display view for selected nav drawer item
371
            displayView(position);
372
        }
373
    }
374
 
375
    @Override
376
    public boolean onCreateOptionsMenu(Menu menu) {
377
        mainMenu=menu;
378
        super.onCreateOptionsMenu(menu);
379
        getMenuInflater().inflate(R.menu.menu_main, menu);
380
 
381
        return true;
382
    }
383
 
384
    @Override
385
    public boolean onOptionsItemSelected(MenuItem item) {
386
        Fragment menuFragment= null;
387
        JSONObject props = new JSONObject();
388
        Bundle args = new Bundle();
389
        String id = userData.getString("id",null);
390
        if (mDrawerToggle.onOptionsItemSelected(item)) {
391
            return true;
392
        }
393
        getSupportActionBar().setDisplayShowCustomEnabled(true);
394
        switch (item.getItemId()) {
395
            case R.id.action_settings:
396
                android.webkit.CookieManager cookieManager = android.webkit.CookieManager.getInstance();
397
                android.webkit.CookieSyncManager.createInstance(this);
398
                cookieManager.removeAllCookie();
399
                try {
400
                    mixpanel.identify(userData.getString("id",null));
401
                    props.put("Screen", "Signing Out");
402
                    mixpanel.track("Signing Out", props);
403
                } catch (JSONException e) {
404
                    e.printStackTrace();
405
                }
406
                try{
407
                    if (mGoogleApiClient.isConnected()) {
408
                        Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
409
                        mGoogleApiClient.disconnect();
410
                        mGoogleApiClient.connect();
411
                        userDataEditor.clear().commit();
412
                        inviteDataEditor.clear().commit();
413
                        startActivity(new Intent(MainActivity.this, LoginActivity.class));
414
                    }
415
                    else if(Session.getActiveSession() != null){
416
                        Session.getActiveSession().closeAndClearTokenInformation();
417
                        Session.setActiveSession(null);
418
                        userDataEditor.clear().commit();
419
                        inviteDataEditor.clear().commit();
420
                        startActivity(new Intent(MainActivity.this, LoginActivity.class));
421
                    }
422
                    else{
423
                        if(!mGoogleApiClient.isConnected() || Session.getActiveSession()==null){
424
                            userDataEditor.clear().commit();
425
                            inviteDataEditor.clear().commit();
426
                            startActivity(new Intent(MainActivity.this, LoginActivity.class));
427
                        }
428
 
429
                        /*Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
430
                        mGoogleApiClient.disconnect();
431
                        mGoogleApiClient.connect();*/
432
                        //userDataEditor.clear().commit();
433
                    }
434
                /*if(type1.equalsIgnoreCase("facebook")) {
435
                    Log.d("fblogout","logout");
436
                    if (Session.getActiveSession() != null) {
437
                        Session.getActiveSession().closeAndClearTokenInformation();
438
 
439
                    }
440
                    Session.setActiveSession(null);
441
                    userDataEditor.remove("id");
442
                    userDataEditor.remove("type");
443
                    userDataEditor.remove("email");
444
                    userDataEditor.commit();
445
                    startActivity(new Intent(MainActivity.this, LoginActivity.class));
446
                }
447
                else{
448
                    signOutFromGplus();
449
                    if(glogout==true){
450
                        startActivity(new Intent(MainActivity.this, LoginActivity.class));
451
                    }
452
                }*/
453
                }catch (Exception e){
454
                    Log.d("Exception ","Exception");
455
                   /* if (Session.getActiveSession() != null) {
456
                        Session.getActiveSession().closeAndClearTokenInformation();
457
                    }else{
458
                        signOutFromGplus();
459
                    }*/
460
                    userDataEditor.clear().commit();
461
                    startActivity(new Intent(MainActivity.this, LoginActivity.class));
462
                }
463
                return true;
464
 
465
            case R.id.my_wallet:
466
                titleVisible=3;
467
                getSupportActionBar().setCustomView(R.layout.actionbarmywallet);
468
                try {
469
                    mixpanel.identify(userData.getString("id",null));
470
                    props.put("Screen", "My Wallet");
471
                    mixpanel.track("My Wallet", props);
472
                } catch (JSONException e) {
473
                    e.printStackTrace();
474
                }
475
                MyWallet myWallet= new MyWallet();
476
                this.getFragmentManager().beginTransaction()
477
                        .replace(R.id.frame_container, myWallet,"Mike")
478
                        .addToBackStack(null)
479
                        .commit();
480
                return true;
481
            case R.id.pending_cashback:
482
                titleVisible=5;
483
                getSupportActionBar().setCustomView(R.layout.actionbarpendingcashback);
484
                try {
485
                    mixpanel.identify(userData.getString("id",null));
486
                    props.put("Screen", "Cashback Status");
487
                    mixpanel.track("Cashback Status", props);
488
                } catch (JSONException e) {
489
                    e.printStackTrace();
490
                }
491
                PendingCashback pendingCashback= new PendingCashback();
492
                this.getFragmentManager().beginTransaction()
493
                        .replace(R.id.frame_container, pendingCashback,"Mike")
494
                        .addToBackStack(null)
495
                        .commit();
496
                return true;
497
            case R.id.my_favorites:
498
                titleVisible=1;
499
                getSupportActionBar().setCustomView(R.layout.actionbarmyfavorites);
500
                try {
501
                    mixpanel.identify(userData.getString("id",null));
502
                    props.put("Screen", "My Favorites");
503
                    mixpanel.track("My Favorites", props);
504
                } catch (JSONException e) {
505
                    e.printStackTrace();
506
                }
507
                args.putString("key", apiData.getString("myfavourite.url",null)+"?user_id="+id);
508
                DealsHomeFragment favoritesFragment= new DealsHomeFragment();
509
                this.getFragmentManager().beginTransaction()
510
                        .replace(R.id.frame_container, favoritesFragment,"Mike")
511
                        .addToBackStack(null)
512
                        .commit();
513
                favoritesFragment.setArguments(args);
514
                return true;
515
            case R.id.my_profile:
516
                titleVisible=6;
517
                getSupportActionBar().setCustomView(R.layout.actionbarmyprofile);
518
                try {
519
                    mixpanel.identify(userData.getString("id",null));
520
                    props.put("Screen", "My Profile");
521
                    mixpanel.track("My profile", props);
522
                } catch (JSONException e) {
523
                    e.printStackTrace();
524
                }
525
                MyProfile myProfile= new MyProfile();
526
                this.getFragmentManager().beginTransaction()
527
                        .replace(R.id.frame_container, myProfile,"Mike")
528
                        .addToBackStack(null)
529
                        .commit();
530
                return true;
531
            case R.id.my_order:
532
                titleVisible=4;
533
                getSupportActionBar().setCustomView(R.layout.actionbarmyorders);
534
                try {
535
                    mixpanel.identify(userData.getString("id",null));
536
                    props.put("Screen", "My Orders");
537
                    mixpanel.track("My Orders", props);
538
                } catch (JSONException e) {
539
                    e.printStackTrace();
540
                }
541
                args.putString("key", apiData.getString("myorders.url",null)+"?user_id="+id);
542
                DealsHomeFragment orderFragment= new DealsHomeFragment();
543
                this.getFragmentManager().beginTransaction()
544
                        .replace(R.id.frame_container, orderFragment,"Mike")
545
                        .addToBackStack(null)
546
                        .commit();
547
                orderFragment.setArguments(args);
548
 
549
                return true;
550
            case R.id.my_preferences:
551
                titleVisible=2;
552
                getSupportActionBar().setCustomView(R.layout.actionbarprefernces);
553
                try {
554
                    mixpanel.identify(userData.getString("id",null));
555
                    props.put("Screen", "My Preferences");
556
                    mixpanel.track("My Preferences", props);
557
                } catch (JSONException e) {
558
                    e.printStackTrace();
559
                }
560
                PreferencesFragment my_preferences = new PreferencesFragment();
561
                this.getFragmentManager().beginTransaction()
562
                        .replace(R.id.frame_container, my_preferences,"Mike")
563
                        .addToBackStack(null)
564
                        .commit();
565
 
566
                return true;
567
           default:
568
                return super.onOptionsItemSelected(item);
569
        }
570
 
571
 
572
    }
573
    public void signOutFromGplus() {
574
 
575
 
576
        if (mGoogleApiClient.isConnected()) {
577
            Plus.AccountApi.clearDefaultAccount(mGoogleApiClient);
578
            mGoogleApiClient.disconnect();
579
            mGoogleApiClient.connect();
580
            glogout=true;
581
            userDataEditor.remove("id");
582
            userDataEditor.remove("type");
583
            userDataEditor.remove("email");
584
            userDataEditor.commit();
585
        } else {
586
            glogout=false;
587
            }
588
    }
589
 
590
    @Override
591
    public void onConnected(Bundle bundle) {
592
 
593
    }
594
 
595
    @Override
596
    public void onConnectionSuspended(int i) {
597
 
598
    }
599
 
600
    @Override
601
    public void onConnectionFailed(ConnectionResult connectionResult) {
602
 
603
    }
604
 
605
    @Override
606
    public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
607
        Toast.makeText(getApplicationContext(),"Toast in saved instance" + flag,Toast.LENGTH_SHORT).show();
608
        super.onSaveInstanceState(outState, outPersistentState);
609
    }
610
    @Override
611
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
612
        super.onRestoreInstanceState(savedInstanceState);
613
 Intent i= new Intent(MainActivity.this,MainActivity.class);
614
        i.putExtra("displayView","0");
615
        startActivity(i);
616
    }
617
 
618
    @Override
619
    public boolean onMenuOpened(int featureId, Menu menu)
620
    {
621
        if(featureId == Window.FEATURE_ACTION_BAR && menu != null){
622
            if(menu.getClass().getSimpleName().equals("MenuBuilder")){
623
                try{
624
                    Method m = menu.getClass().getDeclaredMethod(
625
                            "setOptionalIconsVisible", Boolean.TYPE);
626
                    m.setAccessible(true);
627
                    m.invoke(menu, true);
628
 
629
                }
630
                catch(Exception e){
631
                    throw new RuntimeException(e);
632
                }
633
            }
634
        }
635
        return super.onMenuOpened(featureId, menu);
636
    }
637
 
638
    private void displayView(int position) {
639
        titleVisible=0;
640
        Bundle args = new Bundle();
641
        Tracker t = ((GoogleAnalyticsTracker) getApplicationContext()).getTracker(
642
                GoogleAnalyticsTracker.TrackerName.APP_TRACKER);
643
        String id = userData.getString("id",null);
644
        Fragment fragment = null;
645
        switch (position) {
646
            case 0:
647
                JSONObject props = new JSONObject();
648
                try {
649
                    mixpanel.getPeople().set( "$last_login",new Date());
650
                    mixpanel.identify(userData.getString("id",null));
651
                    props.put("Screen", "Deals Screen");
652
                    mixpanel.track("Deals", props);
653
                } catch (JSONException e) {
654
                    e.printStackTrace();
655
                }
656
 
657
                t.send(new HitBuilders.EventBuilder()
658
                        .setCategory("Menu")
659
                        .setAction("Deals ")
660
                        .setLabel("Deals Clicked")
661
                        .build());
662
                args.putString("key", apiData.getString("mobile.website.url","")+"?user_id="+id);
663
                fragment = new DealsHomeFragment();
664
                fragment.setArguments(args);
665
                break;
666
            case 1:
667
                JSONObject props1 = new JSONObject();
668
                try {
669
                    mixpanel.identify(userData.getString("id",null));
670
                    props1.put("Screen", "Search");
671
                    mixpanel.track("Search", props1);
672
                } catch (JSONException e) {
673
                    e.printStackTrace();
674
                }
675
                t.send(new HitBuilders.EventBuilder()
676
                        .setCategory("Menu")
677
                        .setAction("Search ")
678
                        .setLabel("Search Clicked")
679
                        .build());
680
                args.putString("key", apiData.getString("search.url",null)+"?user_id="+id);
681
                fragment = new DealsHomeFragment();
682
                fragment.setArguments(args);
683
                break;
684
            case 2:
685
                JSONObject propsAmazon = new JSONObject();
686
                try {
687
                    mixpanel.identify(userData.getString("id",null));
688
                    propsAmazon.put("Screen", "Amazon");
689
                    mixpanel.track("Amazon", propsAmazon);
690
                } catch (JSONException e) {
691
                    e.printStackTrace();
692
                }
693
                t.send(new HitBuilders.EventBuilder()
694
                        .setCategory("Menu")
695
                        .setAction("Amazon ")
696
                        .setLabel("Amazon Clicked")
697
                        .build());
698
                args.putString("key", apiData.getString("affiliate.url.redirect","")+"?user_id="+userData.getString("id","")+"&store_id="+apiData.getString("store.code.amazon",""));
699
                fragment = new DealsHomeFragment();
700
                fragment.setArguments(args);
701
                break;
702
            case 3:
703
                JSONObject propsFlipkart = new JSONObject();
704
                try {
705
                    mixpanel.identify(userData.getString("id",null));
706
                    propsFlipkart.put("Screen", "Flipkart");
707
                    mixpanel.track("Flipkart", propsFlipkart);
708
                } catch (JSONException e) {
709
                    e.printStackTrace();
710
                }
711
                t.send(new HitBuilders.EventBuilder()
712
                        .setCategory("Menu")
713
                        .setAction("Flipkart ")
714
                        .setLabel("Flipkart Clicked")
715
                        .build());
716
                args.putString("key", apiData.getString("affiliate.url.redirect","")+"?user_id="+userData.getString("id","")+"&store_id="+apiData.getString("store.code.flipkart",""));
717
                fragment = new DealsHomeFragment();
718
                fragment.setArguments(args);
719
                break;
720
            case 4:
721
                JSONObject propsSaholic = new JSONObject();
722
                try {
723
                    mixpanel.identify(userData.getString("id",null));
724
                    propsSaholic.put("Screen", "Saholic");
725
                    mixpanel.track("Saholic", propsSaholic);
726
                } catch (JSONException e) {
727
                    e.printStackTrace();
728
                }
729
                t.send(new HitBuilders.EventBuilder()
730
                        .setCategory("Menu")
731
                        .setAction("Saholic ")
732
                        .setLabel("Saholic Clicked")
733
                        .build());
734
                args.putString("key", apiData.getString("saholic.autologin.url","")+"?user_id="+userData.getString("id",""));
735
                fragment = new DealsHomeFragment();
736
                fragment.setArguments(args);
737
                break;
738
            case 5:
739
                JSONObject propsSnapdeal = new JSONObject();
740
                try {
741
                    mixpanel.identify(userData.getString("id",null));
742
                    propsSnapdeal.put("Screen", "Snapdeal");
743
                    mixpanel.track("Snapdeal", propsSnapdeal);
744
                } catch (JSONException e) {
745
                    e.printStackTrace();
746
                }
747
                t.send(new HitBuilders.EventBuilder()
748
                        .setCategory("Menu")
749
                        .setAction("Snapdeal ")
750
                        .setLabel("Snapdeal Clicked")
751
                        .build());
752
                args.putString("key", apiData.getString("affiliate.url.redirect","")+"?user_id="+userData.getString("id","")+"&store_id="+apiData.getString("store.code.snapdeal",""));
753
                fragment = new DealsHomeFragment();
754
                fragment.setArguments(args);
755
                break;
756
            case 6:
757
                JSONObject propsContactUs = new JSONObject();
758
                try {
759
                    mixpanel.identify(userData.getString("id",null));
760
                    propsContactUs.put("Screen", "Contact Us");
761
                    mixpanel.track("Contact Us", propsContactUs);
762
                } catch (JSONException e) {
763
                    e.printStackTrace();
764
                }
765
                t.send(new HitBuilders.EventBuilder()
766
                        .setCategory("Menu")
767
                        .setAction("Contact Us ")
768
                        .setLabel("Contact us Clicked")
769
                        .build());
770
                fragment = new ContactUsFragment();
771
                break;
772
            case 7:
773
                JSONObject propsHowItWorks = new JSONObject();
774
                try {
775
                    mixpanel.identify(userData.getString("id",null));
776
                    propsHowItWorks.put("Screen", "How it Works");
777
                    mixpanel.track("How it Works", propsHowItWorks);
778
                } catch (JSONException e) {
779
                    e.printStackTrace();
780
                }
781
                t.send(new HitBuilders.EventBuilder()
782
                        .setCategory("Menu")
783
                        .setAction("Tutorials ")
784
                        .setLabel("Tutorials Clicked")
785
                        .build());
786
                fragment = new HowItWorksFragment();
787
                break;
788
            case 8:
789
                JSONObject propsAboutUs = new JSONObject();
790
                try {
791
                    mixpanel.identify(userData.getString("id",null));
792
                    propsAboutUs.put("Screen", "About Us");
793
                    mixpanel.track("About Us", propsAboutUs);
794
                } catch (JSONException e) {
795
                    e.printStackTrace();
796
                }
797
                t.send(new HitBuilders.EventBuilder()
798
                        .setCategory("Menu")
799
                        .setAction("About Us ")
800
                        .setLabel("About us Clicked")
801
                        .build());
802
                fragment = new AboutUsFragment();
803
                break;
804
            default:
805
                break;
806
        }
807
        if (fragment != null) {
808
            FragmentManager fragmentManager = getFragmentManager();
809
            fragmentManager.beginTransaction().replace(R.id.frame_container, fragment).commit();
810
            mDrawerList.setItemChecked(position, true);
811
            mDrawerList.setSelection(position);
812
            setTitle(navMenuTitles[position]);
813
            mDrawerLayout.closeDrawer(mDrawerList);
814
        } else {
815
            Log.e("MainActivity", "Error in creating fragment");
816
        }
817
    }
818
 
819
 
820
 
821
    @Override
822
    protected void onPostCreate(Bundle savedInstanceState) {
823
        super.onPostCreate(savedInstanceState);
824
        mDrawerToggle.syncState();
825
    }
826
 
827
    @Override
828
    public boolean onPrepareOptionsMenu(Menu menu) {
829
        boolean drawerOpen = shouldGoInvisible;
830
        hideMenuItems(menu, !drawerOpen);
831
        return super.onPrepareOptionsMenu(menu);
832
    }
833
    private void hideMenuItems(Menu menu, boolean visible)
834
    {
835
       for(int i = 0; i < menu.size(); i++){
836
        menu.getItem(i).setVisible(visible);
837
       }
838
    }
839
    @Override
840
    public void onConfigurationChanged(Configuration newConfig) {
841
        super.onConfigurationChanged(newConfig);
842
        mDrawerToggle.onConfigurationChanged(newConfig);
843
    }
844
    @Override
845
    public boolean onKeyUp(int keycode, KeyEvent e) {
846
        switch(keycode) {
847
            case KeyEvent.KEYCODE_MENU:
848
 
849
                if (mainMenu !=null) {
850
                    mainMenu.performIdentifierAction(R.id.overflowMenu,0);
851
                }
852
        }
853
 
854
        return super.onKeyUp(keycode, e);
855
    }
856
    @Override
857
    public boolean onKeyDown(int keyCode, KeyEvent event) {
858
 
859
        switch(keyCode) {
860
            case KeyEvent.KEYCODE_MENU:
861
                  if (mainMenu !=null) {
862
                  mainMenu.performIdentifierAction(R.id.overflowMenu,0);
863
                  }
864
        }
865
        return super.onKeyUp(keyCode, event);
866
    }
867
    private Menu mainMenu;
868
    public final boolean isInternetOn() {
869
 
870
        ConnectivityManager connec =
871
                (ConnectivityManager)getSystemService(this.getBaseContext().CONNECTIVITY_SERVICE);
872
 
873
        if ( connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTED ||
874
                connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTING ||
875
                connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTING ||
876
                connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED ) {
877
 
878
            Toast.makeText(this, " Connected ", Toast.LENGTH_LONG).show();
879
            return true;
880
 
881
        } else if (
882
                connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.DISCONNECTED ||
883
                        connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.DISCONNECTED  ) {
884
 
885
            Toast.makeText(this, " Not Connected ", Toast.LENGTH_LONG).show();
886
            return false;
887
        }
888
        return false;
889
    }
890
    class NotificationOpenedData extends AsyncTask<ArrayList<NameValuePair>, Integer, String> {
891
 
892
        @Override
893
        protected void onPreExecute() {
894
            super.onPreExecute();
895
 
896
        }
897
 
898
        @Override
899
        protected String doInBackground(ArrayList<NameValuePair>... arg0) {
900
 
901
            try {
902
                HttpClient httpclient = new DefaultHttpClient();
903
                HttpPost httppost = new HttpPost(apiData.getString("notification.data.url","http://api.profittill.com/pushnotifications/add"));
904
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
905
                httppost.setEntity(new UrlEncodedFormEntity(arg0[0]));
906
                HttpResponse response = httpclient.execute(httppost);
907
                HttpEntity entity = response.getEntity();
908
                int status = response.getStatusLine().getStatusCode();
909
 
910
                if(status == 200){
911
                    Log.d("Notification Opened","Notication opened and main activity page and sent successfully");
912
                    Log.d("ResponseCode GCM ",status+"");
913
                } else {
914
                    Log.d("ResponseCode GCM ",status+"");
915
                }
916
 
917
                nameValuePairsGcm.clear();
918
                Log.e("pass 1", "connection success ");
919
            } catch (Exception e) {
920
                Log.e("Fail 1", e.toString());
921
 
922
            }
923
            return "success";
924
        }
925
 
926
        @Override
927
        protected void onPostExecute(String result) {
928
            super.onPostExecute(result);
929
            Log.d("Notification Opened","Notication opened and main activity page");
930
        }
931
    }
932
}