1ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak/*
2ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * Copyright (c) 2015, Motorola Mobility LLC
3ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * All rights reserved.
4ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak *
5ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * Redistribution and use in source and binary forms, with or without
6ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * modification, are permitted provided that the following conditions are met:
7ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak *     - Redistributions of source code must retain the above copyright
8ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak *       notice, this list of conditions and the following disclaimer.
9ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak *     - Redistributions in binary form must reproduce the above copyright
10ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak *       notice, this list of conditions and the following disclaimer in the
11ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak *       documentation and/or other materials provided with the distribution.
12ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak *     - Neither the name of Motorola Mobility nor the
13ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak *       names of its contributors may be used to endorse or promote products
14ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak *       derived from this software without specific prior written permission.
15ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak *
16ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
18ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MOTOROLA MOBILITY LLC BE LIABLE
20ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
26ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak * DAMAGE.
27ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak */
28ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak
29ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiakpackage com.android.service.ims.presence;
30ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak
31ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiakimport android.content.Context;
32ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiakimport android.content.SharedPreferences;
33ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiakimport android.content.SharedPreferences.Editor;
34ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak
35ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiakpublic class PresencePreferences {
36ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    private static final String PREFERENCES = "PresencePolling";
37ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    private static PresencePreferences sInstance;
38ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak
39ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    private Context mContext = null;
40ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    private SharedPreferences mCommonPref = null;
41ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak
42ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    private PresencePreferences() {
43ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    }
44ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak
45ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    public void setContext(Context context) {
46ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        if (mContext == null) {
47ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak            mContext = context;
48ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak            mCommonPref = mContext.getSharedPreferences(PREFERENCES, Context.MODE_PRIVATE);
49ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        }
50ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    }
51ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak
52ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    public static PresencePreferences getInstance(){
53ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        if (null == sInstance) {
54ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak            sInstance = new PresencePreferences();
55ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        }
56ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        return sInstance;
57ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    }
58ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak
59ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    private static final String CAPABILITY_DISCOVERY_TIME = "CapabilityDiscoveryTime";
60ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak
61ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    public long lastCapabilityDiscoveryTime() {
62ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        if (mCommonPref == null) {
63ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak            return 0;
64ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        }
65ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak
66ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        return mCommonPref.getLong(CAPABILITY_DISCOVERY_TIME, 0);
67ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    }
68ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak
69ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    public void updateCapabilityDiscoveryTime() {
70ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        if (mCommonPref == null) {
71ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak            return;
72ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        }
73ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak
74ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        Editor editor = mCommonPref.edit();
75ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        long time = System.currentTimeMillis();
76ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        editor.putLong(CAPABILITY_DISCOVERY_TIME, time);
77ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        editor.commit();
78ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    }
79ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak
80ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    private static final String PHONE_SUBSCRIBER_ID = "PhoneSubscriberId";
81ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    public String getSubscriberId() {
82ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        if (mCommonPref == null) {
83ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak            return null;
84ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        }
85ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak
86ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        return mCommonPref.getString(PHONE_SUBSCRIBER_ID, null);
87ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    }
88ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak
89ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    public void setSubscriberId(String id) {
90ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        if (mCommonPref == null) {
91ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak            return;
92ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        }
93ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak
94ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        Editor editor = mCommonPref.edit();
95ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        editor.putString(PHONE_SUBSCRIBER_ID, id);
96ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        editor.commit();
97ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    }
98ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak
99ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    private static final String PHONE_LINE1_NUMBER = "PhoneLine1Number";
100ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    public String getLine1Number() {
101ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        if (mCommonPref == null) {
102ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak            return null;
103ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        }
104ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak
105ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        return mCommonPref.getString(PHONE_LINE1_NUMBER, null);
106ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    }
107ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak
108ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    public void setLine1Number(String number) {
109ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        if (mCommonPref == null) {
110ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak            return;
111ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        }
112ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak
113ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        Editor editor = mCommonPref.edit();
114ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        editor.putString(PHONE_LINE1_NUMBER, number);
115ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        editor.commit();
116ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    }
117ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak
118ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    private static final String RCS_TEST_MODE = "RcsTestMode";
119ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    public boolean getRcsTestMode() {
120ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        if (mCommonPref == null) {
121ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak            return false;
122ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        }
123ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak
124ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        return mCommonPref.getInt(RCS_TEST_MODE, 0) == 1;
125ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    }
126ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak
127ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    public void setRcsTestMode(boolean test) {
128ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        if (mCommonPref == null) {
129ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak            return;
130ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        }
131ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak
132ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        Editor editor = mCommonPref.edit();
133ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        editor.putInt(RCS_TEST_MODE, test ? 1 : 0);
134ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak        editor.commit();
135ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak    }
136ac76c57e7a49d4f1431c751db3c810467a60ca48Pavel Zhamaitsiak}
137