From 433a859933130275d0f86b48cf68da9f7bdcce34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Wed, 17 Jun 2015 16:25:44 -0400 Subject: [PATCH] ui: bump to material design Refs #75022 Change-Id: I9db3858c1ab365de8572323bc19ef630da9774fd --- ring-android/app/app.iml | 4 +- ring-android/app/build.gradle | 3 - .../adapters/AccountSelectionAdapter.java | 48 ++++++- .../ring/adapters/SectionsPagerAdapter.java | 7 +- .../java/cx/ring/client/CallActivity.java | 6 +- .../java/cx/ring/client/HomeActivity.java | 134 ++++++++++++------ .../java/cx/ring/fragments/AboutFragment.java | 7 +- .../fragments/AccountWrapperFragment.java | 2 +- .../fragments/AccountsManagementFragment.java | 39 +++-- .../java/cx/ring/fragments/CallFragment.java | 2 +- .../fragments/CallableWrapperFragment.java | 2 +- .../cx/ring/fragments/DialingFragment.java | 2 +- .../cx/ring/fragments/DropActionsChoice.java | 2 +- .../cx/ring/fragments/HistoryFragment.java | 11 +- .../java/cx/ring/fragments/HomeFragment.java | 7 +- .../java/cx/ring/fragments/MenuFragment.java | 50 ++----- .../cx/ring/fragments/TransferDFragment.java | 2 +- .../java/cx/ring/loaders/AccountsLoader.java | 3 +- .../java/cx/ring/loaders/HistoryLoader.java | 2 +- .../ic_add_circle_white_48dp.png | Bin 0 -> 613 bytes .../res/drawable-hdpi/ic_add_white_24dp.png | Bin 0 -> 127 bytes .../res/drawable-hdpi/ic_error_white_24dp.png | Bin 0 -> 324 bytes .../res/drawable-hdpi/ic_group_black_48dp.png | Bin 0 -> 455 bytes .../res/drawable-hdpi/ic_home_black_48dp.png | Bin 0 -> 303 bytes .../res/drawable-hdpi/ic_info_black_48dp.png | Bin 0 -> 579 bytes .../drawable-hdpi/ic_reorder_black_24dp.png | Bin 0 -> 107 bytes .../drawable-hdpi/ic_reorder_black_36dp.png | Bin 0 -> 120 bytes .../ic_add_circle_white_48dp.png | Bin 0 -> 428 bytes .../res/drawable-mdpi/ic_add_white_24dp.png | Bin 0 -> 88 bytes .../res/drawable-mdpi/ic_error_white_24dp.png | Bin 0 -> 232 bytes .../res/drawable-mdpi/ic_group_black_48dp.png | Bin 0 -> 349 bytes .../res/drawable-mdpi/ic_home_black_48dp.png | Bin 0 -> 239 bytes .../res/drawable-mdpi/ic_info_black_48dp.png | Bin 0 -> 412 bytes .../drawable-mdpi/ic_reorder_black_24dp.png | Bin 0 -> 82 bytes .../drawable-mdpi/ic_reorder_black_36dp.png | Bin 0 -> 107 bytes .../ic_add_circle_white_48dp.png | Bin 0 -> 815 bytes .../res/drawable-xhdpi/ic_add_white_24dp.png | Bin 0 -> 97 bytes .../drawable-xhdpi/ic_error_white_24dp.png | Bin 0 -> 431 bytes .../drawable-xhdpi/ic_group_black_48dp.png | Bin 0 -> 591 bytes .../res/drawable-xhdpi/ic_home_black_48dp.png | Bin 0 -> 356 bytes .../res/drawable-xhdpi/ic_info_black_48dp.png | Bin 0 -> 766 bytes .../drawable-xhdpi/ic_reorder_black_24dp.png | Bin 0 -> 101 bytes .../drawable-xhdpi/ic_reorder_black_36dp.png | Bin 0 -> 113 bytes .../ic_add_circle_white_48dp.png | Bin 0 -> 1229 bytes .../res/drawable-xxhdpi/ic_add_white_24dp.png | Bin 0 -> 97 bytes .../drawable-xxhdpi/ic_error_white_24dp.png | Bin 0 -> 614 bytes .../drawable-xxhdpi/ic_group_black_48dp.png | Bin 0 -> 896 bytes .../drawable-xxhdpi/ic_home_black_48dp.png | Bin 0 -> 485 bytes .../drawable-xxhdpi/ic_info_black_48dp.png | Bin 0 -> 1142 bytes .../drawable-xxhdpi/ic_reorder_black_24dp.png | Bin 0 -> 113 bytes .../drawable-xxhdpi/ic_reorder_black_36dp.png | Bin 0 -> 147 bytes .../ic_add_circle_white_48dp.png | Bin 0 -> 1708 bytes .../drawable-xxxhdpi/ic_add_white_24dp.png | Bin 0 -> 102 bytes .../drawable-xxxhdpi/ic_error_white_24dp.png | Bin 0 -> 814 bytes .../drawable-xxxhdpi/ic_group_black_48dp.png | Bin 0 -> 1178 bytes .../drawable-xxxhdpi/ic_home_black_48dp.png | Bin 0 -> 589 bytes .../drawable-xxxhdpi/ic_info_black_48dp.png | Bin 0 -> 1561 bytes .../ic_reorder_black_24dp.png | Bin 0 -> 116 bytes .../ic_reorder_black_36dp.png | Bin 0 -> 127 bytes .../app/src/main/res/layout/activity_home.xml | 80 ++++++++--- .../main/res/layout/frag_accounts_list.xml | 114 +++++++-------- .../app/src/main/res/layout/frag_menu.xml | 67 --------- .../src/main/res/layout/frag_menu_header.xml | 42 ++++++ .../app/src/main/res/layout/item_account.xml | 23 ++- .../src/main/res/layout/item_account_pref.xml | 2 +- .../main/res/layout/item_account_selected.xml | 38 +++++ .../app/src/main/res/layout/item_codec.xml | 2 +- .../app/src/main/res/layout/menuheader.xml | 7 + ring-android/app/src/main/res/menu/drawer.xml | 18 +++ .../main/res/values-fr/strings_account.xml | 2 +- .../app/src/main/res/values-v21/styles.xml | 34 ++--- .../src/main/res/values/strings_account.xml | 2 +- .../app/src/main/res/values/styles.xml | 56 ++++++-- 73 files changed, 496 insertions(+), 324 deletions(-) create mode 100644 ring-android/app/src/main/res/drawable-hdpi/ic_add_circle_white_48dp.png create mode 100644 ring-android/app/src/main/res/drawable-hdpi/ic_add_white_24dp.png create mode 100644 ring-android/app/src/main/res/drawable-hdpi/ic_error_white_24dp.png create mode 100644 ring-android/app/src/main/res/drawable-hdpi/ic_group_black_48dp.png create mode 100644 ring-android/app/src/main/res/drawable-hdpi/ic_home_black_48dp.png create mode 100644 ring-android/app/src/main/res/drawable-hdpi/ic_info_black_48dp.png create mode 100644 ring-android/app/src/main/res/drawable-hdpi/ic_reorder_black_24dp.png create mode 100644 ring-android/app/src/main/res/drawable-hdpi/ic_reorder_black_36dp.png create mode 100644 ring-android/app/src/main/res/drawable-mdpi/ic_add_circle_white_48dp.png create mode 100644 ring-android/app/src/main/res/drawable-mdpi/ic_add_white_24dp.png create mode 100644 ring-android/app/src/main/res/drawable-mdpi/ic_error_white_24dp.png create mode 100644 ring-android/app/src/main/res/drawable-mdpi/ic_group_black_48dp.png create mode 100644 ring-android/app/src/main/res/drawable-mdpi/ic_home_black_48dp.png create mode 100644 ring-android/app/src/main/res/drawable-mdpi/ic_info_black_48dp.png create mode 100644 ring-android/app/src/main/res/drawable-mdpi/ic_reorder_black_24dp.png create mode 100644 ring-android/app/src/main/res/drawable-mdpi/ic_reorder_black_36dp.png create mode 100644 ring-android/app/src/main/res/drawable-xhdpi/ic_add_circle_white_48dp.png create mode 100644 ring-android/app/src/main/res/drawable-xhdpi/ic_add_white_24dp.png create mode 100644 ring-android/app/src/main/res/drawable-xhdpi/ic_error_white_24dp.png create mode 100644 ring-android/app/src/main/res/drawable-xhdpi/ic_group_black_48dp.png create mode 100644 ring-android/app/src/main/res/drawable-xhdpi/ic_home_black_48dp.png create mode 100644 ring-android/app/src/main/res/drawable-xhdpi/ic_info_black_48dp.png create mode 100644 ring-android/app/src/main/res/drawable-xhdpi/ic_reorder_black_24dp.png create mode 100644 ring-android/app/src/main/res/drawable-xhdpi/ic_reorder_black_36dp.png create mode 100644 ring-android/app/src/main/res/drawable-xxhdpi/ic_add_circle_white_48dp.png create mode 100644 ring-android/app/src/main/res/drawable-xxhdpi/ic_add_white_24dp.png create mode 100644 ring-android/app/src/main/res/drawable-xxhdpi/ic_error_white_24dp.png create mode 100644 ring-android/app/src/main/res/drawable-xxhdpi/ic_group_black_48dp.png create mode 100644 ring-android/app/src/main/res/drawable-xxhdpi/ic_home_black_48dp.png create mode 100644 ring-android/app/src/main/res/drawable-xxhdpi/ic_info_black_48dp.png create mode 100644 ring-android/app/src/main/res/drawable-xxhdpi/ic_reorder_black_24dp.png create mode 100644 ring-android/app/src/main/res/drawable-xxhdpi/ic_reorder_black_36dp.png create mode 100644 ring-android/app/src/main/res/drawable-xxxhdpi/ic_add_circle_white_48dp.png create mode 100644 ring-android/app/src/main/res/drawable-xxxhdpi/ic_add_white_24dp.png create mode 100644 ring-android/app/src/main/res/drawable-xxxhdpi/ic_error_white_24dp.png create mode 100644 ring-android/app/src/main/res/drawable-xxxhdpi/ic_group_black_48dp.png create mode 100644 ring-android/app/src/main/res/drawable-xxxhdpi/ic_home_black_48dp.png create mode 100644 ring-android/app/src/main/res/drawable-xxxhdpi/ic_info_black_48dp.png create mode 100644 ring-android/app/src/main/res/drawable-xxxhdpi/ic_reorder_black_24dp.png create mode 100644 ring-android/app/src/main/res/drawable-xxxhdpi/ic_reorder_black_36dp.png delete mode 100644 ring-android/app/src/main/res/layout/frag_menu.xml create mode 100644 ring-android/app/src/main/res/layout/frag_menu_header.xml create mode 100644 ring-android/app/src/main/res/layout/item_account_selected.xml create mode 100644 ring-android/app/src/main/res/menu/drawer.xml diff --git a/ring-android/app/app.iml b/ring-android/app/app.iml index 8535bf204..ece991d93 100644 --- a/ring-android/app/app.iml +++ b/ring-android/app/app.iml @@ -52,7 +52,7 @@ <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> - <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" /> <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" /> @@ -68,6 +68,7 @@ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex-cache" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/appcompat-v7/22.2.0/jars" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/design/22.2.0/jars" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v13/22.2.0/jars" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/22.2.0/jars" /> <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.astuetz/pagerslidingtabstrip/1.0.1/jars" /> @@ -95,6 +96,7 @@ <orderEntry type="library" exported="" name="support-annotations-22.2.0" level="project" /> <orderEntry type="library" exported="" name="support-v13-22.2.0" level="project" /> <orderEntry type="library" exported="" name="support-v4-22.2.0" level="project" /> + <orderEntry type="library" exported="" name="design-22.2.0" level="project" /> <orderEntry type="library" exported="" name="appcompat-v7-22.2.0" level="project" /> </component> </module> \ No newline at end of file diff --git a/ring-android/app/build.gradle b/ring-android/app/build.gradle index 07211289f..e1bcbff06 100644 --- a/ring-android/app/build.gradle +++ b/ring-android/app/build.gradle @@ -1,8 +1,5 @@ apply plugin: 'com.android.application' -repositories { - mavenCentral() -} dependencies { compile fileTree(dir: 'libs', include: '*.jar') compile 'com.j256.ormlite:ormlite-core:4.48' diff --git a/ring-android/app/src/main/java/cx/ring/adapters/AccountSelectionAdapter.java b/ring-android/app/src/main/java/cx/ring/adapters/AccountSelectionAdapter.java index 9b480bf96..5f3ba7e0c 100644 --- a/ring-android/app/src/main/java/cx/ring/adapters/AccountSelectionAdapter.java +++ b/ring-android/app/src/main/java/cx/ring/adapters/AccountSelectionAdapter.java @@ -83,30 +83,66 @@ public class AccountSelectionAdapter extends BaseAdapter { if (rowView == null) { LayoutInflater inflater = LayoutInflater.from(mContext); - rowView = inflater.inflate(R.layout.item_account, null); + rowView = inflater.inflate(R.layout.item_account_selected, null); entryView = new AccountView(); entryView.alias = (TextView) rowView.findViewById(R.id.account_alias); entryView.host = (TextView) rowView.findViewById(R.id.account_host); - entryView.select = (ImageView) rowView.findViewById(R.id.account_selected); + entryView.error = (ImageView) rowView.findViewById(R.id.error_indicator); rowView.setTag(entryView); } else { entryView = (AccountView) rowView.getTag(); } +/* + entryView.alias.setText(accounts.get(pos).getAlias()); + + entryView.host.setText(accounts.get(pos).getHost() + " - " + accounts.get(pos).getRegistered_state()); + // accManager.displayAccountDetails(accounts.get(pos), entryView); + entryView.error.setVisibility(View.GONE); +*/ + updateAccountView(entryView, accounts.get(pos)); + + return rowView; + } + + @Override + public View getDropDownView(int pos, View convertView, ViewGroup parent) { + View rowView = convertView; + AccountView entryView = null; + + if (rowView == null) { + LayoutInflater inflater = LayoutInflater.from(mContext); + rowView = inflater.inflate(R.layout.item_account, null); + entryView = new AccountView(); + entryView.alias = (TextView) rowView.findViewById(R.id.account_alias); + entryView.host = (TextView) rowView.findViewById(R.id.account_host); + entryView.error = (ImageView) rowView.findViewById(R.id.error_indicator); + rowView.setTag(entryView); + } else { + entryView = (AccountView) rowView.getTag(); + } +/* entryView.alias.setText(accounts.get(pos).getAlias()); entryView.host.setText(accounts.get(pos).getHost() + " - " + accounts.get(pos).getRegistered_state()); // accManager.displayAccountDetails(accounts.get(pos), entryView); if (pos == selectedAccount) { - entryView.select.setVisibility(View.VISIBLE); + entryView.error.setVisibility(View.VISIBLE); } else { - entryView.select.setVisibility(View.GONE); + entryView.error.setVisibility(View.GONE); } - +*/ + updateAccountView(entryView, accounts.get(pos)); return rowView; } + private void updateAccountView(AccountView entryView, Account acc) { + entryView.alias.setText(acc.getAlias()); + entryView.host.setText(acc.getHost() + " - " + acc.getRegistered_state()); + entryView.error.setVisibility(View.GONE); + } + public Account getAccount(String accountID) { for(Account acc : accounts) { if(acc.getAccountID().contentEquals(accountID)) @@ -121,7 +157,7 @@ public class AccountSelectionAdapter extends BaseAdapter { public class AccountView { public TextView alias; public TextView host; - public ImageView select; + public ImageView error; } public void setSelectedAccount(int pos) { diff --git a/ring-android/app/src/main/java/cx/ring/adapters/SectionsPagerAdapter.java b/ring-android/app/src/main/java/cx/ring/adapters/SectionsPagerAdapter.java index bae0414c2..b9b2d132f 100644 --- a/ring-android/app/src/main/java/cx/ring/adapters/SectionsPagerAdapter.java +++ b/ring-android/app/src/main/java/cx/ring/adapters/SectionsPagerAdapter.java @@ -34,8 +34,8 @@ package cx.ring.adapters; import java.util.ArrayList; import java.util.Locale; -import android.support.v4.app.Fragment; -import android.support.v4.app.FragmentManager; +import android.app.Fragment; +import android.app.FragmentManager; import cx.ring.R; import cx.ring.fragments.CallListFragment; import cx.ring.fragments.DialingFragment; @@ -43,9 +43,10 @@ import cx.ring.fragments.HistoryFragment; import com.astuetz.PagerSlidingTabStrip; import android.content.Context; +import android.support.v13.app.FragmentStatePagerAdapter; import android.util.Log; -public class SectionsPagerAdapter extends android.support.v4.app.FragmentStatePagerAdapter implements PagerSlidingTabStrip.IconTabProvider { +public class SectionsPagerAdapter extends FragmentStatePagerAdapter implements PagerSlidingTabStrip.IconTabProvider { private static final String TAG = SectionsPagerAdapter.class.getSimpleName(); Context mContext; diff --git a/ring-android/app/src/main/java/cx/ring/client/CallActivity.java b/ring-android/app/src/main/java/cx/ring/client/CallActivity.java index 9f2071c84..8df8c7286 100644 --- a/ring-android/app/src/main/java/cx/ring/client/CallActivity.java +++ b/ring-android/app/src/main/java/cx/ring/client/CallActivity.java @@ -35,7 +35,7 @@ package cx.ring.client; import java.util.*; -import android.support.v4.app.FragmentActivity; +import android.app.Activity; import android.util.Log; import cx.ring.R; import cx.ring.fragments.CallFragment; @@ -68,7 +68,7 @@ import android.view.View; import android.view.Window; import android.view.WindowManager; -public class CallActivity extends FragmentActivity implements IMFragment.Callbacks, CallFragment.Callbacks, CallProximityManager.ProximityDirector { +public class CallActivity extends Activity implements IMFragment.Callbacks, CallFragment.Callbacks, CallProximityManager.ProximityDirector { @SuppressWarnings("unused") static final String TAG = "CallActivity"; @@ -112,7 +112,7 @@ public class CallActivity extends FragmentActivity implements IMFragment.Callbac } mSlidingPaneLayout.setCurFragment(mCurrentCallFragment); - getSupportFragmentManager().beginTransaction().replace(R.id.ongoingcall_pane, mCurrentCallFragment) + getFragmentManager().beginTransaction().replace(R.id.ongoingcall_pane, mCurrentCallFragment) .replace(R.id.message_list_frame, mIMFragment).commit(); } diff --git a/ring-android/app/src/main/java/cx/ring/client/HomeActivity.java b/ring-android/app/src/main/java/cx/ring/client/HomeActivity.java index 7b4049c5a..9358e7ef5 100644 --- a/ring-android/app/src/main/java/cx/ring/client/HomeActivity.java +++ b/ring-android/app/src/main/java/cx/ring/client/HomeActivity.java @@ -42,7 +42,6 @@ import java.util.TimerTask; import android.app.Activity; import android.app.AlertDialog; -import android.support.v4.app.*; import cx.ring.R; import cx.ring.fragments.AboutFragment; import cx.ring.fragments.AccountsManagementFragment; @@ -62,6 +61,10 @@ import cx.ring.service.SipService; import cx.ring.views.SlidingUpPanelLayout; import cx.ring.views.SlidingUpPanelLayout.PanelSlideListener; +import android.app.Fragment; +import android.app.FragmentManager; + +import android.app.FragmentTransaction; import android.content.ComponentName; import android.content.Context; import android.content.DialogInterface; @@ -77,22 +80,31 @@ import android.preference.PreferenceManager; import android.provider.ContactsContract; import android.provider.ContactsContract.CommonDataKinds.Phone; import android.provider.ContactsContract.CommonDataKinds.SipAddress; +import android.support.design.widget.FloatingActionButton; +import android.support.design.widget.NavigationView; +import android.support.v4.app.FragmentActivity; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; +import android.support.v7.app.ActionBarDrawerToggle; +import android.support.v7.app.AppCompatActivity; +import android.support.v7.widget.Toolbar; import android.util.Log; +import android.util.TypedValue; import android.view.Gravity; import android.view.MenuItem; import android.view.View; +import android.view.ViewGroup; import android.widget.RelativeLayout; import android.widget.Toast; -public class HomeActivity extends FragmentActivity implements DialingFragment.Callbacks, AccountsManagementFragment.Callbacks, - ContactListFragment.Callbacks, CallListFragment.Callbacks, HistoryFragment.Callbacks, MenuFragment.Callbacks { +public class HomeActivity extends AppCompatActivity implements DialingFragment.Callbacks, AccountsManagementFragment.Callbacks, + ContactListFragment.Callbacks, CallListFragment.Callbacks, HistoryFragment.Callbacks, NavigationView.OnNavigationItemSelectedListener, MenuFragment.Callbacks { static final String TAG = HomeActivity.class.getSimpleName(); private ContactListFragment mContactsFragment = null; - private MenuFragment fMenu; + private NavigationView fMenu; + private MenuFragment fMenuHead = null; private boolean mBound = false; private ISipService service; @@ -103,6 +115,8 @@ public class HomeActivity extends FragmentActivity implements DialingFragment.Ca SlidingUpPanelLayout mContactDrawer; private DrawerLayout mNavigationDrawer; private ActionBarDrawerToggle mDrawerToggle; + private Toolbar toolbar; + private FloatingActionButton actionButton; private boolean isClosing = false; private Timer t = new Timer(); @@ -128,6 +142,13 @@ public class HomeActivity extends FragmentActivity implements DialingFragment.Ca bindService(intent, mConnection, Context.BIND_AUTO_CREATE); } + toolbar = (Toolbar) findViewById(R.id.main_toolbar); + setSupportActionBar(toolbar); + actionButton = (FloatingActionButton) findViewById(R.id.action_button); + + fMenu = (NavigationView) findViewById(R.id.left_drawer); + fMenu.setNavigationItemSelectedListener(this); + mContactsFragment = new ContactListFragment(); getFragmentManager().beginTransaction().replace(R.id.contacts_frame, mContactsFragment).commit(); @@ -141,12 +162,12 @@ public class HomeActivity extends FragmentActivity implements DialingFragment.Ca @Override public void onPanelSlide(View panel, float slideOffset) { if (slideOffset < 0.2) { - if (getActionBar().isShowing()) { - getActionBar().hide(); + if (getSupportActionBar().isShowing()) { + getSupportActionBar().hide(); } } else { - if (!getActionBar().isShowing()) { - getActionBar().show(); + if (!getSupportActionBar().isShowing()) { + getSupportActionBar().show(); } } } @@ -169,27 +190,23 @@ public class HomeActivity extends FragmentActivity implements DialingFragment.Ca mNavigationDrawer = (DrawerLayout) findViewById(R.id.drawer_layout); - // set a custom shadow that overlays the main content when the drawer opens - mNavigationDrawer.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START); - - getActionBar().setDisplayHomeAsUpEnabled(true); - getActionBar().setHomeButtonEnabled(true); + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + getSupportActionBar().setHomeButtonEnabled(true); mDrawerToggle = new ActionBarDrawerToggle(this, /* host Activity */ mNavigationDrawer, /* DrawerLayout object */ - R.drawable.ic_drawer, /* nav drawer image to replace 'Up' caret */ + // R.drawable.ic_drawer, /* nav drawer image to replace 'Up' caret */ R.string.drawer_open, /* "open drawer" description for accessibility */ R.string.drawer_close /* "close drawer" description for accessibility */ ) { @Override public void onDrawerClosed(View view) { - invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() + invalidateOptionsMenu(); } @Override public void onDrawerOpened(View drawerView) { - // getActionBar().setTitle(mDrawerTitle); - invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu() + invalidateOptionsMenu(); } }; @@ -203,7 +220,7 @@ public class HomeActivity extends FragmentActivity implements DialingFragment.Ca // Sync the toggle state after onRestoreInstanceState has occurred. mDrawerToggle.syncState(); if (mContactDrawer.isExpanded()) { - getActionBar().hide(); + getSupportActionBar().hide(); } } @@ -227,6 +244,29 @@ public class HomeActivity extends FragmentActivity implements DialingFragment.Ca } + public void setToolbarState(boolean double_h, int title_res) { + TypedValue tv = new TypedValue(); + if (getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) { + int abSz = TypedValue.complexToDimensionPixelSize(tv.data,getResources().getDisplayMetrics()); + ViewGroup.LayoutParams params = toolbar.getLayoutParams(); + if (double_h) { + params.height = abSz*2; + actionButton.setVisibility(View.VISIBLE); + } + else { + params.height = abSz; + actionButton.setVisibility(View.GONE); + } + toolbar.setLayoutParams(params); + toolbar.setMinimumHeight(abSz); + } + toolbar.setTitle(title_res); + } + + public FloatingActionButton getActionButton() { + return actionButton; + } + private static boolean copyAssetFolder(AssetManager assetManager, String fromAssetPath, String toPath) { try { String[] files = assetManager.list(fromAssetPath); @@ -301,9 +341,9 @@ public class HomeActivity extends FragmentActivity implements DialingFragment.Ca return; } - if (getSupportFragmentManager().getBackStackEntryCount() > 1) { + if (getFragmentManager().getBackStackEntryCount() > 1) { popCustomBackStack(); - fMenu.backToHome(); + fMenu.getMenu().findItem(R.id.menuitem_home).setChecked(true); return; } @@ -324,7 +364,7 @@ public class HomeActivity extends FragmentActivity implements DialingFragment.Ca } private void popCustomBackStack() { - FragmentManager fm = getSupportFragmentManager(); + FragmentManager fm = getFragmentManager(); FragmentManager.BackStackEntry entry = fm.getBackStackEntryAt(0); fContent = fm.findFragmentByTag(entry.getName()); for (int i = 0; i < fm.getBackStackEntryCount() - 1; ++i) { @@ -372,15 +412,23 @@ public class HomeActivity extends FragmentActivity implements DialingFragment.Ca @Override public void onServiceConnected(ComponentName className, IBinder binder) { service = ISipService.Stub.asInterface(binder); - fMenu = new MenuFragment(); fContent = new HomeFragment(); - getSupportFragmentManager().beginTransaction().replace(R.id.left_drawer, fMenu).replace(R.id.main_frame, fContent, "Home").addToBackStack("Home").commit(); + if (fMenuHead != null) + fMenu.removeHeaderView(fMenuHead.getView()); + fMenu.inflateHeaderView(R.layout.menuheader); + fMenuHead = (MenuFragment) getFragmentManager().findFragmentById(R.id.accountselector); + + getFragmentManager().beginTransaction().replace(R.id.main_frame, fContent, "Home").addToBackStack("Home").commit(); mBound = true; Log.d(TAG, "Service connected service=" + service); } @Override public void onServiceDisconnected(ComponentName arg0) { + if (fMenuHead != null) { + fMenu.removeHeaderView(fMenuHead.getView()); + fMenuHead = null; + } mBound = false; Log.d(TAG, "Service disconnected service=" + service); @@ -405,8 +453,8 @@ public class HomeActivity extends FragmentActivity implements DialingFragment.Ca switch (requestCode) { case REQUEST_CODE_PREFERENCES: case AccountsManagementFragment.ACCOUNT_EDIT_REQUEST: - if (fMenu != null) - fMenu.updateAllAccounts(); + if (fMenuHead != null) + fMenuHead.updateAllAccounts(); break; case REQUEST_CODE_CALL: if (resultCode == CallActivity.RESULT_FAILURE) { @@ -438,17 +486,17 @@ public class HomeActivity extends FragmentActivity implements DialingFragment.Ca @Override public void onCallContact(final CallContact c) { - if (fMenu.getSelectedAccount() == null) { + if (fMenuHead.getSelectedAccount() == null) { createAccountDialog().show(); return; } - if (!fMenu.getSelectedAccount().isRegistered()) { + if (!fMenuHead.getSelectedAccount().isRegistered()) { createNotRegisteredDialog().show(); return; } - getActionBar().show(); + getSupportActionBar().show(); Thread launcher = new Thread(new Runnable() { final String[] CONTACTS_PHONES_PROJECTION = new String[]{Phone.NUMBER, Phone.TYPE}; @@ -459,7 +507,7 @@ public class HomeActivity extends FragmentActivity implements DialingFragment.Ca Bundle args = new Bundle(); args.putString(SipCall.ID, Integer.toString(Math.abs(new Random().nextInt()))); - args.putParcelable(SipCall.ACCOUNT, fMenu.getSelectedAccount()); + args.putParcelable(SipCall.ACCOUNT, fMenuHead.getSelectedAccount()); args.putInt(SipCall.STATE, SipCall.state.CALL_STATE_NONE); args.putInt(SipCall.TYPE, SipCall.direction.CALL_TYPE_OUTGOING); @@ -492,7 +540,7 @@ public class HomeActivity extends FragmentActivity implements DialingFragment.Ca @Override public void onCallHistory(HistoryEntry to) { - Account usedAccount = fMenu.retrieveAccountById(to.getAccountID()); + Account usedAccount = fMenuHead.retrieveAccountById(to.getAccountID()); if (usedAccount == null) { createAccountDialog().show(); @@ -519,14 +567,14 @@ public class HomeActivity extends FragmentActivity implements DialingFragment.Ca @Override public void onCallDialed(String to) { - Account usedAccount = fMenu.getSelectedAccount(); + Account usedAccount = fMenuHead.getSelectedAccount(); if (usedAccount == null) { createAccountDialog().show(); return; } - if (fMenu.getSelectedAccount().isRegistered()) { + if (usedAccount.isRegistered() || usedAccount.isIP2IP()) { Bundle args = new Bundle(); args.putString(SipCall.ID, Integer.toString(Math.abs(new Random().nextInt()))); args.putParcelable(SipCall.ACCOUNT, usedAccount); @@ -615,37 +663,39 @@ public class HomeActivity extends FragmentActivity implements DialingFragment.Ca } @Override - public void onSectionSelected(int pos) { - + public boolean onNavigationItemSelected(MenuItem pos) { + pos.setChecked(true); mNavigationDrawer.closeDrawers(); - switch (pos) { - case 0: + switch (pos.getItemId()) { + case R.id.menuitem_home: if (fContent instanceof HomeFragment) break; - if (getSupportFragmentManager().getBackStackEntryCount() == 1) + if (getFragmentManager().getBackStackEntryCount() == 1) break; popCustomBackStack(); break; - case 1: + case R.id.menuitem_accounts: if (fContent instanceof AccountsManagementFragment) break; fContent = new AccountsManagementFragment(); - getSupportFragmentManager().beginTransaction().setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).replace(R.id.main_frame, fContent, "Accounts").addToBackStack("Accounts").commit(); + getFragmentManager().beginTransaction().setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).replace(R.id.main_frame, fContent, "Accounts").addToBackStack("Accounts").commit(); break; - case 2: + case R.id.menuitem_about: if (fContent instanceof AboutFragment) break; fContent = new AboutFragment(); - getSupportFragmentManager().beginTransaction().setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).replace(R.id.main_frame, fContent, "About").addToBackStack("About").commit(); + getFragmentManager().beginTransaction().setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).replace(R.id.main_frame, fContent, "About").addToBackStack("About").commit(); break; + default: + return false; } - + return true; } } diff --git a/ring-android/app/src/main/java/cx/ring/fragments/AboutFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/AboutFragment.java index be1037c7c..27605be26 100644 --- a/ring-android/app/src/main/java/cx/ring/fragments/AboutFragment.java +++ b/ring-android/app/src/main/java/cx/ring/fragments/AboutFragment.java @@ -2,7 +2,7 @@ package cx.ring.fragments; import android.content.pm.PackageManager; import android.os.Bundle; -import android.support.v4.app.Fragment; +import android.app.Fragment; import android.text.Html; import android.text.method.LinkMovementMethod; import android.view.LayoutInflater; @@ -10,13 +10,14 @@ import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import cx.ring.R; +import cx.ring.client.HomeActivity; public class AboutFragment extends Fragment { @Override public void onResume() { super.onResume(); - getActivity().getActionBar().setTitle(R.string.menu_item_about); + ((HomeActivity)getActivity()).setToolbarState(false, R.string.menu_item_about); } @Override @@ -32,7 +33,7 @@ public class AboutFragment extends Fragment { } TextView link = (TextView) inflatedView.findViewById(R.id.web_site); - String linkText = "<a href='http://sflphone.org/'>" + getResources().getString(R.string.web_site) + "</a>"; + String linkText = "<a href='http://ring.cx'>" + getResources().getString(R.string.web_site) + "</a>"; link.setText(Html.fromHtml(linkText)); link.setMovementMethod(LinkMovementMethod.getInstance()); diff --git a/ring-android/app/src/main/java/cx/ring/fragments/AccountWrapperFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/AccountWrapperFragment.java index 61727084e..80257f380 100644 --- a/ring-android/app/src/main/java/cx/ring/fragments/AccountWrapperFragment.java +++ b/ring-android/app/src/main/java/cx/ring/fragments/AccountWrapperFragment.java @@ -36,7 +36,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; -import android.support.v4.app.Fragment; +import android.app.Fragment; import android.util.Log; import cx.ring.interfaces.AccountsInterface; import cx.ring.service.ConfigurationManagerCallback; diff --git a/ring-android/app/src/main/java/cx/ring/fragments/AccountsManagementFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/AccountsManagementFragment.java index 09da403ca..7384c9a3f 100644 --- a/ring-android/app/src/main/java/cx/ring/fragments/AccountsManagementFragment.java +++ b/ring-android/app/src/main/java/cx/ring/fragments/AccountsManagementFragment.java @@ -35,24 +35,33 @@ package cx.ring.fragments; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.app.Activity; +import android.app.LoaderManager; +import android.content.AsyncTaskLoader; import android.content.Context; import android.content.Intent; +import android.content.Loader; +import android.graphics.PorterDuff; import android.os.Bundle; import android.os.RemoteException; -import android.support.v4.app.LoaderManager; -import android.support.v4.content.AsyncTaskLoader; -import android.support.v4.content.Loader; +import android.support.design.widget.FloatingActionButton; +import android.support.v7.app.ActionBar; +import android.support.v7.widget.*; +import android.support.v7.widget.Toolbar; import android.util.Log; +import android.util.TypedValue; import android.view.*; import android.view.View.OnClickListener; import android.widget.*; import android.widget.AdapterView.OnItemClickListener; + import cx.ring.R; import cx.ring.client.AccountEditionActivity; import cx.ring.client.AccountWizard; +import cx.ring.client.HomeActivity; import cx.ring.loaders.AccountsLoader; import cx.ring.loaders.LoaderConstants; import cx.ring.model.account.Account; +import cx.ring.model.account.AccountDetailBasic; import cx.ring.service.ISipService; import cx.ring.views.dragsortlv.DragSortListView; @@ -60,7 +69,7 @@ import java.io.File; import java.util.ArrayList; public class AccountsManagementFragment extends AccountWrapperFragment implements LoaderManager.LoaderCallbacks<Bundle> { - static final String TAG = "AccountManagementFragment"; + static final String TAG = "AccountManagementFrag"; static final String DEFAULT_ACCOUNT_ID = "IP2IP"; static final int ACCOUNT_CREATE_REQUEST = 1; public static final int ACCOUNT_EDIT_REQUEST = 2; @@ -138,7 +147,7 @@ public class AccountsManagementFragment extends AccountWrapperFragment implement @Override public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { View inflatedView = inflater.inflate(R.layout.frag_accounts_list, parent, false); - ((ListView)inflatedView.findViewById(R.id.accounts_list)).setAdapter(mAccountsAdapter); + ((ListView) inflatedView.findViewById(R.id.accounts_list)).setAdapter(mAccountsAdapter); return inflatedView; } @@ -179,7 +188,16 @@ public class AccountsManagementFragment extends AccountWrapperFragment implement public void onResume() { super.onResume(); accountsLoader.onContentChanged(); - getActivity().getActionBar().setTitle(R.string.menu_item_accounts); + ((HomeActivity) getActivity()).setToolbarState(true, R.string.menu_item_accounts); + FloatingActionButton btn = ((HomeActivity) getActivity()).getActionButton(); + btn.setImageResource(R.drawable.ic_add_white_24dp); + btn.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent().setClass(getActivity(), AccountWizard.class); + startActivityForResult(intent, ACCOUNT_CREATE_REQUEST); + } + }); } @Override @@ -287,6 +305,7 @@ public class AccountsManagementFragment extends AccountWrapperFragment implement rowView = inflater.inflate(R.layout.item_account_pref, null); entryView = new AccountView(); + entryView.handle = (ImageView) rowView.findViewById(R.id.drag_handle); entryView.alias = (TextView) rowView.findViewById(R.id.account_alias); entryView.host = (TextView) rowView.findViewById(R.id.account_host); entryView.enabled = (CheckBox) rowView.findViewById(R.id.account_checked); @@ -300,15 +319,18 @@ public class AccountsManagementFragment extends AccountWrapperFragment implement if (item.isIP2IP()) { entryView.host.setText(item.getRegistered_state()); entryView.enabled.setVisibility(View.GONE); + entryView.handle.setVisibility(View.INVISIBLE); } else { - entryView.host.setText(item.getHost() + " - " + item.getRegistered_state()); + if (item.isSip()) + entryView.host.setText(item.getHost() + " - " + item.getRegistered_state()); + else + entryView.host.setText(item.getBasicDetails().getDetailString(AccountDetailBasic.CONFIG_ACCOUNT_USERNAME)); entryView.enabled.setChecked(item.isEnabled()); entryView.enabled.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { item.setEnabled(!item.isEnabled()); - try { mCallbacks.getService().setAccountDetails(item.getAccountID(), item.getDetails()); } catch (RemoteException e) { @@ -327,6 +349,7 @@ public class AccountsManagementFragment extends AccountWrapperFragment implement * ******************* */ public class AccountView { + public ImageView handle; public TextView alias; public TextView host; public CheckBox enabled; diff --git a/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java index b2b24063e..24bd94f8d 100644 --- a/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java +++ b/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java @@ -32,6 +32,7 @@ package cx.ring.fragments; import android.app.Activity; +import android.app.FragmentManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -46,7 +47,6 @@ import android.os.Bundle; import android.os.PowerManager; import android.os.PowerManager.WakeLock; import android.os.RemoteException; -import android.support.v4.app.FragmentManager; import android.util.FloatMath; import android.util.Log; import android.view.*; diff --git a/ring-android/app/src/main/java/cx/ring/fragments/CallableWrapperFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/CallableWrapperFragment.java index 53ccc01db..eb0a6328b 100644 --- a/ring-android/app/src/main/java/cx/ring/fragments/CallableWrapperFragment.java +++ b/ring-android/app/src/main/java/cx/ring/fragments/CallableWrapperFragment.java @@ -36,7 +36,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; -import android.support.v4.app.Fragment; +import android.app.Fragment; import android.util.Log; import cx.ring.interfaces.CallInterface; import cx.ring.model.Conference; diff --git a/ring-android/app/src/main/java/cx/ring/fragments/DialingFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/DialingFragment.java index 7a634f98e..71425d431 100644 --- a/ring-android/app/src/main/java/cx/ring/fragments/DialingFragment.java +++ b/ring-android/app/src/main/java/cx/ring/fragments/DialingFragment.java @@ -33,7 +33,7 @@ package cx.ring.fragments; import java.util.Locale; -import android.support.v4.app.Fragment; +import android.app.Fragment; import cx.ring.R; import cx.ring.service.ISipService; import cx.ring.views.ClearableEditText; diff --git a/ring-android/app/src/main/java/cx/ring/fragments/DropActionsChoice.java b/ring-android/app/src/main/java/cx/ring/fragments/DropActionsChoice.java index 5e09f2353..9dd2ebc72 100644 --- a/ring-android/app/src/main/java/cx/ring/fragments/DropActionsChoice.java +++ b/ring-android/app/src/main/java/cx/ring/fragments/DropActionsChoice.java @@ -31,7 +31,7 @@ package cx.ring.fragments; -import android.support.v4.app.DialogFragment; +import android.app.DialogFragment; import cx.ring.R; import android.app.AlertDialog; diff --git a/ring-android/app/src/main/java/cx/ring/fragments/HistoryFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/HistoryFragment.java index 7a04f0a35..c7221b3c7 100644 --- a/ring-android/app/src/main/java/cx/ring/fragments/HistoryFragment.java +++ b/ring-android/app/src/main/java/cx/ring/fragments/HistoryFragment.java @@ -34,10 +34,10 @@ import java.util.ArrayList; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -import android.support.v4.app.ListFragment; -import android.support.v4.app.LoaderManager; -import android.support.v4.content.AsyncTaskLoader; -import android.support.v4.content.Loader; +import android.app.ListFragment; +import android.app.LoaderManager; +import android.content.AsyncTaskLoader; +import android.content.Loader; import android.view.*; import cx.ring.R; import cx.ring.adapters.ContactPictureTask; @@ -62,7 +62,8 @@ import android.widget.ImageButton; import android.widget.ListAdapter; import android.widget.TextView; -public class HistoryFragment extends ListFragment implements LoaderManager.LoaderCallbacks<ArrayList<HistoryEntry>> { +public class HistoryFragment extends ListFragment implements LoaderManager.LoaderCallbacks<ArrayList<HistoryEntry>> +{ private static final String TAG = HistoryFragment.class.getSimpleName(); diff --git a/ring-android/app/src/main/java/cx/ring/fragments/HomeFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/HomeFragment.java index b89841d07..b0c58d865 100644 --- a/ring-android/app/src/main/java/cx/ring/fragments/HomeFragment.java +++ b/ring-android/app/src/main/java/cx/ring/fragments/HomeFragment.java @@ -30,12 +30,15 @@ */ package cx.ring.fragments; -import android.support.v4.app.Fragment; import cx.ring.R; import cx.ring.adapters.SectionsPagerAdapter; +import cx.ring.client.HomeActivity; + import com.astuetz.PagerSlidingTabStrip; import android.app.Activity; +import android.app.Fragment; + import android.content.Intent; import android.os.Bundle; import android.support.v4.view.ViewPager; @@ -55,7 +58,7 @@ public class HomeFragment extends Fragment { @Override public void onResume() { super.onResume(); - getActivity().getActionBar().setTitle(R.string.menu_item_home); + ((HomeActivity)getActivity()).setToolbarState(false, R.string.app_name); } @Override diff --git a/ring-android/app/src/main/java/cx/ring/fragments/MenuFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/MenuFragment.java index d7653d862..42bc78648 100644 --- a/ring-android/app/src/main/java/cx/ring/fragments/MenuFragment.java +++ b/ring-android/app/src/main/java/cx/ring/fragments/MenuFragment.java @@ -31,18 +31,17 @@ package cx.ring.fragments; import android.app.Activity; +import android.app.LoaderManager; +import android.content.AsyncTaskLoader; import android.content.Intent; +import android.content.Loader; import android.os.Bundle; import android.os.RemoteException; -import android.support.v4.app.LoaderManager; -import android.support.v4.content.AsyncTaskLoader; -import android.support.v4.content.Loader; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.*; -import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemSelectedListener; import cx.ring.R; import cx.ring.adapters.AccountSelectionAdapter; @@ -63,20 +62,11 @@ public class MenuFragment extends AccountWrapperFragment implements LoaderManage AccountSelectionAdapter mAccountAdapter; private Spinner spinnerAccounts; private Callbacks mCallbacks = sDummyCallbacks; - - private ListView sections; - private static Callbacks sDummyCallbacks = new Callbacks() { - @Override public ISipService getService() { return null; } - - @Override - public void onSectionSelected(int pos) { - - } }; public Account retrieveAccountById(String accountID) { @@ -90,11 +80,7 @@ public class MenuFragment extends AccountWrapperFragment implements LoaderManage } public interface Callbacks { - - public ISipService getService(); - - public void onSectionSelected(int pos); - + ISipService getService(); } @Override @@ -140,20 +126,7 @@ public class MenuFragment extends AccountWrapperFragment implements LoaderManage @Override public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { - View inflatedView = inflater.inflate(R.layout.frag_menu, parent, false); - - ArrayAdapter<String> paramAdapter = new ArrayAdapter<String>(getActivity(), R.layout.item_menu, getResources().getStringArray( - R.array.menu_items_param)); - sections = (ListView) inflatedView.findViewById(R.id.listView); - sections.setAdapter(paramAdapter); - backToHome(); - sections.setOnItemClickListener(new OnItemClickListener() { - - @Override - public void onItemClick(AdapterView<?> arg0, View selected, int pos, long arg3) { - mCallbacks.onSectionSelected(pos); - } - }); + View inflatedView = inflater.inflate(R.layout.frag_menu_header, parent, false); spinnerAccounts = (Spinner) inflatedView.findViewById(R.id.account_selection); mAccountAdapter = new AccountSelectionAdapter(getActivity(), new ArrayList<Account>()); @@ -162,8 +135,9 @@ public class MenuFragment extends AccountWrapperFragment implements LoaderManage @Override public void onItemSelected(AdapterView<?> arg0, View view, int pos, long arg3) { + Log.w(TAG, "onItemSelected -> setSelectedAccount" + pos); mAccountAdapter.setSelectedAccount(pos); - view.findViewById(R.id.account_selected).setVisibility(View.GONE); + //view.findViewById(R.id.account_selected).setVisibility(View.GONE); try { mCallbacks.getService().setAccountOrder(mAccountAdapter.getAccountOrder()); } catch (RemoteException e) { @@ -173,6 +147,7 @@ public class MenuFragment extends AccountWrapperFragment implements LoaderManage @Override public void onNothingSelected(AdapterView<?> arg0) { + Log.w(TAG, "onNothingSelected -1"); mAccountAdapter.setSelectedAccount(-1); } }); @@ -191,6 +166,8 @@ public class MenuFragment extends AccountWrapperFragment implements LoaderManage } public Account getSelectedAccount() { + Log.w(TAG, "getSelectedAccount " + mAccountAdapter.getSelectedAccount().getAccountID()); + return mAccountAdapter.getSelectedAccount(); } @@ -207,6 +184,8 @@ public class MenuFragment extends AccountWrapperFragment implements LoaderManage @Override public void accountStateChanged(String accoundID, String state, int code) { + Log.w(TAG, "accountStateChanged " + accoundID + " " + state); + if (mAccountAdapter != null) mAccountAdapter.updateAccount(accoundID, state, code); } @@ -222,6 +201,7 @@ public class MenuFragment extends AccountWrapperFragment implements LoaderManage public void onLoadFinished(Loader<Bundle> loader, Bundle data) { mAccountAdapter.removeAll(); ArrayList<Account> accounts = data.getParcelableArrayList(AccountsLoader.ACCOUNTS); + accounts.add((Account)data.getParcelable(AccountsLoader.ACCOUNT_IP2IP)); mAccountAdapter.addAll(accounts); } @@ -230,8 +210,4 @@ public class MenuFragment extends AccountWrapperFragment implements LoaderManage } - public void backToHome() { - sections.setItemChecked(0, true); - } - } diff --git a/ring-android/app/src/main/java/cx/ring/fragments/TransferDFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/TransferDFragment.java index 9d51c78ca..cb331defb 100644 --- a/ring-android/app/src/main/java/cx/ring/fragments/TransferDFragment.java +++ b/ring-android/app/src/main/java/cx/ring/fragments/TransferDFragment.java @@ -36,7 +36,7 @@ import java.util.ArrayList; import java.util.List; import android.app.Dialog; -import android.support.v4.app.DialogFragment; +import android.app.DialogFragment; import cx.ring.R; import cx.ring.loaders.ContactsLoader; import cx.ring.model.Conference; diff --git a/ring-android/app/src/main/java/cx/ring/loaders/AccountsLoader.java b/ring-android/app/src/main/java/cx/ring/loaders/AccountsLoader.java index 0f9eb3900..962fe0205 100644 --- a/ring-android/app/src/main/java/cx/ring/loaders/AccountsLoader.java +++ b/ring-android/app/src/main/java/cx/ring/loaders/AccountsLoader.java @@ -35,10 +35,10 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Map; -import android.support.v4.content.AsyncTaskLoader; import cx.ring.model.account.Account; import cx.ring.service.ISipService; +import android.content.AsyncTaskLoader; import android.content.Context; import android.os.Bundle; import android.os.RemoteException; @@ -78,6 +78,7 @@ public class AccountsLoader extends AsyncTaskLoader<Bundle> { if (id.contentEquals(ACCOUNT_IP2IP)) { details = (HashMap<String, String>) service.getAccountDetails(id); IP2IP = new Account(ACCOUNT_IP2IP, details, new ArrayList<Map<String, String>>()); // Empty credentials + //accounts.add(IP2IP); continue; } details = (Map<String, String>) service.getAccountDetails(id); diff --git a/ring-android/app/src/main/java/cx/ring/loaders/HistoryLoader.java b/ring-android/app/src/main/java/cx/ring/loaders/HistoryLoader.java index 5d878aa47..b6712ea9f 100644 --- a/ring-android/app/src/main/java/cx/ring/loaders/HistoryLoader.java +++ b/ring-android/app/src/main/java/cx/ring/loaders/HistoryLoader.java @@ -31,10 +31,10 @@ package cx.ring.loaders; +import android.content.AsyncTaskLoader; import android.content.Context; import android.database.Cursor; import android.provider.ContactsContract; -import android.support.v4.content.AsyncTaskLoader; import cx.ring.history.HistoryCall; import cx.ring.history.HistoryEntry; import cx.ring.history.HistoryManager; diff --git a/ring-android/app/src/main/res/drawable-hdpi/ic_add_circle_white_48dp.png b/ring-android/app/src/main/res/drawable-hdpi/ic_add_circle_white_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..de713bc3abda0aab76b84bdcfdf38d6a0d0fc194 GIT binary patch literal 613 zcmV-r0-F7aP)<h;3K|Lk000e1NJLTq002k;002k`1ONa4|Kxkj0006kNkl<ZcmeI& z!AcuJ7{Kwl7^`VKWgGEPYKUU19);%MQz+;~$wRbI3++h_t<c^SJropH4TexcA0gx( zmf+3Zi2t5@*vahd%<LZa|D6|pFbNy-jVQ`%MMad^q(z$^Ljocq0*3Tx(_({pgx=^p zRAZkG5wb$=+2f6U&?;9vquPW^8umbIJfKsD74x7aevzg#7EOY-c_eLPnr1+=e8W^n zl+uD0@G;pnuhW1${$jd5o-Sx19Y;c{=zwPNvDFQw<e;zE>~m7kHn#ha1hm8>wi{DZ z2mQoF-&H|tB<jCslhsfIJvam1seo3&83^jrL03*e7t=sBo}GdwcyiD_I0eD39Mo|R zx|M;-M9x7^%*BH?!8r)l<3X)VK!@?5b|#>ccu+4BP&XblM3zV~vIg;>AQR9i9u#E) z3iAuf|B+?=q0ax;zMTo^IB&0xgLu$JCZPB6p!vN0{1Dtb2l)sYXwNxlM-HknaSDp4 z%0Yrlr=WAhG*H7S=<RfnpyLeWBUC^ujzBLgtAPY(xabt23R+~0?E*Y?kf4d}wvzto z`30MOLL>#1xW-n$nMn>3ROn-)Ka}-X3w;ZmYMSLsg&V_%RZhE}DshCVJ~Crwf!AbA z+5)yrt~hJ_K))AG@ysuQ8{DCjPu<>{yv_v^REs!g+5SZWk6msFk@bYn4pr@o1R68P zI)|LlWx$A#kP!pA9CN@sUOBmHp)m!h02QErAgUa1K?_5H00000NkvXXu0mjf=3^96 literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-hdpi/ic_add_white_24dp.png b/ring-android/app/src/main/res/drawable-hdpi/ic_add_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..694179bd46b685e55da1b4dde2575bde0b2bfd64 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K;o2QFoh{y5d1PRu~4CX)Hf7s8+ zA**4&;-Ni<Nsp9CmcYrA{E~7E(j^SecN!&rcQW#p7<EL&N&C7lX1jPoAxre%;sgt3 ZhDJ{jm3_gFp8-u|@O1TaS?83{1OSN1BfbCt literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-hdpi/ic_error_white_24dp.png b/ring-android/app/src/main/res/drawable-hdpi/ic_error_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..69cbb1e0bd3807d27f4197a9328467df8397e169 GIT binary patch literal 324 zcmV-K0lWT*P)<h;3K|Lk000e1NJLTq001Na001Ni1ONa4O9@aD0003CNkl<ZNXO;X zL5jjK6vpu|>g<Lx*HU!hqA+(UBA&ovg*n0?%rQ!DB5mpg+RfjULfRxI4_*1K!;j?U zy+o<^3!khgsL=HEXetgYnZ+UB?6_b{%a$aR`9b4LP5Ky_@JmPvCVu9h(40I};BIa? zx@!}g)P7Ss8mcWf$j-G|DW#m$X54-k5!4P^l$Cq`UI-Q@REVM6geoyqnvfPljS2N) zsCyCgw4+r>Gbr{!4DC&5DTe055otv=(oBcbwiQ9yc={9S=wqGvvb{)YG_-cTkwp}f z`yT&OF!RTU{~tMq?Z(U8YgIoe@jCRcP1rd4N|RY{%7e{VkW<po(a}({XFh7bcgPiP W!Gv}pi0nZC0000<MNUMnLSTZ<(UNlj literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-hdpi/ic_group_black_48dp.png b/ring-android/app/src/main/res/drawable-hdpi/ic_group_black_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..5a8b5d05e2b2ec602698111b2bf264db2a46aa6f GIT binary patch literal 455 zcmV;&0XY7NP)<h;3K|Lk000e1NJLTq002k;002k`1ONa4|Kxkj0004wNkl<ZcmeIs z!O9Y06o>K0O|4qhq9EGDM|=qFYF8vSHF^zQK;3~?5kakTlj$AQB4`sS7Oo2yrCvd% zQ$$YE$=#UK_;Naf6rA6G`|!R8=bUrSxqnlICOxL4teDUxw)A#YM##?IaLLe{)cJ~# zU&3{LZ&%GdpKZyJzPG6`LiX&nzPD*2fz|ZAMGpzAZRz!<NMP?Ry<Un0wzTwmE9D2u zUT=Z~_RiAlb&<dxTY9}13G9Zxw|R@~*(+<Wcgz>0U<)qld%Ie}7fY_0dV^zzx##;F z*?WuIboj{k%|7siNZ&i>{ugIx(BdfrW+bdPOPJE9LyHEdDRzehQS<>PY4C_K64;oB z#GK$yntW6Bg|5<Ofhe}1%@y(@(qJDDF+~1y1M2L$r|5Go@EkGj8Rz-k3tgXym?PNt ziJNSz@-y7$#iU3{TXBnRFO@xTj?YMmn{$@TU1bkEKuX?yGMAM-Fhfe-gv=>r53G@r x_k&DD*#lDk)bIO2evlt@(1V<F&N=4}<QK^3roV~hzk>h(002ovPDHLkV1g%=-gy83 literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-hdpi/ic_home_black_48dp.png b/ring-android/app/src/main/res/drawable-hdpi/ic_home_black_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..2e86cc2557d602e22c29bf90ff3cd9b76c86bc6d GIT binary patch literal 303 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhawzInPhhEy=Vow70Tu!9I|c%#we zRg9M#vkY8k7=^U&Ht=1+cDYe1V2w|s9SaLj^TVd&_GdqoN#Dr$$=zdk%p~Ss?hQ^| zeU^h$r^$Xe;89~yw7^Jq{So#2l8`48JAXVnGSTbHnIq=szJxsJY~AtrP-n`#$WHkf z%gHAWxczx_Y=ZegjW14<O%DdG-x4XTQ~G2AkeOcsVm_JyWTyXG!#QnN!6d(c2d5&< z94AUU-(q3i9O4&X;QbT}Lv*u<Ux2;$Ul!ps$rrlE9r=nb$o})4&@A&rf!*>1kUOFI fTfgBkiO*~+jBK<YrTzH_3;_mDS3j3^P6<r_yR?0? literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-hdpi/ic_info_black_48dp.png b/ring-android/app/src/main/res/drawable-hdpi/ic_info_black_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..a81eeb9ee7ef8ab1662b5b6bc88cf74912e4cb5c GIT binary patch literal 579 zcmV-J0=)f+P)<h;3K|Lk000e1NJLTq002k;002k`1ONa4|Kxkj0006CNkl<ZcmeI! zy-HhQ9LMqRVth&Cl+%cpQbQD5brhPxt5DEI$wjnK3+<$aR%kaxhl0XUgCUgAO9<IR z2yV@Z`0v`~Ij_%4hV%K|z!#pJ@F$ncO|2qZG-%SH&yawCA$>YDX|Txx7F9T)MSz5C z%me$p#<(@Ec}8Mx!WA`)S?3W+u@<Xnx6Dr@!_HYkqaB`*j2lr$i&?%Rns!Wqj27_` zjl1C$8F>6bG_Q+CN{iWZ6iFpgn8im7?Un+GeL)QF6AA4ghWDNXmU%KBG@?RmKM)K1 zMojBSqWw=2twt=5)`ISdVGXesBvgrXZ8hkU2o;{K22Jn?b%0n667~qyLM-o&5Jdv( zL4TP?X$x_%4U`&Af{svXIte;OspBN5jZz=6{@DvXl!i`%1}Ftig2q!9G`&wY{XgoC zlb|+AO(#JoC^eh}9ip`9B<LMV3k24KLeCF)upZ<SYTtU$E}<$+tOf;?iEw2#=z>T! zt3hvwp=B+|Cze%9K`*Qj(>Y>cXT-L|$au~Wj|A$*gSJWNv(cQ7Bv#<YSk5nINTEd6 zNX~DHq~y^xkW(gu61SQkt4Kx#j<w}{U<NJf8vd7tY@<<y?-^oVIKxA`8uzJke5x2z z<ubtu7jVG}#(C^<$2j72_t~Y4Me}TM#3^lh3>Y(JK#w*j9P*Yqa=F};`Uf%+Z6V(b RSUCUy002ovPDHLkV1jt6`k4R# literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-hdpi/ic_reorder_black_24dp.png b/ring-android/app/src/main/res/drawable-hdpi/ic_reorder_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..142d71505c8c1a4855394adf3a392990224b3ecf GIT binary patch literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K;k*AAeNCjguLt~%;myCqei3UE2 xXAG?WCo@WCqzOEYJIu0pqnT7TjNo!(WLRe8?4Thc6$sSL;OXk;vd$@?2>^ks8BYKJ literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-hdpi/ic_reorder_black_36dp.png b/ring-android/app/src/main/res/drawable-hdpi/ic_reorder_black_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..b43993193ca61faa1d66676deb75e99aefdfc2ee GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^W+2SL0wmRZ7KH&Rdrud~kch)?FFW!wDDbcxoE*aG zaa>a4!Sx9OX?_m!XVn<^SDkrw_2-QfS@(W?ym58DVpd?cRA6`1m5!(@i`Z_g6Tfcn T<?`JVXcU8|tDnm{r-UW|274)r literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-mdpi/ic_add_circle_white_48dp.png b/ring-android/app/src/main/res/drawable-mdpi/ic_add_circle_white_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..4d1cbca8711dc5ce4fbbfb79d93e7bfb4a6c8a34 GIT binary patch literal 428 zcmV;d0aN~oP)<h;3K|Lk000e1NJLTq001xm001xu1ONa4{R=S+0004VNkl<ZcmeI# zziPrz6oBy<<4`wI9BlP16nzk(4nBu}9za`Hiv(<+KyVSE&mq2mqDwXHYO;J?x?Pi- z+#H00-&w^UB!PR6b?-lfO^YE*ws-^tcx+iRpoxv88{H3TOgIwOffuUgK$$rKx_n$p zCP0^O;^xsw2ITl4X)aD&AkQZzt;xp$a{9lIARImLPMTaD&?RlpQ9zj=(srg84$O(p z`kUxxVL**Q1n_yh4opA<fbliJ<|qd2$*4dJ!~kfhz)%$EtH4qeSg62O6xgVMhnf|0 z)J`f8hywl%fEzy|`ImhA&vYOP^i-fJ3e;7=<{$>_$f$tDs~9l4ejZeX4x9^>up`qI z0jA++atV*LeNhMpEIOpEt-E-+r0ESy2RN)TZACWL<=2o{@eud=?%*0coNTfMq{BJE zm(w;`p^D7#(RE=;!F&mPV$7bfc8sX#mO%a3H0ZNn!wDas6B`!vsFN{YW2NQ}=;s$} WBYI%WOI-T^0000<MNUMnLSTZQ+PFFZ literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-mdpi/ic_add_white_24dp.png b/ring-android/app/src/main/res/drawable-mdpi/ic_add_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..3856041d702e80237afa394e0900d507f67e0a8f GIT binary patch literal 88 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1c~2L|5R22v2@<RZALKdQOdkZb la0j>_&aj!VDzSo@fq7N>%r!;1bAd`3JYD@<);T3K0RTZ}7R&$u literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-mdpi/ic_error_white_24dp.png b/ring-android/app/src/main/res/drawable-mdpi/ic_error_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..ca148fc7ca20a34ecf4aba8fa0245637046ded4f GIT binary patch literal 232 zcmV<E02lv>P)<h;3K|Lk000e1NJLTq000;O000;W1ONa4N`Cco00025Nkl<ZILp1# zO$viB5QgEwh2F2AR20wDg3voCdL$)i4-q$Sm(l!apy0Ruo-jj3<mQmkFrwJlPz=;$ zXZ0sv?5q_2a>9pDS`rt8>j14g%vJK^s@CixA{JOk4QTA=JOC;K#wgGmprXKRz!nAc zA3zb4$$%jWbOzK>BbED)TQ7myeVhoz<v<Vnn%dL)+jrh!^75RwhzL20Q&!F}2a;0J iGo#T=bd-lxZ^;jJWN&!Rf}P|50000<MNUMnLSTYM++#8T literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-mdpi/ic_group_black_48dp.png b/ring-android/app/src/main/res/drawable-mdpi/ic_group_black_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..c2e9ffea1da3e3a7e4194e422487a2871be2b15e GIT binary patch literal 349 zcmV-j0iyniP)<h;3K|Lk000e1NJLTq001xm001xu1ONa4{R=S+0003bNkl<ZcmeIs zze>YU6vy!|*e2o&_@}6=FQRWCx;p95Xz48aD1v(@@db3MZKP@jR~>W<LP3Kl$3XBB z%OxiXh*<9DH-1UZ#c`ae<`K|mOu~>39+PJ25|Y@vuEhw+ZNw6J%R~iT<(c1`aZNM# z`lzVu0>rXC)4NJn^%2W1O%Ii>8Y7m)rYA~QCBJ=Oh*)-^_p&;OWxIMW%jXuE*pP<a z%WH9i<QB4^_iB6&81S0ziZ)HXJO9ZX8ywRkBIYAq%pE<BSWnAOJG@VHg~vAMBnbAs zamE%N7@K@ryG4V2o)Ppt(PoBkhlSl(B}6K0z>0a;eNoRW@`zO21M_48r30r(jh&EL vQ#$a1)L2Z$S2`dyr+x1Z{QUvPai+u<06T(#xSxZA00000NkvXXu0mjfE$o@U literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-mdpi/ic_home_black_48dp.png b/ring-android/app/src/main/res/drawable-mdpi/ic_home_black_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..dcdcfc0a80de0fe05a62160fc706e9363a0239e4 GIT binary patch literal 239 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}b0DZJsWUAr*{oC+`((au8vg-ry4~ zb%Adko37L81$?_NsI6eMUeMTmlA}UM!ovJt4Ria&+qwyhkN!0FJD9pDLDeho#*?X& zL~mS5@Rv4AS@x)J?~R~|6K!Ru-Pous+}N?#Q0T;giE_Ua&NsHsk=&rqHz&g3Y{%b% zCG+g3b}svTGWaEe*cS3BWY?jZLm|5+D)=nbIHT^Pss$vLYM)6rp1RSpO5rH8+y{qq d4eT<<D;b>ojwUa*oC)#{gQu&X%Q~loCIET=VpRYD literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-mdpi/ic_info_black_48dp.png b/ring-android/app/src/main/res/drawable-mdpi/ic_info_black_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..46ed12a89bd7303d12a00edee53504903c9fdaf1 GIT binary patch literal 412 zcmV;N0b~A&P)<h;3K|Lk000e1NJLTq001xm001xu1ONa4{R=S+0004FNkl<ZcmeIy zPj1>k7>D5($61se0<oZlTY%soNM+G;KyrYj%{EnJDeVa?d4rI84$BuPf=$8gHumQ0 zDyzZ&W<DVy@%;AlN;8(Zx(FUK?ukf9$;nAch`3{lhqDn+?2&@)_{tD#eO}3tie&`! zu<(VyNX?}zXylfkNW%sA)YRq|VzCWvYPfB3ypiy!^aF8NQ2n&xxX+a6^UpbOq)VY! zq;&73bT1Sbk*fqUK626%q7o1u!Q`=53v6j&m?4UrV7ONetT05Xfe=HY8i+BZh}t6y z2MoDtAUk{D3|Ew>24W16Y9PdLry5vdn5qWG7(8}rf#0;i^i3`Bz)3@LmB1SV3Ir;F zXA1R55y$<ZLy3iRU`~YqaoBe%`D_r&t+}Cwwq;_?2Ws*OEH3AUMiv|!d^vM0ba^2| zD)z=R9jtxgk!{I8=YavvJSMCNi8+vwaUdpS$(R;b7vMjpGor`QfDTIl0000<MNUMn GLSTYbg0Y4G literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-mdpi/ic_reorder_black_24dp.png b/ring-android/app/src/main/res/drawable-mdpi/ic_reorder_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..d18997cd4833993ac76fe0373ae0b07eed06adf1 GIT binary patch literal 82 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1NlzEYkP60RiIWfP6Ft_kojSNe e-tDhJ5hH_ZdVgU6m&#+HA_h-aKbLh*2~7agcNFyi literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-mdpi/ic_reorder_black_36dp.png b/ring-android/app/src/main/res/drawable-mdpi/ic_reorder_black_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..142d71505c8c1a4855394adf3a392990224b3ecf GIT binary patch literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K;k*AAeNCjguLt~%;myCqei3UE2 xXAG?WCo@WCqzOEYJIu0pqnT7TjNo!(WLRe8?4Thc6$sSL;OXk;vd$@?2>^ks8BYKJ literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-xhdpi/ic_add_circle_white_48dp.png b/ring-android/app/src/main/res/drawable-xhdpi/ic_add_circle_white_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..4244b5effc453b912b42b9553b62ed2ba9a6e4a8 GIT binary patch literal 815 zcmV+~1JL}5P)<h;3K|Lk000e1NJLTq003YB003YJ1ONa4NRhv@0008^Nkl<ZcmeI( zOG_hJ6u|Lo1|%<CX|y+D9Fdm(9NkfZ2qG>53Vs0*iQP)~=MdZYU<O1G*Dm5~CnLBO zGDC=lw4y|()fjQ1{Chu}x|O<Bb;8vD>;pfDu?o&nLFNhy3JMCMn=}h-a72MBFTC-_ z3snjnvd#i&x=<#^)Ca{GXO$8<70EG1ObQ@GnjN08Tb*r&3Hb|XCrcS8T`)(RKY$qD z_=$<`SS0E-V3JErRw3gZppOIGC{M2!fN5&D)dQ360wVm0+pQ9I3((CeUi23UHvj{a z@v0KPn+AN~8ZWzI&?I1hYrO7?ep7&Vl<}hy2@`+_r})(gVdsE9@Uu0ifNA`0$_b#4 z8h-akvT?ux63RCUm_$mMMgTD`agzGaIH^L^KHw{e0l;UwfOh^B1-K<{50C{>0GPD{ z_>HnSz&Rm(KpMmWAf*r35eeAR1;lw433wu^2N(yD02tK+tcnFJ>j6q)0e|ZNx<M=e zI;{a|(SRXqz=CMNyft7$G$3aUI1&xmw+0l@OBo)$&a44d(SRFkz>8==-5T&F8u0o* z05ttqsOkTRoBn6?Q1m~tJ!`<aXuwLdKg?yD{c$>F4d`n27aB#exnC(2IkA8xJ;0b) zz=$3oMqMPJMnn&w*cJ)cMCk&CMFKwQ143Mg1C(gd2Po#m0cKEk0Bzif0#u3F11J_n z0kSB&fG8C)fHD#L07V8VO*Fb{kViths73+3Jm7ct^jHHV?@MHyE<CN_XWvmy0bx$? zt7BT70~85L_)(D#Q)`#~T;X+>Buy^94th-Z!F$uI$Nik+RYj6+EPr=#f)^dr;nw<n zn04H4nO1iXAf|Z4t?tQqae|U0j~ngM<J}QZh6*OTV8ZJ&tSDc&#Y9!IMEp5~i!;kP zPAV}&%<ogg6k9xDw;G##q(#axXp~Ww`3Ic}EHOgFr(;lyNif7bIrcf@hB~jjQs;&< t_E;fHicSINxI!iXIG+Fz00KY&_yw!o45aQAri=gp002ovPDHLkV1i-mRe1ma literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-xhdpi/ic_add_white_24dp.png b/ring-android/app/src/main/res/drawable-xhdpi/ic_add_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..67bb598e52a36b6caba846efe733501479965a41 GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZA`BpB)|k7xlYrjj7PU<QV=$!9HqJSk5X$B+uf r<OO00b`GVd{{8=NAE6m_!(EkuAxlVJcj3M@p&-4Uu6{1-oD!M<^XVA- literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-xhdpi/ic_error_white_24dp.png b/ring-android/app/src/main/res/drawable-xhdpi/ic_error_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..9829698ddf0ad7df1e36f212ebb6b00c89d97075 GIT binary patch literal 431 zcmV;g0Z{&lP)<h;3K|Lk000e1NJLTq001xm001xu1ONa4{R=S+0004YNkl<ZcmeI# zzv|jh6u|Kq<6t)xhgRFCsI7euL7{yQ|Li}})nXNWgir@Te2<V9P;_b3*<|^4>2|$d zb8`?1e$Og=AO=p3^FQ<omnH*Ngq%r8I1}=lK3{QhOk?`NC&nDnbznr@9;mV)!Botg ziVg6c3y*f9lMX1bByDrNM}c>2v1vo`5um^p+ctP+U`du{Cg2BIYu^K^T*z8PSr06@ zpYw0-H`M_jNko7vwcEfLL;x7x0$h$_z@D56d;>86zNo-J6zHkIN)+%_AQS}x6*!9m zkqRWDK>P&Y>5nKxvcT|~X3kfEK9Y4+powG+6>vF-{mDCWD&Q~@1Kw`$gF3O$!g;S- znKKb!qTk6CPGs#5B|YHKA!{wuhu4fO{lqZ=9vf_1lQ#nnMN49>{rFYJ<Cn$5$)`I& z+C(YdoR-ZARc1<zsVfso_D5iiA$xS~c;kcl2sDjLgC0Hs5iv0l0X|(mle0KurRN10 Z=P$VM$<p)jms0=$002ovPDHLkV1h|NwN?NC literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-xhdpi/ic_group_black_48dp.png b/ring-android/app/src/main/res/drawable-xhdpi/ic_group_black_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..2994e7caa673cedf23fe03fb5102628ca43a9ec9 GIT binary patch literal 591 zcmV-V0<iswP)<h;3K|Lk000e1NJLTq003YB003YJ1ONa4NRhv@0006ONkl<ZcmeI! zze`nd7{~E<LvuEGH87PL>JNw-qEU!~s0ay{pec0`D$K~HhPHypA%`3!ETU1tzaavr zCi{V1m&kidFLrPD+$V>Yd-Qt0^_=ga==1u_Zw?Qf0|)snA|fIpA|fLFOt46i+SZCJ zGEQ$^y<Z=5Bv@*7X6f<w@eQ$owb)lKx%<ejW4o@wsJoA72y43r7u<a$eQaO>E79%l zqnN`2H|_2t=qJGfSEJzWGdF<|z7cnyxkZfdy>$1PD`JH2t-H@$4I_MC{JjqN%U&UU z#J4cQH=KFz)<=Q`u1cr7kKh>=xF=D1w}Y%>0b8Ts@8h_PwOztFe;>~njW&Pt*Zh54 zgM7nUtju|TA72l%)Unj+%y7Wn=cbpNEU-d#Ybz{pgP!=kh=_<+7Xyqj#XL)_QX!#E zg;kcAXNoZfC=li%pV-90d!M6>@`8_8z&`Mt5suK#8P;8WkUgB@A@8w2*fI||$!?CZ z*0y)(;x6wn=a!kIi&joh@${`7W`-)3(Z2JPL+otO(YMgSV}4*6uf`+xv6E?EpLUj2 zEYgacX1fkPJNlG6G_Z(Em|(kcN8jW=7Ju9$Z9ki?{+Fv*PP;<dD`yXMQ^s;yi2}`r zojov#<+$54JMQd(H&~8)O|wpC50tSSSEAWoXAfAub3b1P=l~s{19X56_@@u}&xweL dh=_=Y`~)|E3nQHQ?ot2%002ovPDHLkV1j_v89D#} literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-xhdpi/ic_home_black_48dp.png b/ring-android/app/src/main/res/drawable-xhdpi/ic_home_black_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..04e2b26ff139fe6c17fdfd5ae816dfe8b94c32ec GIT binary patch literal 356 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD0wg^q?%&M7z^Lu%;uuoF_~zh7UMEG7wu}8u ze$iqVcxO1aUzmAM?7Zp>NAm>6EUQ`Ct*wSx>5qK>6$=Oo3Qm;g)G0o&@&xPba3#K6 z%^S&y&BmS5-@bSqnrJIp9eMMi%d*6LGb28kmp9tyGS|O5b6}s$oE^sD?xs9P9R!Z_ z75`B8Z(s2HaaOv+jvdD3_xj(@iQ5wQ?NL}~*gq)I8fJEYcY)~s9ia=R@)j^>s50MS zi2B(b%@}o%$-H0e=-I`tg`YD5@7P3%U~s1aWuF3ND}l0d=Ka%-V{k(oZvXyV8UMT3 y0~izy3@`p?t4o+3U}gb<c}%?xXyAYmP?^9VEzx;TwXT=~*$kepelF{r5}E+<h?KJc literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-xhdpi/ic_info_black_48dp.png b/ring-android/app/src/main/res/drawable-xhdpi/ic_info_black_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..c8f86b925366485cef1f43c089f785ab8415068d GIT binary patch literal 766 zcmV<a0s;MrP)<h;3K|Lk000e1NJLTq003YB003YJ1ONa4NRhv@0008TNkl<ZcmeI$ z%Sv-s7>DuaOF?qdkw!ZaV?`>xjy6gVLBv5If;S){v5mCXA=Y@H1rfw?2k|s36`TsO zNHkbQ$!A*+5eLd!$4>T2_S$>D#r=D(;16rBEP_R$P$(1%^^m2=ItNs!^UUj8&(x`~ z&l*LtbfZ#|309~g2Axu3oCHcl$g<57(qs*`7$HKSIw(*>Ty)MH?F1shPyB;e=#~ZI z_$<#QVzCQy_@<vd#DmK8;e%-&5RbYekEde%ig?@#Q9RPa5#mFCkir9l)DWMl@)eeS z!!_b#R}5j%AlHb`T`_<qUs6K?s7eY8VjLj>bx0J~enA3k6_=)wfSbaFejbp3yC+S{ z_7DY?X;B_gQjQiRTt1lJbNASe)3hHEH3Nk2X;KG&s~Yf`BuyzGss;$NVD1ZQ>IR$< z!B`eiH$cc>Y+L1kO$;S@QaRv}I7TKArHx@^1yR}(MyiO?PB74eD6Y%=3f0*#j*5ul z=5e%+D6WK~14MDVII194dQYr$jH9~h0XH~$Rz0ABqgT}fUjFw3KEM%D{t<tGYjj`r zfE^sIsUEP5qoV2o1sr8n56IxCTlIi044kSRaDtJN+5w9g8CN@C6e9^5DhE6e!_bz> z0UH<_Q90l{j72zCH=xQV%rU2Kzzj`k=T_B#ItiMzplU#Yrp38XGoVI{7UU2mP12$= zqM+YsSs!;u!2L@vF65Db%i+>05@0{$T9iX1pnj(f3sO{(06L`;O9r??eD0Do77h74 z;V-_%vH{L~JUnSU(9NMwpKd1}iL!=x+!AegYKnUge|2;CAWhk$H%~9V$#H>L?3_t_ z7Uu^(BNnPtAVwgP%(}c>tIUufP!Te0^4P-PR2zKDCzOaY#u9%b231&Olo%?d7-pUl wyBu>vgO|4&+;Gee%M{4ag*Bm2C=?3)2UQ-CT`xs~ZvX%Q07*qoM6N<$g2UHD;{X5v literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-xhdpi/ic_reorder_black_24dp.png b/ring-android/app/src/main/res/drawable-xhdpi/ic_reorder_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..0b080a18715edfcda140aed629af49df20a337a9 GIT binary patch literal 101 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}a}t9Zwg>kch)?FB=LnFmNz${AJE7 yXCby@2~%AbQ%$h9@C^13%#42=80-ZY^s?9ex4rLXcYi8SAA_f>pUXO@geCw|yc$0M literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-xhdpi/ic_reorder_black_36dp.png b/ring-android/app/src/main/res/drawable-xhdpi/ic_reorder_black_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..0a66529bfeac1f43a44606a11b23344a7864c141 GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xf3?%cF6<L53TYyi9E06|)rRh7*11ZLmAirP+ zhi5m^fE-Cr7srqa#$<^l3;x-2{866ks$T8>R(1{pgYCW9j{U8QwIH3Iu6{1-oD!M< D>%<$U literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-xxhdpi/ic_add_circle_white_48dp.png b/ring-android/app/src/main/res/drawable-xxhdpi/ic_add_circle_white_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..4f5005d0888636f33a6fb2d2bbf73eb538c8c3a4 GIT binary patch literal 1229 zcmV;;1Ty=HP)<h;3K|Lk000e1NJLTq0058x0058(1ONa4O;0K_000D(Nkl<ZcmeI* z-Ahz?7{Kx0nXRc{H^rrWsnn3}13@&j5`v(>!rfV<r4`Ji47O$03-5*c8@kA-q=H?O zX7{cn$*^*F$QpvK6Gyrd=j9};XZY@4u)%r%y?vkm-~%&_=fv{}o6Tmk*=#nO&1SQi z6ixIp!Zq$ON0Aa`HmFl)gEA$GJmD@^8Q~aBh_ptK^kg~0IC)C=X@xxF^pMpVXfLDu zMU603$#aQsbOUN+l&92*sycIAq(Kj$!`$H`apZD~E|q~Y<aj~cJ?A?z>H#?n@Q$Q< zOAbdRpyRwD>0Z&R2G9W>l2+5S$PM%vzu}T*Rj!bc73d%@k)Z|JWCS`-6<MnAlUzW% zxQ%SxV23O~tt=s9|IjQ0PzN87wN={F2I|8_=4zZu6KH@fWN(vPT0n!;Q6Z0WX#fpS zN0mHsNdxt<g-UI5GD)BgTvV$@ds0BHd_cukX-)!Y7fYyGfgSM!-A3hZ#0_*F)f<cx z=pZ#zuR>c~Kp9@5Lknc$0s0kP`Z*4u1Gwl?m6qs%9->pfM-6nGI1~RfadtFHAcr^F z0Tpnf0~!GBfS^ArpbYP{1S;Z01C#?Tf#6IuKrgffdKLxHVbB%`I>Q6q(HiJxSfEBe zY7JClcQ~L?&>9FXgadl2J<x0zpuN<!2lDtTIM66)4+JB@f&MfC=s{4REHxv5%4`n? zbOek5g05gd<Hi7u1p~?(12hv1sALS#`yfDHf-ykQ;2)^hD4-tyKqE#04fzMUW)#qb zf1rCt0ZsV_nj?53r3v1wf1sjKKui9CN=5-K`v)o;1+?ZLXu~KV*FR9*C?L-QMFwO) zV&T7}?U%IuXFmK7Mf*eXiBUk0{R7?Qli5F3uiD2Qp&ppo2WH2N0_ye;)Wj#V5A6jj z0Dyh%V_zKFSI@D$dhRg>s52N)mZ}jz>ud`KB*+^9G>r%fbjb*y;ov~u8u6bv_XGzL z%xMqw2oVP8qV_<;;eZ-&wFav4c{m`!Ev<nj5n+M4v<B)34<vZ5Ezmq73ZU<`1?r0i zD8pMVfnMW810=|433NKj#R9Li16quBHASy>K;6*-38vAh`-rH4TBxE+W%fr8B=`kg zx*XSvt_5^x9w#0kK^qlRZ=KdS*8~otdS~NaG&zaNT}Q+Xw37m=wn#R9AVD*$sMreo zl3JJCP7T$na45-z+o#w>rT*na(kt74z(bX`=uczm|2aj7Jbp~;Y($Pt1wLH;X&xRq zNe!8+a3bx~HSMe-YbzX*;rLNA1!QcIeX^X-+Q}rcb)BqS2iOLwAWQ3<mGOjM8w<$L zJgu@Gfy{7)Drr{cGLGD5L|gcSw7SoJH4f1pr9jgCO}AR7jQc5)RIfR$;xTN8Gdv^i z=IO&x`J8$uH*txh8k2PBagcvE7nsE(syrSs%olPU<PSezGr|MPglU~=hS`HiY6MBo zcDfj2hGqQpo*BmIWE&#c5u`Vb^f1H(Q_Ql&GHbYac(|;w%o2~8VuB&MX+Wek0y`GS r0$CsnWPvP@1+qYPERY4VKuOPkHp#W;=w>>@00000NkvXXu0mjfZV@9& literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-xxhdpi/ic_add_white_24dp.png b/ring-android/app/src/main/res/drawable-xxhdpi/ic_add_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..0fdced8fce76a0f9a527388935adecebf63d0dae GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0vp^9w5vJBp7O^^}Pa8OeH~n!3+##lh0ZJc~YJ(jv*C{ s$r5`O<gM5!@xR%D`Q@60&+j{OGw5?0Ep#n8RtVDT>FVdQ&MBb@07vc`*Z=?k literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-xxhdpi/ic_error_white_24dp.png b/ring-android/app/src/main/res/drawable-xxhdpi/ic_error_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..abe2573b1a5e6be01a5f82c03a089f8ae87fa825 GIT binary patch literal 614 zcmV-s0-61ZP)<h;3K|Lk000e1NJLTq002k;002k`1ONa4|Kxkj0006lNkl<ZcmeI& z!AcuJ7{GBa#%dZ*ZX-TQ4N+{>qtG0D3I)9=d59Kjp*^Xg722Dkhl0YY!4OL5BZS<; z61=$^@!wOAvpYLG^KB0M-}Ax`HcMva+o_^St*D4Hn>1<BWk5hgM8JS9Et+gF$CTM+ za#NLk+C;<^a?c)b+=EuR;u+n>TvB%jTH^te+N{_IE%A#iov~;Ww9O+~8_}=>n&BI^ zI--;nG>?zXu6dmW<nb5V_3%tV^9dYtQpE%`gO96jD5VE|#buw<g0^wphcuui9&z1> zsy^r^5`EVNtszxi5A;CV{@<ClI~~v}h=HJ%47w5pT_l03Jd1+Hc=4cp5Cy?*Jg6-W zx{U*siNrxq%&I|~AP$0cHK>^j=ui!6<pMfUgSxqZI%?1$7f@df3UUDr)u1RBP&oOZ z{2$rm|EMSRwQrF}$H{*kvK^>F8|2Y@HE50q*%Fo?Q`{q+AHQPUL%N-$MgCaywU1ax z+6G;Ug3gooWpz=|Tb-?RTMXpu?d?~P>4jz8<CrrfI@LcPT4aRl0=zUwdJSB+mG;o{ z3oiSV{uH*vHLm*2w8_DFg&r>YL)m<^&~w09$TEDXaAWylm9vhgN*rOUk4)Pc;58VL zwSX;~BhD&6Fz<y^Jo`i7I(L}lQ*$>auW`W`-6GCecK;!P$1b;o#Px*Fj`{^R2dS@F z);Z*a4t<7%gbeA^;g|#7@k-=V3xlfw6`%t24_R#olFFzoX8-^I07*qoM6N<$f=(S9 A<^TWy literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-xxhdpi/ic_group_black_48dp.png b/ring-android/app/src/main/res/drawable-xxhdpi/ic_group_black_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..1fa4b3c7823342858a965e64d316a50a1b9920ce GIT binary patch literal 896 zcmV-`1AqL9P)<h;3K|Lk000e1NJLTq0058x0058(1ONa4O;0K_0009=Nkl<ZcmeFe zfdBvi3<RNbnZM&ez6t;U000000Dw8yvsZU7QKn%W$G^@vG{Tw+3Sok)?nXfe6;YjZ zkflZ*WC*?-SB63d74-5a1W81(E_k-0EX#VbFRbpaMZTdnFd6KYqtMHVXo?ZJ>F9W^ zf51FAGk2HwEj*v!`InpL;eMVrdWf<}d~=IL>86!3{l5ExG&72LY?wv@?)LT7FokTf ze>kPycTx_WNQ!&NF7>`+iijX-Y=i>!zC((5g`~Mj^40r}$RUDcut7rVeJ6Ax8Sb8b z-@Y0o<85$4zi(HNDa2qA{k~nzh~duZ_iY+Q4EMW!-<}G@cxx2t_ibrIFkh3kzPcU+ z^F6ZGR~JPv-+;Bgx<v%@O<U`$izAqCPQS0ne?a!HSWLgavp>>*TkEUqR{ag@_tmu` zn6J@VUtKw3yfq5-`}PbYhWpKGUtJSoxU*LK>H@q(3^uOcx9tp)@e&-<@7wo1lHu+; z(N`B{0?A-c$X4$=qL6=)H20i5^}a(28AsCCAo=Qj$AtL~NogD0C#2qYQe_HP;RPqv z`wk1xz>w#geM&u9`hE9(%@w+c@SfGp%@d)E7D~6f@ALV5KA+F$^Z9%}Uzo!*aElIp zWsDgXSY~~5%PcU%7{AcLO&T~v7&BEwc*7EL#JsO9mrCx?%QOij#jO*gm)lg5OJ?f$ zXx`VAOD*k0NgxJG5T%`3z9L-*d1v0&Q9>L2tRi1<tMt*z-ZalKWz<)Y$7O~PwQVrS zC3cglJ;YS|X*o(4pAq!;A3tz})RZ!7-ZyuF5oDV;#CcM2oE4M4xoVyvmNr2ZTf1u1 zH&RYNVtIX(v6TV6zPBJZSVkP!C$13yynRDlr|+$RKM{xa2l;@v2O52E2be(|Ta5j9 zD`rKZ@8MhK5C=C)1>U+<`bm`V7IAd1DaOlbg?<uQJVqSeUw8?!pxOrjS`f!~5idV0 z_kj@eh~t|ho8+!5_knr@_g6=9)yjR~Cj|HRBgySk?gNtu?k`GmdCGm@1A_ZoBDs)q zACR3f_4EJV4jsq<0000C^0z+6w?aseAVIevL4pJc5+q2FAVGoz37P-^00000001EK W9GLy|yTK9w0000<MNUMnLSTZo#Gj7< literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-xxhdpi/ic_home_black_48dp.png b/ring-android/app/src/main/res/drawable-xxhdpi/ic_home_black_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..d66401cc7ee5247323db1d0e5fda5a4abc986449 GIT binary patch literal 485 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q1xWh(YZ)^zFs|`*aSW+od~<LwZ&QGT!$oh$ z<+|K2*v>3)ejt(0xBY_Z3`g?>#w;r?yH3Mn@>gyZoOhh0;t4|kLXOqVG4!-_PpVOP z-aGBek=(OPwwe~g{Qe>@@_e25<U}l7J!#sE8$nImN{+P4N~h(y``6qIHcakp{86Y7 zdt>clsfI>{4yS*i@w#W^D{rz1-|>AY{nKWX$hsQ2NUm_Zew|kB`R>yWO+Byd{gCa6 z;F1F8&o6>^e6IYWdFQ9iFOepjX+a#HBD@q&Bx|-R^e=@AEIgHL-)h%y*J{%LSL7E^ z<u99W!7qS%UwppdzwrEGFjhSAcqdd6S;33o3PYeykZu@W{t2WLf^R@|C)&dmShfBI zTd_#wUuBJ8ymg5OFm#y=*3@TnB?P#?$={&h(7?dR#KIw<;GoaW!g0Y6!G}vA7@J^f iAwm-%fej>=>}8DJ^Px3_)tn7z0fVQjpUXO@geCym4Z)}Y literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-xxhdpi/ic_info_black_48dp.png b/ring-android/app/src/main/res/drawable-xxhdpi/ic_info_black_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..74b5ecb329a5b8f7a3b5a958a7b2982b3810ef2c GIT binary patch literal 1142 zcmV-+1d02JP)<h;3K|Lk000e1NJLTq0058x0058(1ONa4O;0K_000C%Nkl<ZcmeI( zT}zbtAII_cHCt1`{!?7qn@SDoJP<@fD<KF9EZm(%T3W$uD1&X;^}utX9>X4FR8kB7 zHEDLwN|FpKcO^@LjuVxRq;Y1F)fv9~2t2s%e|N9XGkC*w^ShYAv5Mn3j^j9v<2X(O z-Q>B!eWqDtg(4f&sIftj6&88IJ+71I1Pxdu%P~eMu!8v5G6hEHB8$QHGsIt%kq|3U z;0j-3n0khIN)3r<HKw^t9Y#3HT|OZ(tio+N&{&2XFOZn`oNvjX9gjZVAqnj*IXpCS zk~c`gdqp=|IK)FFrA^R;(mvx?DoBbeag7X$I?PK%fz8r_f-X`*6xljIqLe+{K@{6f zcA<!777zvZ4~;0GjSq;TTcwqh^-w_+UYRqbsE;i~@okbLCH>S84OZm>Dd<ZtPk=-@ z64t{OqR}=vO@i8}AeyaAD+y`l1ES$pX(R!ASU@!0JiCb99Yo{ZBxV;8&DT$i4pY`X z&^j%|B*RO@fX$L27QY~d>?dMyh>9_RN;DC<hloM@KM^~L#JKH9j5|(*Jl+@=XdaKq z^dZIt5_*Y9hId8=TErs~ImF07!Z{-G!q`C1h`>?A*g!%%q1`n)&@Do$=abQa%IqbS zA;joF!X-j^YJ8w6LfB8u_&`;@40nN<zdV8cX+@w11eB$0MW7-(3FH`J$vOyR#F{|E z1X8dj&?JGZSQF?y0epd2v^sq2wkl8;zU8e7G=Oh6tO_)WZ}+VVG>&i6NPuZ~SPg!r zU$iRF0=}(S6=(_HidF?$!?z8q0#)#>W>ui73luVtyTp8OH|g!T$Ncu(i=uB&tP1oP z-|krzXdK_JTNP*&-||)k8o;*`Rt4(Bw+5>M)e*q5HG$p}NWq#wlLRtiO`u@{>9QtJ zJAq^=SrO<XI|!&?MW6`+yJAJ4K?3{6iXU<ABZO(=13e;?%f<&9B$PTTMh7bKIU(IP zI?x!Qbr>C}jR-t9HqZ=__|DisJwzhITO$L##v>v*BLkf!G9Ist3p7Whx{V9eNyH`) zgZ4X-YocUKo+1Z{!OzA7x=JiE%o>qr29KDuu&#Zck2Djbe(eLDCuU<>=lPA;?Pgxv zJac48KqISK=2_+d32CLQU7mH0kf1YcYL(|-PLZ(hscMsFi(XQ2L6byPejp_|HZ{1o zdP&h~%8K8bPm!`#g&+FM96<q%ioQC|aR5c^W=z3DMHZ#>v#!vI{X7b4QRI8k49zGi z!!=5&#wl_Y52ZEnM~a`~52A(RDLmKyrW1{L^s<;(oY$O1LmuaNmcT8!2M>+4bBjtW zY08Yzh7tC1iKz(B{#70^$p0|RSLAs>G2|=Y1cU6uU_0qxm`Rp={$Xj7VcOY&Me6Bd zfKkSoVu2;rs8FR!g*BE~;4$NjGC(JFSj2H0$8j9TaU93_4{R&N@heFr`Tzg`07*qo IM6N<$g1#5~W&i*H literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-xxhdpi/ic_reorder_black_24dp.png b/ring-android/app/src/main/res/drawable-xxhdpi/ic_reorder_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..0a66529bfeac1f43a44606a11b23344a7864c141 GIT binary patch literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xf3?%cF6<L53TYyi9E06|)rRh7*11ZLmAirP+ zhi5m^fE-Cr7srqa#$<^l3;x-2{866ks$T8>R(1{pgYCW9j{U8QwIH3Iu6{1-oD!M< D>%<$U literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-xxhdpi/ic_reorder_black_36dp.png b/ring-android/app/src/main/res/drawable-xxhdpi/ic_reorder_black_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..d72a9b986d3cc4103cb55f70e1dadb21f4d06273 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^IUvl$3?x5s?2iLdJOMr-u0R?NOkbK$19F&4g8YIR z92%Z)=lBie8hg4phEy;nFA$bsUF?u0susaC_45CI&N?1;%RP1S_YzF*xj(Lj5-*wE c4r(wkJm3Ddp6mbLGa#cqUHx3vIVCg!0E*Bmc>n+a literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-xxxhdpi/ic_add_circle_white_48dp.png b/ring-android/app/src/main/res/drawable-xxxhdpi/ic_add_circle_white_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..7332c7572767695645983c7c261daef6cb088fb6 GIT binary patch literal 1708 zcmZvddpMMN8^?doW5!^aK~C!|L#BqTq?tq%<4}%6O|(44<ghEOoMQ8An}`W%nvyrk zA@eTUA)#66nU|ej>+p_42TCSn5!R_4!tOi$^ZxbzaeqI5-1q&xuKT*L`?|0A`+BIU z=&Jw#)Vw_10_DU$hZ0V%YtO4V04OGTxw!_VLG!PB<AYur<t&ZSs+xb{rw<qFzdJ3q z%dH^iQ(2L}ljlOJXz`Iha80kVbyTH-I!Vz*tw7D7k#Wg>i<oVXT;~Gwc16&y!8fce zH0!QSj3jDCPLw?M)1@*z(WnKwY-=O)?;qDak9)}8e08IM8|Y1`{-3z-d;O}{Ac+1S zi~Frz)O>1xxkxj==ez3^n<XfiC@6ImHc)#!S6-|bnrC+IvyX033{Uz&ql|qAjEpK? zrgx}9&MLR2zAuY<0*;NPydB@ER>AMXdFW|jTP-&#d(=G!Ig;JzlyJD4mMDu4yB`Wl zX`)o}b2xr5^d!1teOGev195m-TN?07xMu&6l%hjGiu^poArofbK}^v%U`PFPT9<GW zK9_)|54<(}nfaSJX1Xo1I#F>Mzi8$0_%Kh{q48o8Uw)U;_$v6*G7uD+bj2QAjBSR5 zUs`;)Q@yJel&<F;Sj9g%flIrczC2*~OQYhVUFyG?-KtT_$fZr~1X}}O;al|bry0Vu zR5g7el{=s+5m}}GQOF%o@gG-ppFS4?`37<eYBZ2b+mmhMz|a15@Z~|=qWvzddUi@R z9@(>^)j&T#2qeA7wI1!B_BKYi+hrS7(4PUTe_ARFvP~%G#~#uts7J{m5$>B}i1yp) z&^t0{Zur;eklp)MX#cJ965%0A7^=X}$guWB)p{xy=0jhI35&!ob}jYs1p{5oG#PqR zqunf4SX5S$wtt<gAXPTz0yxEuln?+&GlP7n3<n)(y3-G5TA{)FO)N0WS(sI=U+7Lq zfN_G@XO-|8WlXs|duk?65!tO&UL7XqNno8qS3&KR%HLmjXCmc;k!e8|`X$uVpF9R$ zyMnmAQeCMv)HH1N6dcD(&P+H%4ia^j(&r~WkPtnbBqd`L`iF)~?%R(9TXR(XYZ+cp z<^s%OB@+ZGUEPI$c@uDyOe1qPK_(e3y1EXnF@Ra=5+w0C49sc=XNUqdoVu{l5jzXf zRymHC0h|#1)X^mv5RH-uw8Am!`<2)9RP+d(FkRt@ae?9ObA(n3$T{1p(4&Ig3ta&D z@(z&^;suDKDTHVx?4A(Vkpx^SYV7(sWw!Fn-{^3>yw;#3OZ(n&jhi^BBx(Ve$Sadd zo)-0I_dpP>Dg5Sgm%}8{)(Ye_&vw+2Yx`%2NTxMf<P+fxY~&L}d^+GXyz>Gmv*=$X zTusKoN&!FKU59M%<JBv^xwRXW$;tc+l<B(UUYI8#PHIroiL1t0Kzs>|%&AOmljeev zx^Z2kRE{}a?3NC?p)rI<+(2B=5=nj|4znvH<fMj6{`Up$&|)44nahp_!V~H)Uu+fj zMFUO?UUDdyx)Tliyi{!m1_9wHBR3cgR*<nSwsSsL2V1KF#sgywd?-azNebb=Ei}f~ zSb!9*ny*lP)Cb67vaOeZ-VVI<yT4KitY?O@`)6jZkg&8n8O#j<4f5X1IWrs19mm@$ zwswpTX>PIJfZqJ`!J=Zo>Il~2ta#c1hRH$yRh{8W7I>u1yFWwYh$gnC;J)BQjX`bN ztN1?4*C!!P*p$`jhu?M%0A%iTNyVd1CMyJRPQiIWm@(A{FtWFQwB$K}O7DPAYCHy* zuy>y}qSgbW%`0uGyukAiN3*6YsmAJ5Kiv99YuQ#8tfvhxAHzyn$K)=&F6NOrQ6o-n zUC?IV&1Ag*oUnE>$!A%Q=MF0KA4WcrO?MV6B#ec%@2It2-hP>FfK5kSq&oCjQb|Cp zPkeZk7cy>Ihzt{=&!UNq1ME*<QNsb_%F8ug)4pzJZ&o|F9onrNTlGl$r&T1eFE@*A zqh8bui(g&*)yceMtJu$rnHAy4>*P!}Uq8q+pE;(-Ch&$hk+P(MJ$`|`Otv|1k~8`8 z*CQt_-@?wn<At_IL265O$L39%kdf_NM~Ce9VP@igZgb!J!2cenI)<U&!gFftPS#)J zi}w01)lMmggZc+KX2d14Jwq`q`h%Q+Q~dRgFHAT0Q&v<r=wiB!U6<O~1}tuN=y5OH z(kdd~O)Q9*i^{EEh+o1>qhJZn6!?JugZaN_;?ffv$u1w{UkG@)`?@_igk1bD`E%~q literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-xxxhdpi/ic_add_white_24dp.png b/ring-android/app/src/main/res/drawable-xxxhdpi/ic_add_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..d64c22e9edfdcf9babea9681c44e2dee53a6d2f6 GIT binary patch literal 102 zcmeAS@N?(olHy`uVBq!ia0vp^2_Vb}Bp6OT_L>T$m`Z~Df*BafCZDwc^5i{T978G? xlN*`>5BzUTIj7P7-(I3-fns}2dtZ?oBSS_(`pg9u0+k>GJYD@<);T3K0RZru9Krwq literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-xxxhdpi/ic_error_white_24dp.png b/ring-android/app/src/main/res/drawable-xxxhdpi/ic_error_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..830fb7e1e6860117fa31155fa24e5002984d1444 GIT binary patch literal 814 zcmV+}1JV46P)<h;3K|Lk000e1NJLTq003YB003YJ1ONa4NRhv@0008@Nkl<ZcmeI( zO-mbV6u|K@3zL}W<{IOs)hbfy_fUgrh1M37TJQ^qNVJ6ZbF=|R)I}?Z+ZGgqZVDFn zLZl`Jy+M4%+%)1s`FDRe&oh~~({}!6Kk$Q@WOI%Y<Xk~PK|w)uk|xU%+Y~tGmV55G z<(vXrERrQn62r-H>OpZvS)hbY2bjDdCIt{;m^E&&TAfu=g!~1xk)e#84w<3VA3%)v zT;W8QWNGmlFhK<;J7(NFz$5aw(K=mT04Ay7R#jfR3y83c+nI#j0wmeRi*`u30qCQQ zR~6}T8t{Y@ysSdMlYl->@VW}UP63jX@uMOMCjb$4@v9xe_5sWInQ0d=iQi4w0rXJA z@2Ye)4#*>+^+o{`NNKDQK#U4@`v3FnbVSrT;2nqoz?@Y;8&{$L7sRarG9U^7(^dc> z%HjYeLi&JV5C?!keZZPXz=|#)&W%Vwji?@A6hs1GL=Rw!1?2PqMX`W=9Y80D1wcX# zNQ(xf)PSsLz?>SeBpP6<0o$Shc{QLQ8nCAZoQnpWssXp60d+OtUNqqDF967Yh5q!9 z__zNV-9mDkYQQ3rn^yy}NN!dQNF%u+H6V%P+SLGq1Ef~K&;iUNwGVoL=Sc0T9w0_t z<R968MDzd#t0DoPFmwSak$?exK!`(efFe!$0D~EEfGG?sfL1O=0nUh70~lmQ0Wug? z0WBPh0hEbY2N;YarI(Ga8f+k;FBpvix~SrJ*E~=IB=1X%*<E-t@v|I;T|k%}{OTLc z_5lVR6!D`U{NvQxWiJ)H?q9l{Tzu{Km~hNvr&o`ADS7zvbi1+q-NAQ{KHYY=*6+hC z;C4Bh-93PKLlw8WX3UEdlx{X~qpv*l?g(g{Bb=<vE3eP6qP*n-CpsfT#GgaBIMbA{ zQ;{iRexD)^vcgZSR^u}RG)XxIjWR-xeRL}Dk!M7FItEotf)sO@<k{ntI(OVr=afA* snP-+E5;D(mtxo_500AHX1ON&13wp^)zA-65ApigX07*qoM6N<$f_&m$?EnA( literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-xxxhdpi/ic_group_black_48dp.png b/ring-android/app/src/main/res/drawable-xxxhdpi/ic_group_black_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..b9f2b923deaae738fb63fdc98f36e2bf4191d0ff GIT binary patch literal 1178 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE1xWt5x}=AJfhEz?#WAFU@y)?Tpcq5Lg1;-p zS2BT^2r#2|cV+KtuE!St=I+^=)$6;WkFzU-mxE1ktA~qDsB&qbM#e3bFhQ<~S+lby zZV?mTr!-?9i&AN*`J~W;QVS=zUP#KAJ<Usi_ox|nu;SLWCznk2F)^KaJg1BM;kmgx zzyG*XY%%}7{D;&TGp)a$F;HBRxwxJ2*o-H?E~!Z-H^@cpJp6axx~Q@OHqILc>w_2H zD-W_|KdGo_=4_t%bziX7&9gc|N7j8*d-|%@-Nc}2%7(;u8~3lzSB_kA#P{QzueGVN zI!c0NbIVr$K4mrG#Ocj9Z|&REtD|6;Gp{u4+f>sDu1U8<U#)$uy*h=Zv+(|;O)J;0 z=kBarA9Xc6?7WW9=XC+OzVUY*j~w_GaXCE9o6m5=X`RiB*5|P&W#~s;3@>Lh+)}6g z>(r%=jb{Uw-t*sMcI3geRo{izvm5TX`|9rzX$PKn++XV+^(wNNF9Aw>9(hm~^j`g5 z>5&J=uKw<PKA$1=pU{#s^&Hxtw=X>P$I&NJJE_2b<@c#S^&jgLNEvQf|Mj=ojXsH6 z+`nq2uNZYp+<32Z`Tgxg`=o@}U$xO!43i(Ie~kY6`&)%H(9tix=LQ|*_vn$n^8WU- zx^+i?eA^$qKYu<i(7SK+uf6*Ic8h4|9@nTZzrWp*`WR|)KJD+myJjvs#QZ<4sk>jd z+Om7fhRJu<-Y<7%-F-sIRp+qul$YOQCoQvn^3&wB`kG7ccduy6ouefGVfqE(J;%KM z?z^3rF3fImta6>v{w=HLJeOe4NSs=C|Fg|`G!&-!Dr3>yy)utDj!ULCX%^||=pGjl z?kSq1ER&?4YZBP5>Hk60c}{YZ<Uco`Z(pxoI-|!|JWF!PiB!pF2Kg6#ct759I+qe3 zZ<&3=Q$E?lXSaj=TpKsZj}<ctg==ej-#n3CCg^<ng1<VyQ0%PDY`?O!GM^diDgD2E z?B!EQt&Swt=8M07ovNH?w@k1#^~a>IQ-W7L<;nQAxVqzSjMEfzNAun(&(!u^f8ieP zsJ(mw%UhM%8p|uTf86Y3KS}D_2kA)%dM_XK>ME75U-7NGi2J=!uS$jFy@zRCo9FF` zv)`j-wX-K;gLlsIuB11YU$uW%c`ndx<|X`4_qq7hI>xItesUXgy1#5{+HfuNTl3n7 zN=Yy4o(3Lzb^R54^-O!gZu8^bEtfsw7RqZJwL8*S>(yn@r}c&Tt5V;Zc7u6gFW7$w z6lS~+jOgNy`uqP@o5eOhuHO;c|F6G#MzJq<TD9gA!Mp!>HTOBo+)-$qVz~6?{zUFa zFK%friQmb8fb+;j-oO*TPt`tPJo3;~V2$fe{+bqxJ^UQsb`;6KaF@9k*mQU49rijG znR^@uS55tWz~s>fBbL=6@0cHbyCVPJ{_RCWMqoM6wBg^{Ud7{XEIbAeW-_u#BsAb5 d5akA#Rm$8uO}m6A?2|5t>*?y}vd$@?2>>5EF46!1 literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-xxxhdpi/ic_home_black_48dp.png b/ring-android/app/src/main/res/drawable-xxxhdpi/ic_home_black_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..8fac2c3aca3edbd13cc8256203366acda8f6daf6 GIT binary patch literal 589 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE1xWt5x}=AJfl0*E#WAFU@y$Vd(WU^IhKv1; zzTsRM%tjd;J&t_Q8JtEL%v=VW4L?jic<}MZ^Izui-QW9Sy~iXKPdL)D(BrOiQcX{) zT%=;X_GQQKKGDdPkGyR51WfGR_T|XsdAyM;(iGxkRs<GRyFEHPQP%6#0hbz!iwjbs z(jJ|jIZgU^sSi`2h^yg+{jav46)%|WoG{bnXhzGr^6GZu7gl=?OP0vqd&skkufKpT zc6+%+^SZ;<a~!Wfls&iLbwRW7i(h<&Y_Xc>7HA)pELjSa6-mD^^%2jmpgE4=UB)lG zfRc*%BtbflfOYCwcwb~q*WC3$$5njJ(icserD6-NE#^K~RdO)0U(bU30&6<st_M83 ztbisr7{A~GI)@Rc`G8~zt3@-0W|7!}X^XheDFHP%=mDK219aA7o?S&i%{>rj0X+cK zypAEg`QH5h+5LT)z?czW_?n-~akpjxQ#BI{hk$}Z0|O&EqhT7R7|9}kI1z>e?S%sY XC$})ypEvhZf<!!B{an^LB{Ts5&`#27 literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-xxxhdpi/ic_info_black_48dp.png b/ring-android/app/src/main/res/drawable-xxxhdpi/ic_info_black_48dp.png new file mode 100644 index 0000000000000000000000000000000000000000..4192281fe16142442e33b0735d959c9c40917752 GIT binary patch literal 1561 zcmV+!2Il#RP)<h;3K|Lk000e1NJLTq006)M006)U1ONa4_|>G0000HxNkl<ZcmeI* z%WqWY9f$E}9H;hlQ3KwR+QP+*We`P47Fn>!jwI|_q&Sy43#0^zEVEz$hh>C@6r_-* zL8UDYty7XVs10J5Ql_#kr&6G@r9^@?a$Gx3V)-(cU!_Q1AQ{Hz`ku@8^ZW^4IK1a# zjEIPch=_=Yh=_=YNJ13Z%|TwL!ey>A#a(7uWSIsHmRV$$yG(JN52$dIgA7t6Fxkd) zjPMa((ZD>`;7hJB!n16}Bk5*{3(U~OLa50!@AEv{ke2rFCKEKU2&yyANd}P(?cx+O zSPV@wLO;m5BEwX%nEMwmQzZ9#Im<VgqZW9Z9&+nR{z4sdT#Y~TIJxr#*RTZjclMDR zgM5M|t|lK-BJ;XAPaR8WHO{e>%xdE(^H{>0<24Fo&>-VjN~$tIraa0iR<RVd%1PSE zh<>K96gEL08E}~Iv6S{5uaIg*MzNH4kxo)-2VY<r=yQ5Vp{JS0GSVFTNtu^f#WK_i zL!`(Embsc7BNYmq#WGrj#B1XMmf?Owfdp$~6w7#jNbUp$E?_z6Jre31mXprt<m0+y zB+Rd{T-9WV1bLb@EN88-pM==KJeI@e=pg}$e1YY(&*{XuQ7p&(4#y5-Id2$;cJe)z z^S)&Vjy%c~h8m|GCr)8Mq)y<#Zr0EKYK0OpYhxTkt#^|Gu{w&~mwJ^Lbu*9Mm-?D5 z#O58$S*@6}eoagUscV1@T4NWn_yp4c8+L^lJb^tR4bWsSk-Me=9@14J_9UhO9@;)4 z^`Qo6(PbjkOI-uBsK#SN<}9WG+<mn2W4_S<n`oX+A~B3<fKBxhk*I2bO?HC_lrRmj z>3-(+{g(zfLFi^QfQN1qvOSmv@YDdIdJ|KgI!>r2Fy*N#A?l`qDNoheLTH9C<+($I z<^rZX_paL`sJcx^w$a3t=Nfboisvw2sRNn#`A6Lge1!Q*jS-5kFkh(|LQwR56Q=5P z5ZG?acdA5S2QlBNX9(<d%y;StfmJZysnY~@8B0{HSfaW_VAnN3fUXhPlm-aUB!S)4 z00Fu~V6z$^K=%l2Q3C{MfxwnEK!BDAtf2t{RM!A*tLqZvwk7=|?6w6RL)~^yH)3wP zqel^Lo7BTNw|z=rA7C!i<LHV8aQi~$s0MKRO7frvaQkuMpauxgE|(u>X@D9Xgy2gJ z;InB$aYY08Y|QQF=^CI+D4x{-Zht^yD@_gHqXs`AB-0weN4E&g`x?MU=Lya88o)=t zBsAM-XaJAZ=psbp8o*;W3Drpr;IT5H+N}XRRw8868o<pF)XxJ64NxX@{TjeSeMI1< z2H0eux&5u#8sG&YQDi{_Y@+|sK}6ox0Gp^nWO}G;fEKN>od}I-fEJAssmC=yi}n(+ ze`tV*^fw~6kERBAKuz`#gO4@90~#Y1C2AUAgVxwdOwMV54XO~Et;}KfrDo|OMz3M_ zr4AFT0{_O;di;|DF&khN`ysVVKMt(Fs8?m2XlDXbRCxqP`uGmZd5iSo&?{KZdlAQe zkL9@E;#?>H!E)LpKOzBoa(Z7p%XSiCKPx#r`#(j34AI1LRFgv_Oc~2jZ{U#rqx-i= zsQ0iO^bU#D#vieacaZ`KR>=6@g7XweyfeD?yH?KNp|r^xq{vXlZq1fCM9S>X&;yED zo+5>MGV+*ilE+A?PA+EPfpZ6`Hq5sve%tjT8PLZ#mcpv^k`e8kNZF}qnPWUcrVLQU zQqm3j$)EzS@^uQ1oQElpSz9<u4NGWiROlk}N?f6dC9Ec6>?AjS&Q&Zy{gplB&OZJ` zEdiIEQTCEsKjjSbn4{*Yu$|oN<Rxyze#QTc7wAORv6B=07mJ}=l<8wbGQe@F)UgPv zag#D7T9Pds;$3djz(T0OEza``y6{N4IKXi}WQMwrKkw6wQRV<$1STDnc!ndK<`UPK z<PP^(V2L_)mRR5(cbMc;E^(S89AFn6h=_=Yh=_=Yh=_=YB*OmzLg7Qaha4~t00000 LNkvXXu0mjfiH6-3 literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-xxxhdpi/ic_reorder_black_24dp.png b/ring-android/app/src/main/res/drawable-xxxhdpi/ic_reorder_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..56a5bc8ba3ed86b692dd7fd3e4dbc5cdd3857d1e GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeK3?y%aJ*@^(YymzYu0R?HmZtAK52P4Ng8YIR z9G=}s19D_MT^vIy7?T;A0uTI`=d!yn!8!eZ&#&|=_KO)9KAOpW$O(U+0n+U0>gTe~ HDWM4f9he}? literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/drawable-xxxhdpi/ic_reorder_black_36dp.png b/ring-android/app/src/main/res/drawable-xxxhdpi/ic_reorder_black_36dp.png new file mode 100644 index 0000000000000000000000000000000000000000..b5cfb6970fb4929b5d6f8f6bef32c117a048c3f3 GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0vp^6F``e8A#skDEJMe*aCb)T!AzYEKT2e9!N2k1o;Is zI6S+N2IQ!Fx;TbZFeWRA_cR42{FmqaBU$Hkn7QZJ;|c7GKUzrj0|_oSMux`E74MJn RCQJdD<LT<>vd$@?2>{QWB|HEC literal 0 HcmV?d00001 diff --git a/ring-android/app/src/main/res/layout/activity_home.xml b/ring-android/app/src/main/res/layout/activity_home.xml index 66422c9cc..5bbadcc73 100644 --- a/ring-android/app/src/main/res/layout/activity_home.xml +++ b/ring-android/app/src/main/res/layout/activity_home.xml @@ -1,9 +1,9 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- +<?xml version="1.0" encoding="utf-8"?><!-- Copyright (C) 2004-2014 Savoir-Faire Linux Inc. -Author: Alexandre Lision <alexandre.lision@savoirfairelinux.com> - +Author: Alexandre Lision <alexandre.lision@savoirfairelinux.com> +Author: Adrien Béraud <adrien.beraud@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 @@ -31,22 +31,66 @@ as that of the covered work. --> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/drawer_layout" android:layout_width="match_parent" - android:layout_height="match_parent" > + android:layout_height="match_parent" + android:fitsSystemWindows="true"> <cx.ring.views.SlidingUpPanelLayout android:id="@+id/contact_panel" android:layout_width="match_parent" - android:layout_height="match_parent" > + android:layout_height="match_parent"> - <FrameLayout - android:id="@+id/main_frame" + <RelativeLayout android:layout_width="match_parent" - android:layout_height="match_parent" - android:paddingTop="?android:attr/actionBarSize" - android:orientation="vertical" > - </FrameLayout> + android:layout_height="match_parent"> + + <android.support.v7.widget.Toolbar + android:id="@+id/main_toolbar" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" + android:layout_alignParentTop="true" + + android:background="@color/sfl_dark_blue" + android:elevation="4dp" + android:gravity="bottom" + android:longClickable="true" + android:minHeight="?android:attr/actionBarSize" + android:popupTheme="@style/Theme.AppCompat.Light.NoActionBar" + android:theme="@style/MyActionBar" + app:contentInsetStart="72dp" + app:elevation="4dp" + app:popupTheme="@style/Theme.AppCompat.Light.NoActionBar" + app:titleMarginBottom="16dp" /> + + <FrameLayout + android:id="@+id/main_frame" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" + android:layout_below="@id/main_toolbar" + android:orientation="vertical" /> + + <android.support.design.widget.FloatingActionButton + android:id="@+id/action_button" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignBottom="@id/main_toolbar" + android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" + android:layout_centerVertical="true" + android:layout_marginBottom="-20dp" + android:layout_marginLeft="16dp" + android:layout_marginStart="20dp" + android:elevation="4dp" + android:visibility="gone" + app:elevation="4dp" + app:fabSize="mini" /> + </RelativeLayout> <FrameLayout android:id="@+id/contacts_frame" @@ -57,13 +101,15 @@ as that of the covered work. android:focusableInTouchMode="true" /> </cx.ring.views.SlidingUpPanelLayout> - <FrameLayout + <android.support.design.widget.NavigationView android:id="@+id/left_drawer" - android:layout_width="300dp" + android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="start" - android:choiceMode="singleChoice" - android:divider="@android:color/transparent" - android:dividerHeight="0dp" /> + android:fitsSystemWindows="true" + android:theme="@style/AppThemeBase" + android:windowBackground="@color/white" + app:itemTextColor="?android:textColorPrimary" + app:menu="@menu/drawer" /> </android.support.v4.widget.DrawerLayout> \ No newline at end of file diff --git a/ring-android/app/src/main/res/layout/frag_accounts_list.xml b/ring-android/app/src/main/res/layout/frag_accounts_list.xml index c0fee129d..22d71dceb 100644 --- a/ring-android/app/src/main/res/layout/frag_accounts_list.xml +++ b/ring-android/app/src/main/res/layout/frag_accounts_list.xml @@ -1,75 +1,65 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:dslv="http://schemas.android.com/apk/res/cx.ring" + xmlns:dslv="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" - android:orientation="vertical" > + android:orientation="vertical" + android:background="@color/white" + > - <TextView - android:id="@+id/normal_account_list" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@color/sfl_another_blue" - android:paddingLeft="5dp" - android:singleLine="true" - android:text="@string/preference_section1" - android:textAppearance="@android:style/TextAppearance.Holo.Medium.Inverse" - android:textColor="@color/white" /> + <TextView + android:layout_width="match_parent" + android:layout_height="48dp" + android:paddingLeft="72dp" + android:text="Comptes" + style="@style/Subheader" + android:gravity="center_vertical" /> - <RelativeLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" > + <RelativeLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" > - <cx.ring.views.dragsortlv.DragSortListView - android:id="@+id/accounts_list" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@color/white" - android:choiceMode="multipleChoice" - android:dividerHeight="1px" - android:visibility="gone" - dslv:collapsed_height="1px" - dslv:drag_enabled="true" - dslv:drag_handle_id="@id/drag_handle" - dslv:drag_scroll_start="0.33" - dslv:drag_start_mode="onDown" - dslv:float_alpha="0.6" - dslv:float_background_color="@color/sfl_action_blue" - dslv:remove_enabled="false" - dslv:slide_shuffle_speed="0.3" /> + <cx.ring.views.dragsortlv.DragSortListView + android:id="@+id/accounts_list" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@color/white" + android:choiceMode="multipleChoice" + android:dividerHeight="1px" + android:visibility="gone" + dslv:collapsed_height="1px" + dslv:drag_enabled="true" + dslv:drag_handle_id="@id/drag_handle" + dslv:drag_scroll_start="0.33" + dslv:drag_start_mode="onDown" + dslv:float_alpha="0.6" + dslv:float_background_color="@color/sfl_action_blue" + dslv:remove_enabled="false" + dslv:slide_shuffle_speed="0.3" /> - <ProgressBar - android:id="@+id/loading_spinner" - style="?android:progressBarStyle" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_margin="15dp" - android:layout_centerInParent="true" - android:layout_gravity="center" /> + <ProgressBar + android:id="@+id/loading_spinner" + style="?android:progressBarStyle" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_margin="5dp" + android:layout_centerInParent="true" + android:layout_gravity="center" + android:indeterminate="false" /> - <TextView - android:id="@+id/empty_account_list" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_centerInParent="true" - android:layout_gravity="center" - android:gravity="center" - android:text="@string/empty_account_list" - android:textSize="40sp" - android:visibility="gone" > - </TextView> - </RelativeLayout> + <TextView + android:id="@+id/empty_account_list" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_centerInParent="true" + android:layout_gravity="center" + android:gravity="center" + android:text="@string/empty_account_list" + android:textAppearance="?android:attr/textAppearanceMedium" + android:visibility="gone"> + </TextView> - <TextView - android:id="@+id/ip2ip_account" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@color/sfl_another_blue" - android:paddingLeft="5dp" - android:singleLine="true" - android:text="@string/ip2ip_account" - android:textAppearance="@android:style/TextAppearance.Holo.Medium.Inverse" - android:textColor="@color/white" /> + </RelativeLayout> <ListView android:id="@+id/ip2ip" diff --git a/ring-android/app/src/main/res/layout/frag_menu.xml b/ring-android/app/src/main/res/layout/frag_menu.xml deleted file mode 100644 index c643ed95a..000000000 --- a/ring-android/app/src/main/res/layout/frag_menu.xml +++ /dev/null @@ -1,67 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:background="@color/light" - android:orientation="vertical" - android:paddingTop="?android:attr/actionBarSize" > - - <RelativeLayout - android:layout_width="match_parent" - android:layout_height="100dp" - android:background="@color/sfl_blue_0" - android:padding="5dp" > - - <ImageView - android:id="@+id/user_photo" - android:layout_width="70dp" - android:layout_height="70dp" - android:layout_alignParentLeft="true" - android:layout_centerVertical="true" /> - - <TextView - android:id="@+id/user_name" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentRight="true" - android:layout_marginLeft="15dp" - android:layout_toRightOf="@+id/user_photo" - android:singleLine="true" - android:textColor="@color/white" - android:textSize="20sp" - android:textStyle="bold" /> - - <RelativeLayout - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_alignLeft="@+id/user_name" - android:layout_alignParentBottom="true" - android:layout_alignRight="@+id/user_name" - android:layout_below="@+id/user_name" > - - <Spinner - android:id="@+id/account_selection" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@color/sfl_blue_0" /> - - <ImageView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentRight="true" - android:layout_centerVertical="true" - android:clickable="false" - android:focusable="false" - android:src="@drawable/ic_action_expand_light" /> - </RelativeLayout> - </RelativeLayout> - - <ListView - android:id="@+id/listView" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:choiceMode="singleChoice" - android:listSelector="@drawable/navigation_selector" > - </ListView> - -</LinearLayout> \ No newline at end of file diff --git a/ring-android/app/src/main/res/layout/frag_menu_header.xml b/ring-android/app/src/main/res/layout/frag_menu_header.xml new file mode 100644 index 000000000..43686adbd --- /dev/null +++ b/ring-android/app/src/main/res/layout/frag_menu_header.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="utf-8"?> +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@color/sfl_blue_0" + android:paddingBottom="8dp" + android:paddingRight="5dp" + android:paddingTop="40dp" + android:theme="@style/MenuHeader" + android:paddingLeft="16dp"> + + <ImageView + android:id="@+id/user_photo" + android:layout_width="70dp" + android:layout_height="70dp" + android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" + android:layout_alignParentTop="true" + android:layout_marginBottom="8dp" /> + + <TextView + android:id="@+id/user_name" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentEnd="true" + android:layout_alignParentLeft="true" + android:layout_alignParentRight="true" + android:layout_alignParentStart="true" + android:layout_below="@+id/user_photo" + android:singleLine="true" + android:textSize="20sp" + android:textStyle="bold" + android:textColor="@color/white" /> + + <Spinner + android:id="@+id/account_selection" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_alignParentLeft="true" + android:layout_alignParentStart="true" + android:layout_below="@+id/user_name"/> +</RelativeLayout> \ No newline at end of file diff --git a/ring-android/app/src/main/res/layout/item_account.xml b/ring-android/app/src/main/res/layout/item_account.xml index 3f085216b..422d7effe 100644 --- a/ring-android/app/src/main/res/layout/item_account.xml +++ b/ring-android/app/src/main/res/layout/item_account.xml @@ -1,9 +1,8 @@ <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@color/sfl_blue_0" - android:padding="4dp" > + android:layout_height="72dp" + android:padding="16dp"> <TextView android:id="@+id/account_alias" @@ -11,30 +10,24 @@ android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" - android:layout_marginBottom="4dp" - android:layout_marginLeft="4dp" - android:textAppearance="?android:attr/textAppearanceLargeInverse" /> - - <TextView + android:textAppearance="@style/ListPrimary" /> + + <TextView android:id="@+id/account_host" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/account_alias" - android:layout_marginBottom="4dp" - android:layout_marginLeft="4dp" - android:textAppearance="?android:attr/textAppearanceSmallInverse" /> - + android:textAppearance="@style/ListSecondary" /> <ImageView - android:id="@+id/account_selected" + android:id="@+id/error_indicator" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" - android:background="@null" android:clickable="false" android:focusable="false" - android:src="@drawable/ic_action_accept" /> + android:src="@drawable/ic_error_white_24dp" /> </RelativeLayout> \ No newline at end of file diff --git a/ring-android/app/src/main/res/layout/item_account_pref.xml b/ring-android/app/src/main/res/layout/item_account_pref.xml index 8785b1073..89193fec4 100644 --- a/ring-android/app/src/main/res/layout/item_account_pref.xml +++ b/ring-android/app/src/main/res/layout/item_account_pref.xml @@ -12,7 +12,7 @@ android:layout_centerVertical="true" android:layout_alignParentLeft="true" android:layout_marginLeft="16dp" - android:src="@drawable/handle"/> + android:src="@drawable/ic_reorder_black_24dp"/> <TextView android:id="@+id/account_alias" diff --git a/ring-android/app/src/main/res/layout/item_account_selected.xml b/ring-android/app/src/main/res/layout/item_account_selected.xml new file mode 100644 index 000000000..ba3b8c06d --- /dev/null +++ b/ring-android/app/src/main/res/layout/item_account_selected.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8"?> +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="72dp" + android:paddingTop="16dp" + android:paddingRight="16dp" + android:minHeight="72dp" + android:paddingBottom="16dp"> + + <TextView + android:id="@+id/account_alias" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentLeft="true" + android:layout_alignParentTop="true" + android:textAppearance="?android:attr/textAppearanceMedium" + android:textColor="@color/white" /> + + <TextView + android:id="@+id/account_host" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentLeft="true" + android:layout_below="@+id/account_alias" + android:textAppearance="?android:attr/textAppearanceSmall" + android:textColor="@color/white" /> + + <ImageView + android:id="@+id/error_indicator" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentRight="true" + android:layout_centerVertical="true" + android:clickable="false" + android:focusable="false" + android:src="@drawable/ic_error_white_24dp" /> + +</RelativeLayout> \ No newline at end of file diff --git a/ring-android/app/src/main/res/layout/item_codec.xml b/ring-android/app/src/main/res/layout/item_codec.xml index e91cb8a7c..a604aa1cf 100644 --- a/ring-android/app/src/main/res/layout/item_codec.xml +++ b/ring-android/app/src/main/res/layout/item_codec.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:id="@id/container" + android:id="@+id/codec_container" android:layout_width="match_parent" android:layout_height="?android:attr/listPreferredItemHeight" > diff --git a/ring-android/app/src/main/res/layout/menuheader.xml b/ring-android/app/src/main/res/layout/menuheader.xml index 3509b8411..49dd54d00 100644 --- a/ring-android/app/src/main/res/layout/menuheader.xml +++ b/ring-android/app/src/main/res/layout/menuheader.xml @@ -1,6 +1,13 @@ <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:tools="http://schemas.android.com/tools" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> + <fragment + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:name="cx.ring.fragments.MenuFragment" + android:id="@+id/accountselector" + tools:layout="@layout/frag_menu_header" /> </LinearLayout> \ No newline at end of file diff --git a/ring-android/app/src/main/res/menu/drawer.xml b/ring-android/app/src/main/res/menu/drawer.xml new file mode 100644 index 000000000..0c0a18b23 --- /dev/null +++ b/ring-android/app/src/main/res/menu/drawer.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="utf-8"?> +<menu xmlns:android="http://schemas.android.com/apk/res/android"> + <group android:checkableBehavior="single"> + <item + android:id="@+id/menuitem_home" + android:checked="true" + android:icon="@drawable/ic_home_black_48dp" + android:title="@string/menu_item_home"/> + <item + android:id="@+id/menuitem_accounts" + android:icon="@drawable/ic_group_black_48dp" + android:title="@string/menu_item_accounts"/> + <item + android:id="@+id/menuitem_about" + android:icon="@drawable/ic_info_black_48dp" + android:title="@string/menu_item_about"/> + </group> +</menu> \ No newline at end of file diff --git a/ring-android/app/src/main/res/values-fr/strings_account.xml b/ring-android/app/src/main/res/values-fr/strings_account.xml index 23edba28b..92971c37f 100644 --- a/ring-android/app/src/main/res/values-fr/strings_account.xml +++ b/ring-android/app/src/main/res/values-fr/strings_account.xml @@ -36,7 +36,7 @@ as that of the covered work. <string name="prompt_hostname">Nom du serveur</string> <string name="prompt_username">Nom d\'utilisateur</string> <string name="prompt_password">Mot de passe</string> - <string name="action_create"><b>Enregistrer le compte</b></string> + <string name="action_create">Ajouter le compte</string> <string name="action_create_short">Enregistrer</string> <string name="error_field_required">Ce champ est requis</string> diff --git a/ring-android/app/src/main/res/values-v21/styles.xml b/ring-android/app/src/main/res/values-v21/styles.xml index 00080de2b..cbf5228c9 100644 --- a/ring-android/app/src/main/res/values-v21/styles.xml +++ b/ring-android/app/src/main/res/values-v21/styles.xml @@ -1,38 +1,24 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android"> - <style name="AppThemeWithOverlay" parent="android:Theme.Material.Light.DarkActionBar"> + <style name="AppThemeWithOverlay" parent="AppThemeBase"> <item name="android:actionBarStyle">@style/MyActionBar</item> - <item name="android:actionMenuTextAppearance">@style/MyActionBar.MenuTextStyle</item> <item name="android:windowActionBarOverlay">true</item> + <item name="windowActionBarOverlay">true</item> <item name="android:windowBackground">@drawable/bg_72</item> - <item name="android:activatedBackgroundIndicator">@drawable/navigation_selector</item> + <item name="android:windowDrawsSystemBarBackgrounds">true</item> + <item name="android:statusBarColor">@android:color/transparent</item> + <item name="android:windowTranslucentStatus">true</item> </style> - <style name="AccountFormContainer"> - <item name="android:layout_width">match_parent</item> - <item name="android:layout_height">wrap_content</item> - <item name="android:padding">16dp</item> + <style name="AppThemeWithoutOverlay" parent="@android:style/Theme.Material.Light.DarkActionBar"> + <item name="android:actionBarStyle">@style/NativeActionBar</item> </style> - <style name="AppThemeWithoutOverlay" parent="android:Theme.Material.Light.DarkActionBar"> - <item name="android:actionBarStyle">@style/MyActionBar</item> - <item name="android:actionMenuTextAppearance">@style/MyActionBar.MenuTextStyle</item> - <item name="android:windowActionBarOverlay">false</item> - </style> - - <style name="MyActionBar" parent="@android:style/Widget.ActionBar"> + <style name="NativeActionBar" parent="@android:style/Widget.ActionBar"> <item name="android:background">@color/sfl_dark_blue</item> - <item name="android:titleTextStyle">@style/MyActionBar.Text</item> + <item name="android:titleTextStyle">@style/NativeActionBar.Text</item> </style> - <style name="MyActionBar.Text" parent="@android:style/TextAppearance.Material.Widget.ActionBar.Title"> - <item name="android:textColor">@color/white</item> - <item name="android:textSize">18sp</item> + <style name="NativeActionBar.Text" parent="@android:style/TextAppearance.Material.Widget.ActionBar.Title"> </style> - - <style name="MyActionBar.MenuTextStyle" parent="android:style/TextAppearance.Material.Widget.ActionBar.Menu"> - <item name="android:textColor">#FF0</item> - <item name="android:textSize">20sp</item> - </style> - </resources> \ No newline at end of file diff --git a/ring-android/app/src/main/res/values/strings_account.xml b/ring-android/app/src/main/res/values/strings_account.xml index e769eb41f..974290f87 100644 --- a/ring-android/app/src/main/res/values/strings_account.xml +++ b/ring-android/app/src/main/res/values/strings_account.xml @@ -36,7 +36,7 @@ as that of the covered work. <string name="prompt_hostname">Hostname</string> <string name="prompt_username">Username</string> <string name="prompt_password">Password</string> - <string name="action_create"><b>Register Account</b></string> + <string name="action_create">Add account</string> <string name="action_create_short">Register</string> <string name="error_field_required">This field is required</string> diff --git a/ring-android/app/src/main/res/values/styles.xml b/ring-android/app/src/main/res/values/styles.xml index baab018b4..89379e3f8 100644 --- a/ring-android/app/src/main/res/values/styles.xml +++ b/ring-android/app/src/main/res/values/styles.xml @@ -1,9 +1,15 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android"> - <style name="AppThemeWithOverlay" parent="android:Theme.Holo.Light.DarkActionBar"> + <style name="AppThemeBase" parent="Theme.AppCompat.Light.NoActionBar"> + + </style> + + <style name="AppThemeWithOverlay" parent="AppThemeBase"> + <item name="android:actionBarStyle">@style/MyActionBar</item> - <item name="android:actionMenuTextAppearance">@style/MyActionBar.MenuTextStyle</item> + <item name="android:windowActionBarOverlay">true</item> + <item name="windowActionBarOverlay">true</item> <item name="android:windowBackground">@drawable/bg_72</item> <item name="android:activatedBackgroundIndicator">@drawable/navigation_selector</item> </style> @@ -14,25 +20,47 @@ <item name="android:padding">16dp</item> </style> - <style name="AppThemeWithoutOverlay" parent="android:Theme.Holo.Light.DarkActionBar"> - <item name="android:actionBarStyle">@style/MyActionBar</item> - <item name="android:actionMenuTextAppearance">@style/MyActionBar.MenuTextStyle</item> - <item name="android:windowActionBarOverlay">false</item> + <style name="AppThemeWithoutOverlay" parent="@android:style/Theme.Holo.Light.DarkActionBar"> + <item name="android:actionBarStyle">@style/NativeActionBar</item> </style> - <style name="MyActionBar" parent="@android:style/Widget.ActionBar"> + <style name="NativeActionBar" parent="@android:style/Widget.ActionBar"> <item name="android:background">@color/sfl_dark_blue</item> - <item name="android:titleTextStyle">@style/MyActionBar.Text</item> + <item name="titleTextStyle">@style/TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse</item> + + </style> + + <style name="NativeActionBar.Text" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title"> + </style> + + <style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid"> + <item name="android:textColorPrimary">@android:color/primary_text_dark</item> + <item name="android:textColorSecondary">@android:color/secondary_text_dark</item> + <item name="selectableItemBackground">?android:selectableItemBackground</item> + <item name="selectableItemBackgroundBorderless">?android:selectableItemBackground</item> + <item name="actionMenuTextColor">@color/abc_primary_text_material_light</item> + </style> + <style name="MenuHeader" parent="Theme.AppCompat.Light.NoActionBar"> + <item name="android:textColorPrimary">@android:color/primary_text_dark</item> + <item name="android:textColorSecondary">@android:color/secondary_text_dark</item> + </style> + + <style name="Subheader"> + <item name="android:textSize">14sp</item> + <item name="android:typeface">normal</item> + <item name="android:textColor">@android:color/tertiary_text_light</item> </style> - <style name="MyActionBar.Text" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title"> - <item name="android:textColor">@color/white</item> - <item name="android:textSize">18sp</item> + <style name="ListPrimary"> + <item name="android:textSize">16sp</item> + <item name="android:typeface">normal</item> + <item name="android:textColor">@android:color/primary_text_light</item> </style> - <style name="MyActionBar.MenuTextStyle" parent="android:style/TextAppearance.Holo.Widget.ActionBar.Menu"> - <item name="android:textColor">#FF0</item> - <item name="android:textSize">20sp</item> + <style name="ListSecondary"> + <item name="android:textSize">14sp</item> + <item name="android:typeface">normal</item> + <item name="android:textColor">@android:color/tertiary_text_light</item> </style> </resources> \ No newline at end of file -- GitLab