Subversion Repositories SmartDukaan

Rev

Rev 16080 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14792 manas 1
package com.saholic.profittill.main;
2
 
3
import android.app.Activity;
4
import android.app.AlertDialog;
5
import android.app.ProgressDialog;
6
import android.content.Context;
7
import android.content.DialogInterface;
8
import android.content.Intent;
9
import android.content.SharedPreferences;
10
import android.graphics.Bitmap;
11
import android.net.ConnectivityManager;
12
import android.net.Uri;
13
import android.os.AsyncTask;
14
import android.os.Bundle;
15
import android.app.Fragment;
16
import android.util.Base64;
17
import android.util.Log;
18
import android.view.KeyEvent;
19
import android.view.LayoutInflater;
20
import android.view.View;
21
import android.view.ViewGroup;
22
import android.webkit.HttpAuthHandler;
23
import android.webkit.JavascriptInterface;
24
import android.webkit.WebView;
25
import android.webkit.WebViewClient;
26
import android.widget.Toast;
27
 
28
import com.mixpanel.android.mpmetrics.MixpanelAPI;
29
import com.saholic.profittill.Constants.ProfitTillConstants;
30
import com.saholic.profittill.R;
31
import com.testin.agent.TestinAgent;
32
 
33
import org.apache.http.HttpEntity;
34
import org.apache.http.HttpResponse;
35
import org.apache.http.NameValuePair;
36
import org.apache.http.client.ClientProtocolException;
37
import org.apache.http.client.HttpClient;
38
import org.apache.http.client.entity.UrlEncodedFormEntity;
39
import org.apache.http.client.methods.HttpPost;
40
import org.apache.http.entity.StringEntity;
41
import org.apache.http.impl.client.DefaultHttpClient;
42
import org.apache.http.message.BasicNameValuePair;
43
import org.json.JSONArray;
44
import org.json.JSONException;
45
import org.json.JSONObject;
46
 
47
import java.io.BufferedReader;
48
import java.io.IOException;
49
import java.io.InputStream;
50
import java.io.InputStreamReader;
51
import java.text.SimpleDateFormat;
52
import java.util.ArrayList;
53
import java.util.Date;
54
import java.util.StringTokenizer;
55
 
56
public class PreferencesFragment extends Fragment {
57
    WebView preferencesWebView;
58
    SharedPreferences userData;
59
    SharedPreferences apiData;
60
    SharedPreferences.Editor userDataEditor;
61
    SharedPreferences.Editor apiSettingsEditor;
62
    @Override
63
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
64
                             Bundle savedInstanceState) {
65
 
66
        View rootView = inflater.inflate(R.layout.fragment_preferences, container, false);
67
        TestinAgent.init(getActivity());
68
        MixpanelAPI mixpanel = MixpanelAPI.getInstance(getActivity(), ProfitTillConstants.MIX_PANEL_TOKEN);
69
        userData = getActivity().getSharedPreferences("User_Data", Context.MODE_PRIVATE);
70
        apiData = getActivity().getSharedPreferences("API_Data", Context.MODE_PRIVATE);
71
        userDataEditor = userData.edit();
72
        apiSettingsEditor = apiData.edit();
73
        String url = apiData.getString("preferences.url",null);
74
        String id = userData.getString("id",null);
75
        TestinAgent.setUserInfo(userData.getString("id", ""));
76
        String landingUrl = url+"?user_id="+id;
77
        JSONObject props = new JSONObject();
78
        try {
79
            mixpanel.identify(userData.getString("id",null));
80
            props.put("Screen", "My Preferences");
81
            mixpanel.track("My Preferences", props);
82
        } catch (JSONException e) {
83
            e.printStackTrace();
84
        }
85
 
86
        if(isInternetOn()) {
87
            WebClientClass webViewClient = new WebClientClass();
88
            preferencesWebView  = (WebView)rootView.findViewById(R.id.preferencesWebView);
89
            preferencesWebView.setClickable(true);
90
            preferencesWebView.setFocusableInTouchMode(true);
91
            preferencesWebView.getSettings().setJavaScriptEnabled(true);
92
            preferencesWebView.getSettings().setBuiltInZoomControls(true);
93
            preferencesWebView.loadUrl(url+"?user_id="+id);
94
            preferencesWebView.setWebViewClient(webViewClient);
95
        }
96
        else{
97
            SearchFragment nextFrag= new SearchFragment();
98
            Bundle args = new Bundle();
99
            args.putString("finishingurl", landingUrl);
100
            args.putString("fragmentNumber", "12");
101
            nextFrag.setArguments(args);
102
            getActivity().getFragmentManager().beginTransaction()
103
                    .replace(R.id.frame_container, nextFrag)
104
                    .addToBackStack(null)
105
                    .commit();
106
        }
107
 
108
 
109
        return rootView;
110
    }
111
 
112
    @Override
113
    public void onViewCreated(View view, Bundle savedInstanceState) {
114
        super.onViewCreated(view, savedInstanceState);
115
    }
116
 
117
    JSONObject obj;
118
    public class WebClientClass extends WebViewClient {
119
        ProgressDialog pd = null;
120
 
121
        @Override
122
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
123
            if(url.equalsIgnoreCase("http://m.saholic.com")){
124
                pd = new ProgressDialog(getActivity());
125
                pd.setTitle("Please wait");
126
                pd.setMessage("Loading..");
127
                pd.show();
128
            }
129
            super.onPageStarted(view, url, favicon);
130
            obj = new JSONObject();
131
 
132
            try {
133
                JSONObject j = new JSONObject();
134
                JSONArray jsArray = new JSONArray();
135
                j.put("url",url);
136
                j.put("user_id",userData.getString("id",null));
137
                j.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
138
                jsArray.put(j);
139
                obj.put("pushdata",jsArray);
140
            } catch (JSONException e) {
141
                e.printStackTrace();
142
            }
143
            new pushData().execute();
144
        }
145
        @Override
146
        public void onPageFinished(WebView view, String url) {
147
            if(url.equalsIgnoreCase("http://m.saholic.com")) {
148
                pd.dismiss();
149
            }
150
 
151
            view.setOnKeyListener(new View.OnKeyListener()
152
            {
153
                @Override
154
                public boolean onKey(View v, int keyCode, KeyEvent event)
155
                {
156
                    if(event.getAction() == KeyEvent.ACTION_DOWN)
157
                    {
158
                        WebView webView = (WebView) v;
159
 
160
                        switch(keyCode)
161
                        {
162
                            case KeyEvent.KEYCODE_BACK:
163
                                if(webView.canGoBack())
164
                                {
165
                                    webView.goBack();
166
                                    return true;
167
                                }
168
                                else{
169
                                    Intent i = new Intent(getActivity(),MainActivity.class);
170
                                    i.putExtra("displayView","0");
171
                                    startActivity(i);
172
                                }
173
                                break;
174
                        }
175
                    }
176
 
177
                    return false;
178
                }
179
            });
180
            super.onPageFinished(view, url);
181
        }
182
        @Override
183
        public void onReceivedHttpAuthRequest(WebView view,
184
                                              HttpAuthHandler handler, String host, String realm) {
185
 
186
            handler.proceed("dtr", "dtr18Feb2015");
187
 
188
        }
189
    }
190
    @Override
191
    public void onResume() {
192
        super.onResume();
193
        getView().setFocusableInTouchMode(true);
194
        getView().requestFocus();
195
        getView().setOnKeyListener(new View.OnKeyListener() {
196
            @Override
197
            public boolean onKey(View v, int keyCode, KeyEvent event) {
198
 
199
                if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK){
200
                    Intent i = new Intent(getActivity(), MainActivity.class);
201
                    i.putExtra("displayView", "0");
202
                    startActivity(i);
203
                    return true;
204
 
205
                }
206
                return false;
207
            }
208
        });
209
    }
210
 
211
    class pushData extends AsyncTask<String, Integer, String> {
212
 
213
        @Override
214
        protected void onPreExecute() {
215
            super.onPreExecute();
216
            Log.e("Push Service", "Pre execute");
217
        }
218
 
219
        @Override
220
        protected String doInBackground(String... arg0) {
221
            HttpClient httpclient = new DefaultHttpClient();
222
            try {
223
                ArrayList<NameValuePair> nameValuePairs = new ArrayList<>();
224
                nameValuePairs.add(new BasicNameValuePair("pushdata",obj.toString()));
225
                HttpPost httppost = new HttpPost(apiData.getString("url.push.api",null));
226
                httppost.setHeader("Authorization", ProfitTillConstants.BASIC_AUTH);
227
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
228
                System.out.println(obj.toString());
229
                StringEntity se = new StringEntity(obj.toString());
230
                HttpResponse response = httpclient.execute(httppost);
231
                int status = response.getStatusLine().getStatusCode();
232
 
233
                if(status == 200){
234
                    System.out.println("ResponseCode of record: "+ status + " is " + status);
235
                    return "success";
236
                } else {
237
                    Log.d("ResponseCode",status+"");
238
                    System.out.println(" NOT Transfered");
239
                    return "failure";
240
                }
241
 
242
            } catch (ClientProtocolException e) {
243
                return "failure";
244
            } catch (IOException e) {
245
                return "failure";
246
            }
247
        }
248
 
249
        @Override
250
        protected void onPostExecute(String result) {
251
            super.onPostExecute(result);
252
        }
253
    }
254
 
255
    public final boolean isInternetOn() {
256
 
257
        ConnectivityManager connec =
258
                (ConnectivityManager)getActivity().getSystemService(getActivity().getBaseContext().CONNECTIVITY_SERVICE);
259
 
260
        if ( connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTED ||
261
                connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.CONNECTING ||
262
                connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTING ||
263
                connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.CONNECTED ) {
264
            return true;
265
 
266
        } else if (
267
                connec.getNetworkInfo(0).getState() == android.net.NetworkInfo.State.DISCONNECTED ||
268
                        connec.getNetworkInfo(1).getState() == android.net.NetworkInfo.State.DISCONNECTED  ) {
269
 
270
            return false;
271
        }
272
        return false;
273
    }
274
}