src/com/beem/project/beem/BeemService.java
author Nikita Kozlov <nikita@elyzion.net>
Sun, 06 Nov 2011 21:22:00 +0100
changeset 918 80d2be82fa84
parent 917 f7cfc4a68225
child 920 68372d462902
permissions -rw-r--r--
Update request in contactlist.ui add filter in manifest to add contact
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
577
29ac85113420 fix some headers
Da Risk <darisk972@gmail.com>
parents: 567
diff changeset
     1
/*
567
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
     2
    BEEM is a videoconference application on the Android Platform.
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
     3
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
     4
    Copyright (C) 2009 by Frederic-Charles Barthelery,
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
     5
                          Jean-Manuel Da Silva,
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
     6
                          Nikita Kozlov,
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
     7
                          Philippe Lago,
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
     8
                          Jean Baptiste Vergely,
577
29ac85113420 fix some headers
Da Risk <darisk972@gmail.com>
parents: 567
diff changeset
     9
                          Vincent Veronis.
567
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    10
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    11
    This file is part of BEEM.
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    12
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    13
    BEEM is free software: you can redistribute it and/or modify
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    14
    it under the terms of the GNU General Public License as published by
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    15
    the Free Software Foundation, either version 3 of the License, or
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    16
    (at your option) any later version.
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    17
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    18
    BEEM is distributed in the hope that it will be useful,
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    19
    but WITHOUT ANY WARRANTY; without even the implied warranty of
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    20
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    21
    GNU General Public License for more details.
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    22
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    23
    You should have received a copy of the GNU General Public License
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    24
    along with BEEM.  If not, see <http://www.gnu.org/licenses/>.
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    25
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    26
    Please send bug reports with examples or suggestions to
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    27
    contact@beem-project.com or http://dev.beem-project.com/
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    28
577
29ac85113420 fix some headers
Da Risk <darisk972@gmail.com>
parents: 567
diff changeset
    29
    Epitech, hereby disclaims all copyright interest in the program "Beem"
567
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    30
    written by Frederic-Charles Barthelery,
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    31
               Jean-Manuel Da Silva,
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    32
               Nikita Kozlov,
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    33
               Philippe Lago,
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    34
               Jean Baptiste Vergely,
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    35
               Vincent Veronis.
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    36
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    37
    Nicolas Sadirac, November 26, 2009
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    38
    President of Epitech.
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    39
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    40
    Flavien Astraud, November 26, 2009
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    41
    Head of the EIP Laboratory.
896533b277d5 ajout des headers
Nikita Kozlov <nikita@beem-project.com>
parents: 563
diff changeset
    42
872
11a7b9c1c500 Debut multi account
"Vincent Veronis"
parents: 845
diff changeset
    43
 */
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    44
package com.beem.project.beem;
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    45
873
cdf001e43dce Multi Account on the beem service OK but doesnt connect
"Vincent Veronis"
parents: 872
diff changeset
    46
import java.util.HashMap;
cdf001e43dce Multi Account on the beem service OK but doesnt connect
"Vincent Veronis"
parents: 872
diff changeset
    47
import java.util.Map;
872
11a7b9c1c500 Debut multi account
"Vincent Veronis"
parents: 845
diff changeset
    48
94
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
    49
import org.jivesoftware.smack.Roster;
905
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
    50
import org.jivesoftware.smack.Roster.SubscriptionMode;
381
166db9c93335 Bundle pour debug avec nikita.
Vincent Veronis <veroni_v@epitech.net>
parents: 377
diff changeset
    51
import org.jivesoftware.smack.XMPPConnection;
528
a77a7b4e7f34 ClassCastException resolved, PrivacyList creation fixed.
Jean-Manuel Da Silva <dasilvj@gmail.com>
parents: 526
diff changeset
    52
import org.jivesoftware.smack.provider.ProviderManager;
872
11a7b9c1c500 Debut multi account
"Vincent Veronis"
parents: 845
diff changeset
    53
import org.jivesoftware.smackx.packet.ChatStateExtension;
772
d1db49d18275 fix #263
Da Risk <darisk972@gmail.com>
parents: 729
diff changeset
    54
import org.jivesoftware.smackx.provider.DelayInfoProvider;
793
4fb9df09ffdf #286 : Initial implementation of XEP-0115 : Entity Capabilities
Da Risk <darisk972@gmail.com>
parents: 774
diff changeset
    55
import org.jivesoftware.smackx.provider.DiscoverInfoProvider;
4fb9df09ffdf #286 : Initial implementation of XEP-0115 : Entity Capabilities
Da Risk <darisk972@gmail.com>
parents: 774
diff changeset
    56
import org.jivesoftware.smackx.provider.DiscoverItemsProvider;
872
11a7b9c1c500 Debut multi account
"Vincent Veronis"
parents: 845
diff changeset
    57
import org.jivesoftware.smackx.pubsub.provider.EventProvider;
11a7b9c1c500 Debut multi account
"Vincent Veronis"
parents: 845
diff changeset
    58
import org.jivesoftware.smackx.pubsub.provider.ItemProvider;
11a7b9c1c500 Debut multi account
"Vincent Veronis"
parents: 845
diff changeset
    59
import org.jivesoftware.smackx.pubsub.provider.ItemsProvider;
799
b2a796654230 Implementation of XEP-084 which loads avatar from http.
Da Risk <darisk972@gmail.com>
parents: 793
diff changeset
    60
import org.jivesoftware.smackx.pubsub.provider.PubSubProvider;
239
65369afd96d3 Rajout de Log dans le beem service pour les reconnections etc.
marseille@marseille-desktop
parents: 236
diff changeset
    61
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    62
import android.app.Notification;
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    63
import android.app.Service;
679
47cd386089b3 use the settings_away_chk pref at startup, i need to add a listener for runtime now
nikita@nikita-laptop
parents: 678
diff changeset
    64
import android.content.BroadcastReceiver;
918
80d2be82fa84 Update request in contactlist.ui
Nikita Kozlov <nikita@elyzion.net>
parents: 917
diff changeset
    65
import android.content.ContentValues;
678
d1a599ccf879 Adding of an 'Auto-Away' option, there is still some more work/translation to do
nikita@nikita-laptop
parents: 671
diff changeset
    66
import android.content.Context;
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    67
import android.content.Intent;
607
52e24c3386f3 SDK target set to 6 since google have said that 2.0 will be totaly replaced the 1st 2010
Nikita Kozlov <nikita@mbdsys.com>
parents: 594
diff changeset
    68
import android.content.IntentFilter;
19
213b84d2e743 Improve the service. It connect with a xmpp server running on the
Da Risk <darisk972@gmail.com>
parents: 18
diff changeset
    69
import android.content.SharedPreferences;
377
5f60caa9f85c deplacement de l'eventListener cote service
Nikita Kozlov <nikita@beem-project.com>
parents: 375
diff changeset
    70
import android.content.SharedPreferences.Editor;
918
80d2be82fa84 Update request in contactlist.ui
Nikita Kozlov <nikita@elyzion.net>
parents: 917
diff changeset
    71
import android.database.ContentObserver;
80d2be82fa84 Update request in contactlist.ui
Nikita Kozlov <nikita@elyzion.net>
parents: 917
diff changeset
    72
import android.database.Cursor;
607
52e24c3386f3 SDK target set to 6 since google have said that 2.0 will be totaly replaced the 1st 2010
Nikita Kozlov <nikita@mbdsys.com>
parents: 594
diff changeset
    73
import android.net.ConnectivityManager;
897
07de7eb304b6 New Concept service from da_risk but not up to date.
"Vincent Veronis"
parents: 896
diff changeset
    74
import android.os.Bundle;
07de7eb304b6 New Concept service from da_risk but not up to date.
"Vincent Veronis"
parents: 896
diff changeset
    75
import android.os.Handler;
07de7eb304b6 New Concept service from da_risk but not up to date.
"Vincent Veronis"
parents: 896
diff changeset
    76
import android.os.HandlerThread;
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    77
import android.os.IBinder;
897
07de7eb304b6 New Concept service from da_risk but not up to date.
"Vincent Veronis"
parents: 896
diff changeset
    78
import android.os.Looper;
07de7eb304b6 New Concept service from da_risk but not up to date.
"Vincent Veronis"
parents: 896
diff changeset
    79
import android.os.Message;
18
1063d4bde1aa commit pour test avec barbu
Da Risk <darisk972@gmail.com>
parents: 17
diff changeset
    80
import android.os.RemoteException;
918
80d2be82fa84 Update request in contactlist.ui
Nikita Kozlov <nikita@elyzion.net>
parents: 917
diff changeset
    81
import android.provider.ContactsContract;
80d2be82fa84 Update request in contactlist.ui
Nikita Kozlov <nikita@elyzion.net>
parents: 917
diff changeset
    82
import android.provider.ContactsContract.RawContacts;
94
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
    83
import android.util.Log;
904759c1bd62 Draft de reception d'une demande d'ajout.
Da Risk <darisk972@gmail.com>
parents: 83
diff changeset
    84
67
8c3870db8e31 Rename some XMPP* classes in Xmpp*
Da Risk <darisk972@gmail.com>
parents: 55
diff changeset
    85
import com.beem.project.beem.service.XmppConnectionAdapter;
802
20308ad77837 Checkstyle and javadoc.
Da Risk <darisk972@gmail.com>
parents: 800
diff changeset
    86
import com.beem.project.beem.smack.avatar.AvatarMetadataProvider;
803
8a3a48e85b63 add an Xmpp Avatar Retriever and a HttpClient avatar retriever.
Da Risk <darisk972@gmail.com>
parents: 802
diff changeset
    87
import com.beem.project.beem.smack.avatar.AvatarProvider;
793
4fb9df09ffdf #286 : Initial implementation of XEP-0115 : Entity Capabilities
Da Risk <darisk972@gmail.com>
parents: 774
diff changeset
    88
import com.beem.project.beem.smack.caps.CapsProvider;
909
45ba9cc90c22 Notification now in an separate class
"Vincent Veronis"
parents: 907
diff changeset
    89
import com.beem.project.beem.ui.BeemNotification;
872
11a7b9c1c500 Debut multi account
"Vincent Veronis"
parents: 845
diff changeset
    90
import com.beem.project.beem.utils.BeemBroadcastReceiver;
11a7b9c1c500 Debut multi account
"Vincent Veronis"
parents: 845
diff changeset
    91
import com.beem.project.beem.utils.BeemConnectivity;
11a7b9c1c500 Debut multi account
"Vincent Veronis"
parents: 845
diff changeset
    92
import com.beem.project.beem.utils.Status;
72
cdedc3a25d39 Show a progress dialog during connection with the server
Da Risk <darisk972@gmail.com>
parents: 67
diff changeset
    93
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    94
/**
872
11a7b9c1c500 Debut multi account
"Vincent Veronis"
parents: 845
diff changeset
    95
 * This class is for the Beem service. It must contains every global informations needed to maintain the background
11a7b9c1c500 Debut multi account
"Vincent Veronis"
parents: 845
diff changeset
    96
 * service. The connection to the xmpp server will be made asynchronously when the service will start.
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    97
 * @author darisk
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    98
 */
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
    99
public class BeemService extends Service {
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
   100
905
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   101
    /** The id to use for status notification. */
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   102
    public static final int NOTIFICATION_STATUS_ID = 100;
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   103
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   104
    private static final String TAG = "BeemService";
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   105
    private static final int MESSAGE_CONNECT = 0x1;
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   106
    private static final int MESSAGE_DISCONNECT = 0x2;
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   107
    private static final int MESSAGE_SEND_MSG = 0x3;
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   108
    private static final int MESSAGE_SYNC = 0x4;
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   109
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   110
    private Map<String, XmppConnectionAdapter> mConnection = new HashMap<String, XmppConnectionAdapter>();
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   111
    private Map<String, BeemConnection> mBeemConnection = new HashMap<String, BeemConnection>();
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   112
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   113
    private boolean mOnOffReceiverIsRegistered;
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   114
    private Handler mHandler;
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   115
    private Looper mServiceLooper;
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   116
    private BeemBroadcastReceiver mReceiver = new BeemBroadcastReceiver();
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   117
    private BeemServicePreferenceListener mPreferenceListener = new BeemServicePreferenceListener();
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   118
    private BeemServiceBroadcastReceiver mOnOffReceiver = new BeemServiceBroadcastReceiver();
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   119
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   120
    /**
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   121
     * Constructor.
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   122
     */
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   123
    public BeemService() {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   124
    }
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   125
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   126
    @Override
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   127
    public int onStartCommand(Intent intent, int flags, int startId) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   128
	if (intent != null) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   129
	    handleIntent(intent);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   130
	}
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   131
	return Service.START_STICKY;
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   132
    }
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   133
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   134
    /**
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   135
     * {@inheritDoc}
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   136
     */
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   137
    @Override
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   138
    public IBinder onBind(Intent intent) {
906
4ee4a608f97b Notification set when beem is launched.
"Vincent Veronis"
parents: 905
diff changeset
   139
	return null;
905
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   140
    }
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   141
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   142
    @Override
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   143
    public boolean onUnbind(Intent intent) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   144
	Log.d(TAG, "ONUNBIND()");
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   145
	boolean isConnected = true;
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   146
	for (XmppConnectionAdapter connection : mConnection.values()) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   147
	    if (!connection.getAdaptee().isConnected())
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   148
		isConnected = false;
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   149
	}
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   150
	if (!isConnected) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   151
	    this.stopSelf();
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   152
	}
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   153
	return true;
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   154
    }
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   155
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   156
    /**
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   157
     * {@inheritDoc}
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   158
     */
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   159
    @Override
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   160
    public void onCreate() {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   161
	super.onCreate();
907
d26b442143f9 Update custom notification layout
"Vincent Veronis"
parents: 906
diff changeset
   162
	Log.d(TAG, "ONCREATE");
905
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   163
	HandlerThread thread = new HandlerThread("BeemServiceThread");
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   164
	thread.start();
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   165
	mServiceLooper = thread.getLooper();
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   166
	mHandler = new BeemServiceHandler(mServiceLooper);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   167
	registerReceiver(mReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   168
	configure(ProviderManager.getInstance());
909
45ba9cc90c22 Notification now in an separate class
"Vincent Veronis"
parents: 907
diff changeset
   169
	BeemNotification.BindNotification(this);
905
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   170
	Roster.setDefaultSubscriptionMode(SubscriptionMode.manual);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   171
    }
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   172
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   173
    /**
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   174
     * {@inheritDoc}
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   175
     */
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   176
    @Override
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   177
    public void onDestroy() {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   178
	super.onDestroy();
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   179
	unregisterReceiver(mReceiver);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   180
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   181
	if (mOnOffReceiverIsRegistered)
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   182
	    unregisterReceiver(mOnOffReceiver);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   183
	for (XmppConnectionAdapter connection : mConnection.values()) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   184
	    if (connection.isAuthentificated() && BeemConnectivity.isConnected(this))
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   185
		connection.disconnect();
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   186
	}
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   187
	Log.d(TAG, "ONDESTROY");
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   188
    }
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   189
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   190
    public XmppConnectionAdapter getConnection(String accountName) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   191
	return mConnection.get(accountName);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   192
    }
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   193
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   194
    /**
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   195
     * Show a notification using the preference of the user.
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   196
     * @param id the id of the notification.
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   197
     * @param notif the notification to show
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   198
     */
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   199
    public void sendNotification(int id, Notification notif) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   200
	//	if (mSettings.getBoolean(BeemApplication.NOTIFICATION_VIBRATE_KEY, true))
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   201
	//	    notif.defaults |= Notification.DEFAULT_VIBRATE;
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   202
	//	notif.defaults |= Notification.DEFAULT_LIGHTS;
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   203
	//	String ringtoneStr = mSettings.getString(BeemApplication.NOTIFICATION_SOUND_KEY, "");
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   204
	//	notif.sound = Uri.parse(ringtoneStr);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   205
	//	mNotificationManager.notify(id, notif);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   206
    }
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   207
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   208
    /**
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   209
     * Reset the status to online after a disconnect.
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   210
     */
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   211
    public void resetStatus() {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   212
	for (BeemConnection beemco : mBeemConnection.values()) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   213
	    Editor edit = beemco.getSettings().edit();
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   214
	    edit.putInt(BeemApplication.STATUS_KEY, 1);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   215
	    edit.commit();
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   216
	}
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   217
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   218
    }
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   219
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   220
    /**
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   221
     * Initialize Jingle from an XmppConnectionAdapter.
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   222
     * @param adaptee XmppConnection used for jingle.
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   223
     */
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   224
    public void initJingle(XMPPConnection adaptee) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   225
    }
419
88e1a96ee8da Retrait des notifications quand on ouvre le chat d'une personne qui vient
Da Risk <darisk972@gmail.com>
parents: 412
diff changeset
   226
905
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   227
    /**
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   228
     * Get the preference of the service.
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   229
     * @return the preference
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   230
     */
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   231
    public SharedPreferences getServicePreference(String accountName) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   232
	Log.e(TAG, "Account name:" + accountName);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   233
	return mBeemConnection.get(accountName).getSettings();
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   234
    }
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   235
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   236
    /**
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   237
     * A sort of patch from this thread: http://www.igniterealtime.org/community/thread/31118. Avoid ClassCastException
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   238
     * by bypassing the classloading shit of Smack.
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   239
     * @param pm The ProviderManager.
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   240
     */
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   241
    private void configure(ProviderManager pm) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   242
	Log.d(TAG, "configure");
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   243
	// Service Discovery # Items
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   244
	pm.addIQProvider("query", "http://jabber.org/protocol/disco#items", new DiscoverItemsProvider());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   245
	// Service Discovery # Info
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   246
	pm.addIQProvider("query", "http://jabber.org/protocol/disco#info", new DiscoverInfoProvider());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   247
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   248
	// Privacy
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   249
	//pm.addIQProvider("query", "jabber:iq:privacy", new PrivacyProvider());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   250
	// Delayed Delivery only the new version
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   251
	pm.addExtensionProvider("delay", "urn:xmpp:delay", new DelayInfoProvider());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   252
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   253
	// Service Discovery # Items
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   254
	pm.addIQProvider("query", "http://jabber.org/protocol/disco#items", new DiscoverItemsProvider());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   255
	// Service Discovery # Info
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   256
	pm.addIQProvider("query", "http://jabber.org/protocol/disco#info", new DiscoverInfoProvider());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   257
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   258
	// Chat State
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   259
	ChatStateExtension.Provider chatState = new ChatStateExtension.Provider();
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   260
	pm.addExtensionProvider("active", "http://jabber.org/protocol/chatstates", chatState);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   261
	pm.addExtensionProvider("composing", "http://jabber.org/protocol/chatstates", chatState);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   262
	pm.addExtensionProvider("paused", "http://jabber.org/protocol/chatstates", chatState);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   263
	pm.addExtensionProvider("inactive", "http://jabber.org/protocol/chatstates", chatState);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   264
	pm.addExtensionProvider("gone", "http://jabber.org/protocol/chatstates", chatState);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   265
	// capabilities
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   266
	pm.addExtensionProvider("c", "http://jabber.org/protocol/caps", new CapsProvider());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   267
	//Pubsub
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   268
	pm.addIQProvider("pubsub", "http://jabber.org/protocol/pubsub", new PubSubProvider());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   269
	pm.addExtensionProvider("items", "http://jabber.org/protocol/pubsub", new ItemsProvider());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   270
	pm.addExtensionProvider("items", "http://jabber.org/protocol/pubsub", new ItemsProvider());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   271
	pm.addExtensionProvider("item", "http://jabber.org/protocol/pubsub", new ItemProvider());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   272
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   273
	pm.addExtensionProvider("items", "http://jabber.org/protocol/pubsub#event", new ItemsProvider());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   274
	pm.addExtensionProvider("item", "http://jabber.org/protocol/pubsub#event", new ItemProvider());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   275
	pm.addExtensionProvider("event", "http://jabber.org/protocol/pubsub#event", new EventProvider());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   276
	//TODO rajouter les manquants pour du full pubsub
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   277
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   278
	//PEP avatar
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   279
	pm.addExtensionProvider("metadata", "urn:xmpp:avatar:metadata", new AvatarMetadataProvider());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   280
	pm.addExtensionProvider("data", "urn:xmpp:avatar:data", new AvatarProvider());
799
b2a796654230 Implementation of XEP-084 which loads avatar from http.
Da Risk <darisk972@gmail.com>
parents: 793
diff changeset
   281
905
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   282
	//         PEPProvider pep  = new PEPProvider();
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   283
	//         AvatarMetadataProvider avaMeta  = new AvatarMetadataProvider();
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   284
	//         pep.registerPEPParserExtension("urn:xmpp:avatar:metadata", avaMeta);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   285
	//         pm.addExtensionProvider("event", "http://jabber.org/protocol/pubsub#event", pep);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   286
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   287
	/*
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   288
	 * // Private Data Storage pm.addIQProvider("query", "jabber:iq:private", new
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   289
	 * PrivateDataManager.PrivateDataIQProvider()); // Time try { pm.addIQProvider("query", "jabber:iq:time",
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   290
	 * Class.forName("org.jivesoftware.smackx.packet.Time")); } catch (ClassNotFoundException e) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   291
	 * Log.w("TestClient", "Can't load class for org.jivesoftware.smackx.packet.Time"); } // Roster Exchange
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   292
	 * pm.addExtensionProvider("x", "jabber:x:roster", new RosterExchangeProvider()); // Message Events
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   293
	 * pm.addExtensionProvider("x", "jabber:x:event", new MessageEventProvider()); // XHTML
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   294
	 * pm.addExtensionProvider("html", "http://jabber.org/protocol/xhtml-im", new XHTMLExtensionProvider()); //
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   295
	 * Group Chat Invitations pm.addExtensionProvider("x", "jabber:x:conference", new
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   296
	 * GroupChatInvitation.Provider()); // Data Forms pm.addExtensionProvider("x", "jabber:x:data", new
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   297
	 * DataFormProvider()); // MUC User pm.addExtensionProvider("x", "http://jabber.org/protocol/muc#user", new
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   298
	 * MUCUserProvider()); // MUC Admin pm.addIQProvider("query", "http://jabber.org/protocol/muc#admin", new
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   299
	 * MUCAdminProvider()); // MUC Owner pm.addIQProvider("query", "http://jabber.org/protocol/muc#owner", new
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   300
	 * MUCOwnerProvider()); // Version try { pm.addIQProvider("query", "jabber:iq:version",
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   301
	 * Class.forName("org.jivesoftware.smackx.packet.Version")); } catch (ClassNotFoundException e) { // Not sure
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   302
	 * what's happening here. Log.w("TestClient", "Can't load class for org.jivesoftware.smackx.packet.Version"); }
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   303
	 * // VCard pm.addIQProvider("vCard", "vcard-temp", new VCardProvider()); // Offline Message Requests
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   304
	 * pm.addIQProvider("offline", "http://jabber.org/protocol/offline", new OfflineMessageRequest.Provider()); //
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   305
	 * Offline Message Indicator pm.addExtensionProvider("offline", "http://jabber.org/protocol/offline", new
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   306
	 * OfflineMessageInfo.Provider()); // Last Activity pm.addIQProvider("query", "jabber:iq:last", new
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   307
	 * LastActivity.Provider()); // User Search pm.addIQProvider("query", "jabber:iq:search", new
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   308
	 * UserSearch.Provider()); // SharedGroupsInfo pm.addIQProvider("sharedgroup",
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   309
	 * "http://www.jivesoftware.org/protocol/sharedgroup", new SharedGroupsInfo.Provider()); // JEP-33: Extended
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   310
	 * Stanza Addressing pm.addExtensionProvider("addresses", "http://jabber.org/protocol/address", new
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   311
	 * MultipleAddressesProvider()); // FileTransfer pm.addIQProvider("si", "http://jabber.org/protocol/si", new
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   312
	 * StreamInitiationProvider()); pm.addIQProvider("query", "http://jabber.org/protocol/bytestreams", new
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   313
	 * BytestreamsProvider()); pm.addIQProvider("open", "http://jabber.org/protocol/ibb", new IBBProviders.Open());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   314
	 * pm.addIQProvider("close", "http://jabber.org/protocol/ibb", new IBBProviders.Close());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   315
	 * pm.addExtensionProvider("data", "http://jabber.org/protocol/ibb", new IBBProviders.Data());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   316
	 * pm.addIQProvider("command", COMMAND_NAMESPACE, new AdHocCommandDataProvider());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   317
	 * pm.addExtensionProvider("malformed-action", COMMAND_NAMESPACE, new
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   318
	 * AdHocCommandDataProvider.MalformedActionError()); pm.addExtensionProvider("bad-locale", COMMAND_NAMESPACE,
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   319
	 * new AdHocCommandDataProvider.BadLocaleError()); pm.addExtensionProvider("bad-payload", COMMAND_NAMESPACE, new
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   320
	 * AdHocCommandDataProvider.BadPayloadError()); pm.addExtensionProvider("bad-sessionid", COMMAND_NAMESPACE, new
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   321
	 * AdHocCommandDataProvider.BadSessionIDError()); pm.addExtensionProvider("session-expired", COMMAND_NAMESPACE,
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   322
	 * new AdHocCommandDataProvider.SessionExpiredError());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   323
	 */
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   324
    }
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   325
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   326
    /**
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   327
     * Listen on preference changes.
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   328
     */
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   329
    public class BeemServicePreferenceListener implements SharedPreferences.OnSharedPreferenceChangeListener {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   330
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   331
	/**
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   332
	 * ctor.
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   333
	 */
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   334
	public BeemServicePreferenceListener() {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   335
	}
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   336
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   337
	@Override
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   338
	public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   339
	    if ("settings_away_chk".equals(key)) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   340
		if (sharedPreferences.getBoolean("settings_away_chk", false)) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   341
		    mOnOffReceiverIsRegistered = true;
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   342
		    registerReceiver(mOnOffReceiver, new IntentFilter(Intent.ACTION_SCREEN_OFF));
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   343
		    registerReceiver(mOnOffReceiver, new IntentFilter(Intent.ACTION_SCREEN_ON));
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   344
		} else {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   345
		    mOnOffReceiverIsRegistered = false;
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   346
		    unregisterReceiver(mOnOffReceiver);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   347
		}
909
45ba9cc90c22 Notification now in an separate class
"Vincent Veronis"
parents: 907
diff changeset
   348
	    } else if (BeemApplication.STATUS_TEXT_KEY.equals(key)) {
45ba9cc90c22 Notification now in an separate class
"Vincent Veronis"
parents: 907
diff changeset
   349
		BeemNotification.BindNotification(BeemService.this);
905
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   350
	    }
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   351
	}
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   352
    }
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   353
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   354
    /**
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   355
     * Listen on some Intent broadcast, ScreenOn and ScreenOff.
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   356
     */
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   357
    private class BeemServiceBroadcastReceiver extends BroadcastReceiver {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   358
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   359
	private String mOldStatus;
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   360
	private int mOldMode;
679
47cd386089b3 use the settings_away_chk pref at startup, i need to add a listener for runtime now
nikita@nikita-laptop
parents: 678
diff changeset
   361
682
9a7a89e5e966 some checkstyle
nikita@nikita-laptop
parents: 680
diff changeset
   362
	/**
741
af1c21ab7ab9 refactor and clean up
Da Risk <darisk972@gmail.com>
parents: 740
diff changeset
   363
	 * Constructor.
682
9a7a89e5e966 some checkstyle
nikita@nikita-laptop
parents: 680
diff changeset
   364
	 */
905
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   365
	public BeemServiceBroadcastReceiver() {
678
d1a599ccf879 Adding of an 'Auto-Away' option, there is still some more work/translation to do
nikita@nikita-laptop
parents: 671
diff changeset
   366
	}
d1a599ccf879 Adding of an 'Auto-Away' option, there is still some more work/translation to do
nikita@nikita-laptop
parents: 671
diff changeset
   367
d1a599ccf879 Adding of an 'Auto-Away' option, there is still some more work/translation to do
nikita@nikita-laptop
parents: 671
diff changeset
   368
	@Override
905
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   369
	public void onReceive(final Context context, final Intent intent) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   370
	    String intentAction = intent.getAction();
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   371
	    if (intentAction.equals(Intent.ACTION_SCREEN_OFF)) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   372
		for (Map.Entry<String, XmppConnectionAdapter> item : mConnection.entrySet()) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   373
		    XmppConnectionAdapter connection = item.getValue();
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   374
		    mOldMode = connection.getPreviousMode();
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   375
		    mOldStatus = connection.getPreviousStatus();
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   376
		    if (connection.isAuthentificated())
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   377
			connection.changeStatus(Status.CONTACT_STATUS_AWAY, mBeemConnection.get(item.getKey())
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   378
			    .getSettings().getString("settings_away_message", "Away"));
872
11a7b9c1c500 Debut multi account
"Vincent Veronis"
parents: 845
diff changeset
   379
		}
905
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   380
	    } else if (intentAction.equals(Intent.ACTION_SCREEN_ON)) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   381
		for (XmppConnectionAdapter connection : mConnection.values()) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   382
		    if (connection.isAuthentificated())
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   383
			connection.changeStatus(mOldMode, mOldStatus);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   384
		}
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   385
	    }
678
d1a599ccf879 Adding of an 'Auto-Away' option, there is still some more work/translation to do
nikita@nikita-laptop
parents: 671
diff changeset
   386
	}
905
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   387
    }
897
07de7eb304b6 New Concept service from da_risk but not up to date.
"Vincent Veronis"
parents: 896
diff changeset
   388
905
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   389
    private void handleIntent(Intent intent) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   390
	Message msg = null;
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   391
	String action = intent.getAction();
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   392
	if (BeemIntent.ACTION_CONNECT.equals(action)) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   393
	    msg = mHandler.obtainMessage(MESSAGE_CONNECT, intent.getExtras());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   394
	} else if (BeemIntent.ACTION_DISCONNECT.equals(action)) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   395
	    msg = mHandler.obtainMessage(MESSAGE_DISCONNECT, intent.getExtras());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   396
	} else if (BeemIntent.ACTION_SEND_MESSAGE.equals(action)) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   397
	    msg = mHandler.obtainMessage(MESSAGE_SEND_MSG, intent.getExtras());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   398
	} else if (BeemIntent.ACTION_SYNC.equals(action)) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   399
	    msg = mHandler.obtainMessage(MESSAGE_SYNC, intent.getExtras());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   400
	} else {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   401
	    Log.w(TAG, "Unknown intent " + intent);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   402
	}
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   403
	if (msg != null)
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   404
	    mHandler.sendMessage(msg);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   405
    }
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   406
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   407
    private class BeemServiceHandler extends Handler {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   408
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   409
	public BeemServiceHandler(Looper looper) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   410
	    super(looper);
897
07de7eb304b6 New Concept service from da_risk but not up to date.
"Vincent Veronis"
parents: 896
diff changeset
   411
	}
07de7eb304b6 New Concept service from da_risk but not up to date.
"Vincent Veronis"
parents: 896
diff changeset
   412
07de7eb304b6 New Concept service from da_risk but not up to date.
"Vincent Veronis"
parents: 896
diff changeset
   413
	@Override
905
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   414
	public void handleMessage(Message msg) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   415
	    Bundle b = (Bundle) msg.obj;
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   416
	    switch (msg.what) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   417
		case MESSAGE_CONNECT:
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   418
		    handleConnect(b.getString(BeemIntent.EXTRA_ACCOUNT));
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   419
		    break;
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   420
		case MESSAGE_DISCONNECT:
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   421
		    handleDisconnect(b);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   422
		    break;
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   423
		case MESSAGE_SEND_MSG:
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   424
		    String account = b.getString(BeemIntent.EXTRA_ACCOUNT);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   425
		    XmppConnectionAdapter con = mConnection.get(account);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   426
		    if (con != null) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   427
			con.handleMessage(msg);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   428
		    }
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   429
		    break;
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   430
		case MESSAGE_SYNC:
911
e5c194ea9307 Change notification icon status when sync roster
"Vincent Veronis"
parents: 909
diff changeset
   431
		    BeemNotification.StartSyncNotification(getBaseContext());
905
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   432
		    String accountName = b.getString(BeemIntent.EXTRA_ACCOUNT);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   433
		    //TODO: Connect with option to not show status
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   434
		    handleConnect(accountName);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   435
		    XmppConnectionAdapter co = mConnection.get(accountName);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   436
		    if (co != null) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   437
			BeemSync sync = new BeemSync(getBaseContext());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   438
			if (co.getAdaptee() != null)
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   439
			    sync.manageRoster(co.getAdaptee().getRoster(), accountName);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   440
		    }
911
e5c194ea9307 Change notification icon status when sync roster
"Vincent Veronis"
parents: 909
diff changeset
   441
		    BeemNotification.StopSyncNotification(getBaseContext());
905
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   442
		    break;
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   443
		default:
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   444
		    Log.w(TAG, "Unknown message " + msg);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   445
	    }
897
07de7eb304b6 New Concept service from da_risk but not up to date.
"Vincent Veronis"
parents: 896
diff changeset
   446
	}
905
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   447
    }
899
43e0206f1135 Code format
"Vincent Veronis"
parents: 898
diff changeset
   448
905
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   449
    private void handleConnect(String accountName) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   450
	Intent res = new Intent(BeemIntent.ACTION_DISCONNECTED);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   451
	res.putExtra(BeemIntent.EXTRA_MESSAGE, R.string.contact_status_msg_offline);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   452
	res.putExtra(BeemIntent.EXTRA_ACCOUNT, accountName);
904
c067ee9a604c Lot of modification.
"Vincent Veronis"
parents: 901
diff changeset
   453
905
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   454
	if (mConnection.containsKey(accountName)) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   455
	    res.setAction(BeemIntent.ACTION_CONNECTED);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   456
	} else {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   457
	    if (accountName == null) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   458
		//connect all
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   459
	    } else {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   460
		BeemConnection beemco = new BeemConnection(BeemService.this.getSharedPreferences(accountName,
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   461
		    MODE_PRIVATE), mPreferenceListener);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   462
		if (beemco.getSettings().getBoolean("settings_away_chk", false)) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   463
		    mOnOffReceiverIsRegistered = true;
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   464
		    registerReceiver(mOnOffReceiver, new IntentFilter(Intent.ACTION_SCREEN_OFF));
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   465
		    registerReceiver(mOnOffReceiver, new IntentFilter(Intent.ACTION_SCREEN_ON));
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   466
		}
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   467
		mBeemConnection.put(accountName, beemco);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   468
		XmppConnectionAdapter beemcoAdapter = new XmppConnectionAdapter(beemco.getConnectionConfiguration(),
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   469
		    beemco.getJid(), beemco.getPassword(), this);
897
07de7eb304b6 New Concept service from da_risk but not up to date.
"Vincent Veronis"
parents: 896
diff changeset
   470
905
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   471
		try {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   472
		    Log.i(TAG, "Starting connection of " + accountName);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   473
		    if (beemcoAdapter.connectSync()) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   474
			mConnection.put(accountName, beemcoAdapter);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   475
			res.setAction(BeemIntent.ACTION_CONNECTED);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   476
			Log.e(TAG, "Account configuration : " + accountName + " DONE");
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   477
		    } else {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   478
			Log.w(TAG, "Unable to connect " + accountName);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   479
			res.putExtra(BeemIntent.EXTRA_MESSAGE, beemcoAdapter.getErrorMessage());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   480
		    }
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   481
		} catch (RemoteException e) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   482
		    res.putExtra(BeemIntent.EXTRA_MESSAGE, beemcoAdapter.getErrorMessage());
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   483
		    Log.e(TAG, "Unable to connect " + accountName, e);
899
43e0206f1135 Code format
"Vincent Veronis"
parents: 898
diff changeset
   484
		}
897
07de7eb304b6 New Concept service from da_risk but not up to date.
"Vincent Veronis"
parents: 896
diff changeset
   485
905
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   486
	    }
897
07de7eb304b6 New Concept service from da_risk but not up to date.
"Vincent Veronis"
parents: 896
diff changeset
   487
	}
905
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   488
	sendBroadcast(res);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   489
    }
897
07de7eb304b6 New Concept service from da_risk but not up to date.
"Vincent Veronis"
parents: 896
diff changeset
   490
905
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   491
    private void handleDisconnect(Bundle b) {
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   492
	Intent res = new Intent(BeemIntent.ACTION_DISCONNECTED);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   493
	String account = b.getString(BeemIntent.EXTRA_ACCOUNT);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   494
	mConnection.remove(account);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   495
	sendBroadcast(res);
dfbc48b4eae1 Correction bug cursor adapter when groups are empty.
"Vincent Veronis"
parents: 904
diff changeset
   496
    }
17
afd3a080d318 On a un service qui se lance.
Da Risk <darisk972@gmail.com>
parents:
diff changeset
   497
}