From 656c53cf00c8abff4905871af221ff60aca9744b Mon Sep 17 00:00:00 2001 From: akwizgran <michael@briarproject.org> Date: Wed, 27 Feb 2013 22:35:27 +0000 Subject: [PATCH] Converted the home screen into a grid view. --- briar-android/res/values/strings.xml | 4 +- .../sf/briar/android/HomeScreenActivity.java | 124 +++++++++++++----- .../android/contact/ContactListActivity.java | 1 + .../android/contact/ContactListAdapter.java | 7 +- 4 files changed, 96 insertions(+), 40 deletions(-) diff --git a/briar-android/res/values/strings.xml b/briar-android/res/values/strings.xml index 468defb0a0..89c4337ab2 100644 --- a/briar-android/res/values/strings.xml +++ b/briar-android/res/values/strings.xml @@ -1,9 +1,11 @@ <?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">Briar</string> - <string name="notification_title">Syncing messages</string> + <string name="notification_title">Briar is running</string> <string name="notification_text">Touch to quit.</string> <string name="contact_list_button">Contacts</string> + <string name="messages_button">Messages</string> + <string name="settings_button">Settings</string> <string name="quit_button">Quit</string> <string name="contact_list_title">Contacts</string> <string name="contact_connected">Connected</string> diff --git a/briar-android/src/net/sf/briar/android/HomeScreenActivity.java b/briar-android/src/net/sf/briar/android/HomeScreenActivity.java index ee63c84bb5..8ecd9168bb 100644 --- a/briar-android/src/net/sf/briar/android/HomeScreenActivity.java +++ b/briar-android/src/net/sf/briar/android/HomeScreenActivity.java @@ -2,11 +2,10 @@ package net.sf.briar.android; import static android.view.Gravity.CENTER; import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; -import static android.widget.LinearLayout.HORIZONTAL; -import static android.widget.LinearLayout.VERTICAL; import static java.util.logging.Level.INFO; +import java.util.ArrayList; +import java.util.List; import java.util.logging.Logger; import net.sf.briar.R; @@ -18,62 +17,121 @@ import android.os.Bundle; import android.os.IBinder; import android.view.View; import android.view.View.OnClickListener; +import android.view.ViewGroup; +import android.widget.BaseAdapter; import android.widget.Button; +import android.widget.GridView; import android.widget.LinearLayout; -import android.widget.LinearLayout.LayoutParams; +import android.widget.ListView; import android.widget.ProgressBar; -public class HomeScreenActivity extends BriarActivity -implements OnClickListener { +public class HomeScreenActivity extends BriarActivity { private static final Logger LOG = Logger.getLogger(HomeScreenActivity.class.getName()); private final BriarServiceConnection serviceConnection = new BriarServiceConnection(); + private final List<Button> buttons = new ArrayList<Button>(); - Button contactListButton = null, quitButton = null; + public HomeScreenActivity() { + super(); + } @Override public void onCreate(Bundle state) { super.onCreate(null); if(LOG.isLoggable(INFO)) LOG.info("Created"); - LinearLayout layout = new LinearLayout(this); - layout.setLayoutParams(new LayoutParams(MATCH_PARENT, MATCH_PARENT)); - layout.setOrientation(VERTICAL); - layout.setGravity(CENTER); // If this activity was launched from the notification bar, quit if(getIntent().getBooleanExtra("net.sf.briar.QUIT", false)) { + LinearLayout layout = new LinearLayout(this); + layout.setLayoutParams(new LinearLayout.LayoutParams(MATCH_PARENT, + MATCH_PARENT)); + layout.setGravity(CENTER); ProgressBar spinner = new ProgressBar(this); spinner.setIndeterminate(true); layout.addView(spinner); + setContentView(layout); quit(); } else { - LinearLayout innerLayout = new LinearLayout(this); - innerLayout.setOrientation(HORIZONTAL); - innerLayout.setGravity(CENTER); + ListView.LayoutParams matchParent = new ListView.LayoutParams( + MATCH_PARENT, MATCH_PARENT); - contactListButton = new Button(this); - LayoutParams lp = new LayoutParams(WRAP_CONTENT, WRAP_CONTENT); - contactListButton.setLayoutParams(lp); + Button contactListButton = new Button(this); + contactListButton.setLayoutParams(matchParent); + contactListButton.setCompoundDrawablesWithIntrinsicBounds(0, + R.drawable.social_person, 0, 0); contactListButton.setText(R.string.contact_list_button); - contactListButton.setCompoundDrawablesWithIntrinsicBounds( - R.drawable.social_person, 0, 0, 0); - contactListButton.setOnClickListener(this); - innerLayout.addView(contactListButton); + contactListButton.setOnClickListener(new OnClickListener() { + public void onClick(View view) { + startActivity(new Intent(HomeScreenActivity.this, + ContactListActivity.class)); + } + }); + buttons.add(contactListButton); + + Button messagesButton = new Button(this); + messagesButton.setLayoutParams(matchParent); + messagesButton.setCompoundDrawablesWithIntrinsicBounds(0, + R.drawable.content_email, 0, 0); + messagesButton.setText(R.string.messages_button); + messagesButton.setOnClickListener(new OnClickListener() { + public void onClick(View view) { + // FIXME: Hook this button up to an activity + } + }); + buttons.add(messagesButton); + + Button settingsButton = new Button(this); + settingsButton.setLayoutParams(matchParent); + settingsButton.setCompoundDrawablesWithIntrinsicBounds(0, + R.drawable.action_settings, 0, 0); + settingsButton.setText(R.string.settings_button); + settingsButton.setOnClickListener(new OnClickListener() { + public void onClick(View view) { + // FIXME: Hook this button up to an activity + } + }); + buttons.add(settingsButton); - quitButton = new Button(this); - quitButton.setLayoutParams(lp); + Button quitButton = new Button(this); + quitButton.setLayoutParams(matchParent); + quitButton.setCompoundDrawablesWithIntrinsicBounds(0, + R.drawable.navigation_cancel, 0, 0); quitButton.setText(R.string.quit_button); - quitButton.setCompoundDrawablesWithIntrinsicBounds( - R.drawable.navigation_cancel, 0, 0, 0); - quitButton.setOnClickListener(this); - innerLayout.addView(quitButton); - layout.addView(innerLayout); - } + quitButton.setOnClickListener(new OnClickListener() { + public void onClick(View view) { + quit(); + } + }); + buttons.add(quitButton); + + GridView grid = new GridView(this); + grid.setLayoutParams(matchParent); + grid.setGravity(CENTER); + grid.setNumColumns(2); + grid.setAdapter(new BaseAdapter() { - setContentView(layout); + public int getCount() { + return buttons.size(); + } + + public Object getItem(int position) { + return buttons.get(position); + } + + public long getItemId(int position) { + return 0; + } + + public View getView(int position, View convertView, + ViewGroup parent) { + return buttons.get(position); + } + }); + setContentView(grid); + } // Start the service and bind to it startService(new Intent(BriarService.class.getName())); @@ -87,12 +145,6 @@ implements OnClickListener { unbindService(serviceConnection); } - public void onClick(View view) { - if(view == contactListButton) - startActivity(new Intent(this, ContactListActivity.class)); - else if(view == quitButton) quit(); - } - private void quit() { new Thread() { @Override diff --git a/briar-android/src/net/sf/briar/android/contact/ContactListActivity.java b/briar-android/src/net/sf/briar/android/contact/ContactListActivity.java index ec57d89e0d..b12ba8db66 100644 --- a/briar-android/src/net/sf/briar/android/contact/ContactListActivity.java +++ b/briar-android/src/net/sf/briar/android/contact/ContactListActivity.java @@ -67,6 +67,7 @@ implements OnClickListener, DatabaseListener, ConnectionListener { adapter = new ContactListAdapter(this); ListView listView = new ListView(this); + // Give me all the width and all the unused height listView.setLayoutParams(new LayoutParams(MATCH_PARENT, WRAP_CONTENT, 1f)); listView.setAdapter(adapter); diff --git a/briar-android/src/net/sf/briar/android/contact/ContactListAdapter.java b/briar-android/src/net/sf/briar/android/contact/ContactListAdapter.java index c9720ad771..69dcecfd8e 100644 --- a/briar-android/src/net/sf/briar/android/contact/ContactListAdapter.java +++ b/briar-android/src/net/sf/briar/android/contact/ContactListAdapter.java @@ -18,9 +18,9 @@ import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; import android.widget.TextView; -public class ContactListAdapter extends ArrayAdapter<ContactListItem> { +class ContactListAdapter extends ArrayAdapter<ContactListItem> { - public ContactListAdapter(Context context) { + ContactListAdapter(Context context) { super(context, android.R.layout.simple_expandable_list_item_1, new ArrayList<ContactListItem>()); } @@ -36,10 +36,11 @@ public class ContactListAdapter extends ArrayAdapter<ContactListItem> { ImageView bulb = new ImageView(ctx); if(item.getConnected()) bulb.setImageResource(R.drawable.green_bulb); else bulb.setImageResource(R.drawable.grey_bulb); - bulb.setPadding(5, 0, 5, 0); + bulb.setPadding(5, 5, 5, 5); layout.addView(bulb); TextView name = new TextView(ctx); + // Give me all the unused width name.setLayoutParams(new LayoutParams(WRAP_CONTENT, WRAP_CONTENT, 1f)); name.setTextSize(18); name.setText(item.getName()); -- GitLab