From cf15b9496c9540c6a64579ddc9deef760f52a09f Mon Sep 17 00:00:00 2001 From: Alexandre Savard <alexandre.savard@savoirfairelinux.com> Date: Wed, 31 Oct 2012 16:27:46 -0400 Subject: [PATCH] #17159: Add AccountSelectionButton class --- .../client/AccountSelectionDialog.java | 14 +++- .../utils/AccountSelectionButton.java | 80 +++++++++++++++++++ 2 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 src/com/savoirfairelinux/sflphone/utils/AccountSelectionButton.java diff --git a/src/com/savoirfairelinux/sflphone/client/AccountSelectionDialog.java b/src/com/savoirfairelinux/sflphone/client/AccountSelectionDialog.java index d3b32aeb5..838c352a7 100644 --- a/src/com/savoirfairelinux/sflphone/client/AccountSelectionDialog.java +++ b/src/com/savoirfairelinux/sflphone/client/AccountSelectionDialog.java @@ -35,13 +35,18 @@ import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; +import android.util.Log; +import android.view.View; +import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; +import android.widget.TextView; import java.util.ArrayList; public class AccountSelectionDialog extends AlertDialog { + private static final String TAG = "AccountSelectionDialog"; Context mContext; ListView mListView; ArrayAdapter mListAdapter; @@ -54,16 +59,21 @@ public class AccountSelectionDialog extends AlertDialog mItems = items; } - private DialogInterface.OnClickListener onClick = new DialogInterface.OnClickListener() + private AdapterView.OnItemClickListener onClick = new AdapterView.OnItemClickListener() { - public void onClick(DialogInterface dialog, int which) { + // public void onClick(DialogInterface dialog, int which) { + public void onItemClick (AdapterView<?> parent, View view, int position, long id) { + Log.i(TAG, "Selected Account: " + ((TextView)view).getText()); } }; public void onCreate(Bundle savedInstanceState) { mListView = new ListView(mContext); + mListAdapter = new ArrayAdapter(mContext, android.R.layout.simple_expandable_list_item_1, mItems.toArray()); + + mListView.setOnItemClickListener(onClick); mListView.setAdapter(mListAdapter); setContentView(mListView); } diff --git a/src/com/savoirfairelinux/sflphone/utils/AccountSelectionButton.java b/src/com/savoirfairelinux/sflphone/utils/AccountSelectionButton.java new file mode 100644 index 000000000..782853dd1 --- /dev/null +++ b/src/com/savoirfairelinux/sflphone/utils/AccountSelectionButton.java @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2004-2012 Savoir-Faire Linux Inc. + * + * Author: Alexandre Savard <alexandre.savard@savoirfairelinux.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + * Additional permission under GNU GPL version 3 section 7: + * + * If you modify this program, or any covered work, by linking or + * combining it with the OpenSSL project's OpenSSL library (or a + * modified version of that library), containing parts covered by the + * terms of the OpenSSL or SSLeay licenses, Savoir-Faire Linux Inc. + * grants you additional permission to convey the resulting work. + * Corresponding Source for a non-source form of such a combination + * shall include the source code for the parts of OpenSSL used as well + * as that of the covered work. + */ +package com.savoirfairelinux.sflphone.utils; + +import android.content.Context; +import android.os.RemoteException; +import android.util.Log; +import android.util.AttributeSet; +import android.view.View; +import android.widget.Button; + +import com.savoirfairelinux.sflphone.client.AccountSelectionDialog; +import com.savoirfairelinux.sflphone.service.ISipService; + +import java.util.ArrayList; + +public class AccountSelectionButton extends Button +{ + private static final String TAG = "AccountSelectionButton"; + private ISipService mService; + private Context mContext; + + public AccountSelectionButton(Context context) { + super(context); + } + + public AccountSelectionButton(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public AccountSelectionButton(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + public void setSipService(ISipService service, Context context) { + mService = service; + mContext = context; + + setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + try { + ArrayList<String> list = (ArrayList<String>)mService.getAccountList(); + AccountSelectionDialog accountSelectionDialog = new AccountSelectionDialog(mContext, list); + accountSelectionDialog.show(); + } + catch (RemoteException e) { + Log.e(TAG, "Remote exception", e); + } + } + }); + } +} -- GitLab