From 5c11c426ab6927149908b15d2ba916eb94872c49 Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Tue, 20 Jan 2015 19:02:52 +0100 Subject: [PATCH] Move menu items to drawer (fixes #110). --- .../activities/MainActivity.java | 77 +++++---------- ...eInfoFragment.java => DrawerFragment.java} | 88 +++++++++++++++--- .../syncthing/SyncthingService.java | 2 +- .../res/drawable-hdpi/ic_action_donate.png | Bin 0 -> 957 bytes .../res/drawable-hdpi/ic_action_settings.png | Bin 0 -> 953 bytes .../res/drawable-hdpi/ic_action_share.png | Bin 0 -> 647 bytes .../res/drawable-hdpi/ic_menu_browser.png | Bin 0 -> 1562 bytes .../ic_menu_close_clear_cancel.png | Bin 0 -> 1391 bytes .../res/drawable-mdpi/ic_action_donate.png | Bin 0 -> 635 bytes .../res/drawable-mdpi/ic_action_settings.png | Bin 0 -> 594 bytes .../res/drawable-mdpi/ic_action_share.png | Bin 0 -> 472 bytes .../res/drawable-mdpi/ic_menu_browser.png | Bin 0 -> 960 bytes .../ic_menu_close_clear_cancel.png | Bin 0 -> 932 bytes .../res/drawable-xhdpi/ic_action_donate.png | Bin 0 -> 1290 bytes .../res/drawable-xhdpi/ic_action_settings.png | Bin 0 -> 1231 bytes .../res/drawable-xhdpi/ic_action_share.png | Bin 0 -> 785 bytes .../res/drawable-xhdpi/ic_menu_browser.png | Bin 0 -> 2513 bytes .../ic_menu_close_clear_cancel.png | Bin 0 -> 1709 bytes .../res/drawable-xxhdpi/ic_action_donate.png | Bin 0 -> 1750 bytes .../drawable-xxhdpi/ic_action_settings.png | Bin 0 -> 1863 bytes .../res/drawable-xxhdpi/ic_action_share.png | Bin 0 -> 1094 bytes .../res/drawable-xxhdpi/ic_menu_browser.png | Bin 0 -> 3821 bytes ..._info_fragment.xml => drawer_fragment.xml} | 26 +++++- src/main/res/layout/main_activity.xml | 2 +- src/main/res/layout/menu_item.xml | 23 +++++ src/main/res/menu/main.xml | 24 ----- src/main/res/values/strings.xml | 10 +- 27 files changed, 153 insertions(+), 99 deletions(-) rename src/main/java/com/nutomic/syncthingandroid/fragments/{LocalDeviceInfoFragment.java => DrawerFragment.java} (57%) create mode 100644 src/main/res/drawable-hdpi/ic_action_donate.png create mode 100644 src/main/res/drawable-hdpi/ic_action_settings.png create mode 100644 src/main/res/drawable-hdpi/ic_action_share.png create mode 100644 src/main/res/drawable-hdpi/ic_menu_browser.png create mode 100644 src/main/res/drawable-hdpi/ic_menu_close_clear_cancel.png create mode 100644 src/main/res/drawable-mdpi/ic_action_donate.png create mode 100644 src/main/res/drawable-mdpi/ic_action_settings.png create mode 100644 src/main/res/drawable-mdpi/ic_action_share.png create mode 100644 src/main/res/drawable-mdpi/ic_menu_browser.png create mode 100644 src/main/res/drawable-mdpi/ic_menu_close_clear_cancel.png create mode 100644 src/main/res/drawable-xhdpi/ic_action_donate.png create mode 100644 src/main/res/drawable-xhdpi/ic_action_settings.png create mode 100644 src/main/res/drawable-xhdpi/ic_action_share.png create mode 100644 src/main/res/drawable-xhdpi/ic_menu_browser.png create mode 100644 src/main/res/drawable-xhdpi/ic_menu_close_clear_cancel.png create mode 100644 src/main/res/drawable-xxhdpi/ic_action_donate.png create mode 100644 src/main/res/drawable-xxhdpi/ic_action_settings.png create mode 100644 src/main/res/drawable-xxhdpi/ic_action_share.png create mode 100644 src/main/res/drawable-xxhdpi/ic_menu_browser.png rename src/main/res/layout/{local_device_info_fragment.xml => drawer_fragment.xml} (85%) create mode 100644 src/main/res/layout/menu_item.xml delete mode 100644 src/main/res/menu/main.xml diff --git a/src/main/java/com/nutomic/syncthingandroid/activities/MainActivity.java b/src/main/java/com/nutomic/syncthingandroid/activities/MainActivity.java index 9d23dea5..f67fc87a 100644 --- a/src/main/java/com/nutomic/syncthingandroid/activities/MainActivity.java +++ b/src/main/java/com/nutomic/syncthingandroid/activities/MainActivity.java @@ -5,7 +5,6 @@ import android.app.Activity; import android.app.AlertDialog; import android.content.ComponentName; import android.content.DialogInterface; -import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Configuration; import android.os.Bundle; @@ -22,20 +21,19 @@ import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBar.Tab; import android.support.v7.app.ActionBar.TabListener; import android.view.LayoutInflater; -import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.TextView; import com.nutomic.syncthingandroid.R; import com.nutomic.syncthingandroid.fragments.DevicesFragment; +import com.nutomic.syncthingandroid.fragments.DrawerFragment; import com.nutomic.syncthingandroid.fragments.FoldersFragment; -import com.nutomic.syncthingandroid.fragments.LocalDeviceInfoFragment; import com.nutomic.syncthingandroid.syncthing.SyncthingService; /** * Shows {@link com.nutomic.syncthingandroid.fragments.FoldersFragment} and {@link com.nutomic.syncthingandroid.fragments.DevicesFragment} in different tabs, and - * {@link com.nutomic.syncthingandroid.fragments.LocalDeviceInfoFragment} in the navigation drawer. + * {@link com.nutomic.syncthingandroid.fragments.DrawerFragment} in the navigation drawer. */ public class MainActivity extends SyncthingActivity implements SyncthingService.OnApiChangeListener { @@ -127,7 +125,7 @@ public class MainActivity extends SyncthingActivity private DevicesFragment mDevicesFragment; - private LocalDeviceInfoFragment mLocalDeviceInfoFragment; + private DrawerFragment mDrawerFragment; private ViewPager mViewPager; @@ -182,18 +180,18 @@ public class MainActivity extends SyncthingActivity savedInstanceState, FoldersFragment.class.getName()); mDevicesFragment = (DevicesFragment) fm.getFragment( savedInstanceState, DevicesFragment.class.getName()); - mLocalDeviceInfoFragment = (LocalDeviceInfoFragment) fm.getFragment( - savedInstanceState, LocalDeviceInfoFragment.class.getName()); + mDrawerFragment = (DrawerFragment) fm.getFragment( + savedInstanceState, DrawerFragment.class.getName()); mViewPager.setCurrentItem(savedInstanceState.getInt("currentTab")); } else { mFolderFragment = new FoldersFragment(); mDevicesFragment = new DevicesFragment(); - mLocalDeviceInfoFragment = new LocalDeviceInfoFragment(); + mDrawerFragment = new DrawerFragment(); } getSupportFragmentManager() .beginTransaction() - .replace(R.id.drawer, mLocalDeviceInfoFragment) + .replace(R.id.drawer, mDrawerFragment) .commit(); mDrawerToggle = new Toggle(this, mDrawerLayout, R.drawable.ic_drawer); mDrawerLayout.setDrawerListener(mDrawerToggle); @@ -223,57 +221,16 @@ public class MainActivity extends SyncthingActivity super.onSaveInstanceState(outState); // Avoid crash if called during startup. if (mFolderFragment != null && mDevicesFragment != null && - mLocalDeviceInfoFragment != null) { + mDrawerFragment != null) { FragmentManager fm = getSupportFragmentManager(); fm.putFragment(outState, FoldersFragment.class.getName(), mFolderFragment); fm.putFragment(outState, DevicesFragment.class.getName(), mDevicesFragment); - fm.putFragment(outState, LocalDeviceInfoFragment.class.getName(), - mLocalDeviceInfoFragment); + fm.putFragment(outState, DrawerFragment.class.getName(), + mDrawerFragment); outState.putInt("currentTab", mViewPager.getCurrentItem()); } } - @Override - public boolean onCreateOptionsMenu(Menu menu) { - getMenuInflater().inflate(R.menu.main, menu); - return true; - } - - /** - * Shows menu only once syncthing service is running, and shows "share" option only when - * drawer is open. - */ - @Override - public boolean onPrepareOptionsMenu(Menu menu) { - boolean drawerOpen = mDrawerLayout.isDrawerOpen(findViewById(R.id.drawer)); - menu.findItem(R.id.share_device_id).setVisible(drawerOpen); - menu.findItem(R.id.exit).setVisible(!SyncthingService.alwaysRunInBackground(this)); - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - if (mLocalDeviceInfoFragment.onOptionsItemSelected(item) || - mDrawerToggle.onOptionsItemSelected(item)) { - return true; - } - - switch (item.getItemId()) { - case R.id.web_gui: - startActivity(new Intent(this, WebGuiActivity.class)); - return true; - case R.id.settings: - startActivity(new Intent(this, SettingsActivity.class) - .setAction(SettingsActivity.ACTION_APP_SETTINGS_FRAGMENT)); - return true; - case R.id.exit: - stopService(new Intent(this, SyncthingService.class)); - finish(); - default: - return super.onOptionsItemSelected(item); - } - } - @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); @@ -286,6 +243,16 @@ public class MainActivity extends SyncthingActivity mDrawerToggle.onConfigurationChanged(newConfig); } + @Override + public boolean onOptionsItemSelected(MenuItem item) { + if (mDrawerToggle.onOptionsItemSelected(item)) { + return true; + } + + return super.onOptionsItemSelected(item); + } + + /** * Receives drawer opened and closed events. */ @@ -297,7 +264,7 @@ public class MainActivity extends SyncthingActivity @Override public void onDrawerOpened(View drawerView) { super.onDrawerOpened(drawerView); - mLocalDeviceInfoFragment.onDrawerOpened(); + mDrawerFragment.onDrawerOpened(); mFolderFragment.setHasOptionsMenu(false); mDevicesFragment.setHasOptionsMenu(false); } @@ -305,7 +272,7 @@ public class MainActivity extends SyncthingActivity @Override public void onDrawerClosed(View view) { super.onDrawerClosed(view); - mLocalDeviceInfoFragment.onDrawerClosed(); + mDrawerFragment.onDrawerClosed(); mFolderFragment.setHasOptionsMenu(true); mDevicesFragment.setHasOptionsMenu(true); } diff --git a/src/main/java/com/nutomic/syncthingandroid/fragments/LocalDeviceInfoFragment.java b/src/main/java/com/nutomic/syncthingandroid/fragments/DrawerFragment.java similarity index 57% rename from src/main/java/com/nutomic/syncthingandroid/fragments/LocalDeviceInfoFragment.java rename to src/main/java/com/nutomic/syncthingandroid/fragments/DrawerFragment.java index 0e7cd0ce..13f470e9 100644 --- a/src/main/java/com/nutomic/syncthingandroid/fragments/LocalDeviceInfoFragment.java +++ b/src/main/java/com/nutomic/syncthingandroid/fragments/DrawerFragment.java @@ -1,20 +1,31 @@ package com.nutomic.syncthingandroid.fragments; +import android.content.Context; +import android.content.Intent; +import android.net.Uri; import android.os.Bundle; import android.support.v4.app.Fragment; +import android.util.Pair; import android.view.LayoutInflater; -import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.ArrayAdapter; +import android.widget.ImageView; +import android.widget.ListView; import android.widget.TextView; import com.nutomic.syncthingandroid.R; import com.nutomic.syncthingandroid.activities.MainActivity; +import com.nutomic.syncthingandroid.activities.SettingsActivity; +import com.nutomic.syncthingandroid.activities.WebGuiActivity; import com.nutomic.syncthingandroid.syncthing.RestApi; import com.nutomic.syncthingandroid.syncthing.SyncthingService; import java.text.DecimalFormat; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import java.util.Timer; import java.util.TimerTask; @@ -22,8 +33,8 @@ import java.util.TimerTask; /** * Displays information about the local device. */ -public class LocalDeviceInfoFragment extends Fragment - implements RestApi.OnReceiveSystemInfoListener, RestApi.OnReceiveConnectionsListener { +public class DrawerFragment extends Fragment implements RestApi.OnReceiveSystemInfoListener, + RestApi.OnReceiveConnectionsListener, ListView.OnItemClickListener { private TextView mDeviceId; @@ -41,6 +52,31 @@ public class LocalDeviceInfoFragment extends Fragment private MainActivity mActivity; + /** + * Displays menu items. + */ + private class MenuAdapter extends ArrayAdapter> { + + public MenuAdapter(Context context, List> items) { + super(context, 0, items); + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + if (convertView == null) { + LayoutInflater inflater = (LayoutInflater) getContext() + .getSystemService(Context.LAYOUT_INFLATER_SERVICE); + convertView = inflater.inflate(R.layout.menu_item, parent, false); + } + + ImageView icon = (ImageView) convertView.findViewById(R.id.icon); + icon.setImageResource(getItem(position).first); + TextView text = (TextView) convertView.findViewById(R.id.text); + text.setText(getItem(position).second); + return convertView; + } + } + public void onDrawerOpened() { mTimer = new Timer(); mTimer.schedule(new TimerTask() { @@ -50,7 +86,6 @@ public class LocalDeviceInfoFragment extends Fragment } }, 0, SyncthingService.GUI_UPDATE_INTERVAL); - mActivity.supportInvalidateOptionsMenu(); } public void onDrawerClosed() { @@ -58,9 +93,12 @@ public class LocalDeviceInfoFragment extends Fragment mTimer = null; } + /** + * Populates views and menu. + */ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.local_device_info_fragment, container, false); + View view = inflater.inflate(R.layout.drawer_fragment, container, false); mDeviceId = (TextView) view.findViewById(R.id.device_id); mCpuUsage = (TextView) view.findViewById(R.id.cpu_usage); mRamUsage = (TextView) view.findViewById(R.id.ram_usage); @@ -68,6 +106,18 @@ public class LocalDeviceInfoFragment extends Fragment mUpload = (TextView) view.findViewById(R.id.upload); mAnnounceServer = (TextView) view.findViewById(R.id.announce_server); + ArrayList> items = new ArrayList<>(); + items.add(new Pair<>(R.drawable.ic_action_share, R.string.share_device_id)); + items.add(new Pair<>(R.drawable.ic_menu_browser, R.string.web_gui_title)); + items.add(new Pair<>(R.drawable.ic_action_settings, R.string.settings_title)); + items.add(new Pair<>(R.drawable.ic_action_donate, R.string.donate)); + if (!SyncthingService.alwaysRunInBackground(getActivity())) { + items.add(new Pair<>(R.drawable.ic_menu_close_clear_cancel, R.string.exit)); + } + ListView list = (ListView) view.findViewById(android.R.id.list); + list.setAdapter(new MenuAdapter(getActivity(), items)); + list.setOnItemClickListener(this); + return view; } @@ -137,17 +187,29 @@ public class LocalDeviceInfoFragment extends Fragment } /** - * Shares the local device ID when "share" is clicked. + * Handles menu item clicks. */ @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.share_device_id: + public void onItemClick(AdapterView adapterView, View view, int i, long l) { + switch (i) { + case 0: RestApi.shareDeviceId(getActivity(), mDeviceId.getText().toString()); - return true; - default: - return super.onOptionsItemSelected(item); + break; + case 1: + startActivity(new Intent(mActivity, WebGuiActivity.class)); + break; + case 2: + startActivity(new Intent(mActivity, SettingsActivity.class) + .setAction(SettingsActivity.ACTION_APP_SETTINGS_FRAGMENT)); + break; + case 3: + startActivity(new Intent( + Intent.ACTION_VIEW, Uri.parse(getString(R.string.donate_url)))); + break; + case 4: + mActivity.stopService(new Intent(mActivity, SyncthingService.class)); + mActivity.finish(); + break; } } - } diff --git a/src/main/java/com/nutomic/syncthingandroid/syncthing/SyncthingService.java b/src/main/java/com/nutomic/syncthingandroid/syncthing/SyncthingService.java index a9f23545..0ec279a7 100644 --- a/src/main/java/com/nutomic/syncthingandroid/syncthing/SyncthingService.java +++ b/src/main/java/com/nutomic/syncthingandroid/syncthing/SyncthingService.java @@ -44,7 +44,7 @@ public class SyncthingService extends Service { public static final String ACTION_RESTART = "restart"; /** - * Interval in ms at which the GUI is updated (eg {@link }LocalDeviceInfoFragment}). + * Interval in ms at which the GUI is updated (eg {@link com.nutomic.syncthingandroid.fragments.DrawerFragment}). */ public static final int GUI_UPDATE_INTERVAL = 1000; diff --git a/src/main/res/drawable-hdpi/ic_action_donate.png b/src/main/res/drawable-hdpi/ic_action_donate.png new file mode 100644 index 0000000000000000000000000000000000000000..d2d859d6edbf878e5bfd144bb6b108bf75b46b32 GIT binary patch literal 957 zcmV;u148_XP)1lQz2MV(|e%+gbJ&b>WMLY4~ggFrw~TQ-UK0l}aTF+Rx3CXz7; z5nU1E*UtW1AMAl*w!3FG$#jFvfqJ=J)tpm(s_yM8vcLihEbzaDs&0_Hud1Jt>^IHl z&;am(s_v`mKFPb|c$%hXoO9=rBv})YR)Z9)LGt^t0Pp=)6u&W!1Nfpbf+2)uGjp9z zXJztPzu$j>1Jb(69V*&tNiOED`MDq8DEt9S(;_y!V$> zbyOnaYV86_c6C&>o4K`$MDNzgU7T~PMg9hGuWDVIroA#N)x}*zL{v4M=KmtZNp0c_ zJg$qoh=>5VULxRfmSsytYdW3I3dsj00=}tLKpBzTM!%7~MKUw9x4rk5y!TrqcPrMg zHuBE7)h9__6-n)y)cKE4=Kp->XU)tb0QbynvsUsVB4+kUiGZ`6PG==ga387auwvKu zNM_@TwNA8({7>?6yWKuIITt{ixtOs`_Esc`&n+b0O@UJ56%E-EJSvvTR9Jzb*0f`V0a#D$c}#`st|=LRijw zJo^CtRMlU~vS@+-55Rjrs5lG$nF}y8oAFA#lO)NBs&|n*UR6@h#X@n9XNF|-H_2^P zy_%ns4KsVQ*XwmjzFU>KN&X=7$OYc}*Htx;yg~A(S;aiT2+y2+0a_$a0k|;b@9MB) zr}qD10Jo#hzYXAKRiRd4o%?yOv_6Coj*)G$=!I~1o20z`aa3y zwUQSR>GgWuh|I`)|FVckzu$i)CJEqd2w^!%lC`{?SWnaROg_K4?sVKfSJmM-uBzt` zn->~ET$lm4K8^$UJQ8rLNsiOdGP9EaE~IJt#yA$Y83DZ4D8s`d@Bg1C`5AzRjkeDh fSYUw#=8k^>w~l+IX2qPI00000NkvXXu0mjfkX6_j literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/ic_action_settings.png b/src/main/res/drawable-hdpi/ic_action_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..0eb78f7c7341b7a4e8f2fa63bb42068ab72b1ae7 GIT binary patch literal 953 zcmV;q14jIbP))n4Ni}Vxl$aDGpk&`o z-$|#_`F!rq-hiL<35!N;xSu1DtsT=t+36NWyh zR;%H1xm@R7h2Z2aF0Y_x&^a^|RfYF=46j^Ta({w%zbId>!LJv|`(6WJb@`AmOq9s) z3@(B`mgN%~(7_IWmpEo+2=F6<2z{5)Uc&PU^e40n9Vkwg6lXje z3}E%es=c%f8FD3s<4plp6M&(0=ria!^eY3oZyF1nM8L_yR~6b#aK6b^t2o#aW8Ofw z`894cr+WabE*mkA<*wR^0q}%s%I6Mqe-dLma4EUv6aapwt*}U$0|L9EIX(giFAWPZ z&;ToJ92#s3nZm}<3kHyj*T~6V`1wM)eFA+1-O`*t#Ke)o#u_$GIewG3MgHHgO4ZXk zpK2%OimFEE25K<2u}wZ3X}1NCr>b37=TlP&7@jJ>LoFRHU1~QMLQStgOSeg8Tu22K zb6S-!g{d=xU72HB(Qe7nudn(>}YJyET`(&62EQC*nOR z+nLa5Od@vL=h_}}u9eXyO63$K^TyII43sijBKdowl+lJOjYz|V`i9*$V2|5T_>6FH z3l3btfye;Vw}y@En0Pw%WW^|GOFk%{_m>K)I7dI{%361-zyXQbW^ zw&;)xlN|dz;PrYk$FgV3-O%^xbQWi$b6WuanvJ@MZS%SCJz1`QaJZhf6;encg%pyT b{1#vU%aSg@hL7wY00000NkvXXu0mjfhD literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/ic_action_share.png b/src/main/res/drawable-hdpi/ic_action_share.png new file mode 100644 index 0000000000000000000000000000000000000000..8a6cbfea2076651afa92dd00a7161b967d4c16b4 GIT binary patch literal 647 zcmV;20(kw2P)^@RCwC#Ss`!2Koq7hCNL9Bkzqk# zmY{|}Y<5`eu-NIz{ey{F5Hr}#OfWH1Gm=hHGf@&$4Wecf`(E+{X-e-7*4{O{m%Nnb z-d(=$?)AN|rBt$J&6+ix=9mDY+wInHIpf>aVzGz{K>)z(xQyVf*pLgK$q;cgf^Xt- z3$N`6A@KJg5vHwE)_4FnDd0;yHWDpT*0lTQxHKg~TYOT+oj_9|wq*o^^qcsX}9gx=z5~;Bys8oEZVmdD*5z`Tdv|aM@1W zR#?l=8+=i;&_M*2DyosoXs%XC8(go~VWZLLi4@`1gWN~_F?@x&-`WX~0SrByeTgzk zB&*y}iO3H~d}${D5F3E`#LrH`Nf7WU9^NO!IQ(Uy%HE;VgGX3nWyEKd!b*u8#T=QJ znV9=Ga{3QnXoMsxc@Us-40pMrkvKe&?Jb!1s+~ZL$UBIfO1>9Yi8ReKO-h6cvF)O3 zp~yr6DjLf-jsW+8KvJRyrl!zTkRCKPIamv2SdmC$eQ-6ZCp5YT?Ec1xMkXme_WFy- hnl)?I^xCfg0|14P+Ji9U{RIF3002ovPDHLkV1hQnAb9`) literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/ic_menu_browser.png b/src/main/res/drawable-hdpi/ic_menu_browser.png new file mode 100644 index 0000000000000000000000000000000000000000..d6c48a89f0b51e515b7471f970321ab324ee703e GIT binary patch literal 1562 zcmV+#2IcvQP)8M9NyEf4S1j*>hN;4=VYB60-4A4OoD^Qh`J zOQX{IP}R|uAW>7**K_ay#=Q4i0bBrZQbfKKkt5#wt)@VC4AhO{BuSDCiOA^^;9rsa zfaGnGv)=nR+;XOq<@`*(n5rsC#Bscxr@7k10wPz$yos36n=k^3@lO!36qUfc(&`1t=?+=muzVoE*Yyie83bf{&t2G*pM@arg zayCz`o0F2neSyjI{j)%KhgAxL_;yB(8;3$AgB(IUYY3If{l3xJWlc$%-^a9CN&jh^p z<03L2MbYkVeasqMS*mQ3ycmYz#vlj=gCH18({z2|;94Mg9l*&biXJrrp{3;UehK7u zpyu4YLIp4a;5}1`w|f9T*KIR~hligEf?&|Od&)*~zzFOxnf|zE0(lCVG4n?1Pyx_w z5jocbfyo?XRWurnhe@K42+|3$P?Y^q+UFzCtnr?13n~#x9 zY>vbI5O}!*#1w!x<2Zg?RS$?=3zu5FMY&w!`WsaBm=ruyPmv#FC15Vw9pJPbSSQTS zpYL|52k?i1ShB}AS)C+#x37cDis?+1q7?h5X}aEfFS)@hX*WdVgh}X85qYiZG7lgy zLwB|>E8(1Ta_>cgu93W)p9y^j$%9?~fw9HLnsQZ{x|z;2GWq=22)ahSIfqboD9Qo<9&h8BaY+e%ZgJ~k5!E;+JuTa7|;9f+O_LBOPyO% zxMM6w)XX7v7UvDS%l;$6FnpTiwI!SpQ#p7ucy~!2bj$rpXSc7>4ifX;d+8)=CulDw zuW2t7cL9v8=dx7iCr zH`%QMKWRC?vX8sPAh|(A4g>f#uZLdJ#(+<&>gckmO+R5;p8=Ry$_Z>mdRA2r*dg`c zcD*XHEL&Tz*EazO?RBC>^0>8@h#Xecs9vvc>f76_#%ip_YW(NoPx5(mHb8ov!vFvP M07*qoM6N<$f~BST3jhEB literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/ic_menu_close_clear_cancel.png b/src/main/res/drawable-hdpi/ic_menu_close_clear_cancel.png new file mode 100644 index 0000000000000000000000000000000000000000..778c7f0812d8d59d7ec939c631119a902e589ee9 GIT binary patch literal 1391 zcmV-#1(5oQP)ngbTigy2`#dwm3%KVlF_q@R2XQu99UR~Y{iNA92xyBdQg3wFtt;Wn+d{~AT70AA z6Rc+}Is%Re;5fdzgwx{dO1BC?0R94b(Z;l{QUe?j2bHF%P1ej_K94Q{$oP!7uH+L= z&scOsc=n@fpeEs~}xje{fNpwX0WNw(R~=TO4a#lsmdu~%jz znValoWc4cmaA5%x+%hea)~RNIBMhKgO1GqS^AGOAhLTILSTZs!91*~z_w|`$>;)|N zTxTBufD7~3%Wcz=Qe}uEW>{M6W3gmpNH`*Z@8C#InT=*T*(G25DgX}=uSA45aIMub zw(W;=%1k74lzm>szA6B~gCvSp`z2b-*FUjqQ(LKgdqRp?p_91(*? z`V{pp=0wr{82hY-eN8|Kf=q>VEe0G6hye!$CvYgQ%(i5nU?11CuLJN9%lyMzt2n7O zQUeO$f(++j)C|r%bY-sad>#ABVdo~A&D>-wZfi+*ZzGoZTfPV%fPzfCzQaC= zBRORzlIdo1C}BTeGc75lYb6MqT&RNZ37n(wwz5=WUyPGX2fKs?;ldpDa@(|})K*@o zG(~OqjRhA%!0G`wEWw&lh>t}_1lzJdoax>g$S%xdKVLI#;vtwYu(@GUCz4pGA2VU9!75dQ8`Dn5!SRmwG zXK2YwtMWK;A?u}{ln&FTm;}5%_yy*F-_^4v#1^92#^)N|zw=5yaP`5jvIV~|bYUKk z^Sg^1IHexAuQT|f{iPY2W-H|t?D^BNLi)e_`1RLbKHp1@ZV&%}>}y~DDg6z^7lFuI ztd^z#001R)MObuXVRU6WV{&C-bY%cCFflPLFflDNF;p=#IyE;sFflDKI65#eL6wV# z0000bbVXQnWMOn=I&E)cX=Zr0)+jEP)Y*96BA`;yXtjkS5|4yk|@Gn6%TqaIYeU;jVv_iK_Q~XY~uV| z56-~Q?8Fe893%yOnC|IU)gP~3i=5yD{{U58A^FA_GcO_%LTDTtx%Yk&z^qjacO>5zeOn=fhPBofGTAZj~#H8_BOEKNsK2Ny)2dwOW_Ub3dT{BDtxm zPDI9%3Ltrk!)h{E&EPL-KQwq3MB>=Edj`jQfaR42X-y;!ElL@faE=IwZ zM*MR>x*t2q1dv>-1|OC0BoPT1CLu43=V$e@sj4@|OnL7oL`1B$7gTjC60nv;KxsTR zX*e8l_BqKNk~fkF0PrLV{+8q>$zhGK*IAZbN;7TQHJc2 z>?I+eot-^Xb-^0D9aGh%XqWbnTo*zJ4d>i7@BKu(-M$;G?&YXC{eFMEYE*TpdMK3X zMDhp8y(p-!nR71w*IK)HQ~{d@`27cxk4eH9Gfna$fYzuv0OpP)z!)rUg@9r!l1D0N4;L}d=hdI z5$D`Y#qpZev~0KAHThKoI2M!_s<`oM0A3s$`3e48{03>m VG%nw{V_X0L002ovPDHLkV1k|_8F>Hz literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/ic_action_settings.png b/src/main/res/drawable-mdpi/ic_action_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..c290e5902fd96e62a0a15c6a88d90c5d261b64b2 GIT binary patch literal 594 zcmV-Y0N@uc4+U<6{Uax;_Qov!pg~0@dGS8KwLAcfmQXM0 z^@7F>#_J%}i$PzJ{wX5ChCe~XT;n!$3yhIT>#jNlmY1A*%BanB`sRE z=TfQtu@7)wm&k2{a^0ewFAO9M1qm5UgUge-WU7GNDnJE{3~lyOcqY4HPcS}fR@Yhz z$3(`&rVJn8xjf_z2m1wFi4X~?laTRyTMkULxewzr7||ty=b-`MWZTO~iAK~!X|cg? zLDDP@3DT4OGbr-@ahvPd)2>&W>o`F8-LB&TU?V}g&231Ap8xBQC@$%Odk3)4T5RG9 gppr@sF24c{01P0jsq^4BjQ{`u07*qoM6N<$f<^ZV0{{R3 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/ic_action_share.png b/src/main/res/drawable-mdpi/ic_action_share.png new file mode 100644 index 0000000000000000000000000000000000000000..bff81179ac8c63019d3f6c961100345f3b560446 GIT binary patch literal 472 zcmV;}0Vn>6P)F4>9Wc_uP-A0bVIXA% z<-R$4_Uv)GIRI$6C6G!$6MhWDeL#nNLs!p4Wy`sMR2UX1SsdcjbpQ~k0WlX2IZJvt zfRj`WOjM40Upz`~VH0Gbg2if3i`Ae)Z-H1CO&KWht)gl!09p)7SZYW<+zd?Vx1gb6 zh2)^UK=H>UIRKiXK?WH>4LJriTo~$OOC$?6t_BEy1@H;gN4rXkEQc_Z&G$4UPk2X-A4TzsSfByV8 ztsL+YNSOdJE0#nk3(b0VKy{yhj(9?K2LKKI1T_3GkogBGkAvcVCs6!2G=VCC(h87o z1;pRTbqGBQB2Z4*LUKVwgQB<(nR9*0R{jV(v2pGaokn_ O0000fECEYq zc3sj%;B=nn0|ySAW!WGwDe116wScFY!+BFvxmU8nH7?zvMd`s5b!vTM}XS_ zxGCuuU>(?Y&P})T@;o1K&RsIIR>)oP-oN{wz`ggUfJeX`Nvme|o1{5Oe*}>2az1dg zO(2|aN~*mUc%#uc9>5<-ibI>Po7wEd#KbtT1^gA#`^+o@nx#&CW@bMDo4|>Efrpvj z2G-IvJq8SASvF{9Gm`G7X?hmelC%&-Q6F#xXaXx{)^g5Ws?}8LN6KKK3(X`+&U7Up=>o7GMNwaSZ+v|GZSTF0q8)KQ4%NOw zz&Up<!tYvCFl4TAb6 z5Zev>Sscfsoa8v#d*3hk##!%UuZor#lGjPMW62;y4~j({uvZsGQ$3vn)xH z^Ck1ziQuMNX_}txN+8ek0W&Kq01ql8$AGn6Zo_7+Ry$P5zZ_oBp{@j?D2mMNqsokL zbRwFj=?A-L;#>**Xn52j^AMdeW2d_6pzxumUul zbJLARW7y2D_TUYxuU&aH!V^4YFMlrn-pi7Kb?^Ph`<{8PM3N*q6I}8KU>R7JG%xA% i@TYX}z;EJz9sdHRw44zih}Luf0000k4UOiAAEE)4(M`_JqL@;D1TB8!2v z2N=7Z%(epwmK8Xr18D^?ZvQoBE>PPVPZ!4!kK=Er`1%V6inQIYp51svRQH17CBOYV zZ%^?$-70CDTi7b4s8%CVCiK6n`YU@tG_;mEfp{s63c6S*>bpD$2O^DU`#O_J^wij$QYx7*btC&5NX~8#BgSUZe zTGXWtx-8aT7ASXKoWM~XEa_=j-ny0fvGS|bOUx22t^vkg^O*{_=Nyx5@hfF&+fZKV z9dyR_;m)v|2Lw+jY_C#3<(RQJ!mRkvo-ohF3<^4W=_)tRa2DUnlwu9o5GJ0h%UQ!C z(t7#Jo@v4<#>$|XuexofL;{|O%NzIQEeoO5s9WWOMl^JA6C8TG8O0de<6~~|XysmOoiY3M6*m=|Q|FHal-;=y zu=~y5naeySXVm_EaI*BC>GHYzHgCPS;PCO+BG22V@g8eW$qu=bc4NNM@w*MehZr{t z?KJ-K>35-2*6CfldUqJ~?d$39%=hz}Ul^t+v)7T~$Oe@kj2AllLPQocJUA|tUO_QmvAUQh^kMk%6J1u7RPhv0;dz zv6ZR06_9OUVP#<8IJLVSMMG|WN@iLmx&{L)LsN)`S08!K12ss3YzWRzD=AMbN@Z|N i$xljE@XSq2PYp^<}AR_0LQlpOJ427T3TJN^T{u+Qv%}%n9PigBnK}uGYY$x4{h;PUYkl16{*OrZrKu|s zBnL=7X(9n@!IJ0$xB%c!D*;#1)|QB3vAE53-4cK^0RAAk(quC1`C-!c{ob_oH4Mp* zNY1q)2_oW)$Tv!<9ck-ohok&&NuJm=Ux`}ly)lArlbj*B++ZT+wbpyn))x!O zi5MXhxm+%n&*%F|9t3cPV%N?K)oOJM z$$uh(zZW&Td!Dz|81rL--f*^)x)KvN{sCNw^Wpn`uZUca=>>N>p{HRIjQ_DDew0$9 zF+E_l-CCMLM1G12I@mSFVvJF7!=T+-nxO~4-H4$5q>k!rp6vFZjXIhm_zHX;5%l>a zejLXcike7+p>(y~dK$(UGaeK4i(r{MOA_UBc~`Ys-BNp>LGTWejk z)<JK^V*QaebF0hmr$M7d9LI4ymV zc%HYFwOLYQ z05}#EwANaZ`VtW>ubv;;Nx0ljJq<(hTGZ?vKL1PTFR~^;@<~3Q?{Al$4Ji}~gSA6T z$8p{Yg8dZ0(}-Z_vJQhjLM~M%*|MyM&&W1fIeriOr+^G1Vod@8M9EkgkLZL87^7lBO0H!;kc^xEYn@m7> z$jk)^`I=;zhyjjNRe3R45b%JDz|rLFIP8*7^v5 zOC%RNl>m|_QWakh-}ieHma<=0{EefGRAxfU^2KQaVeNn zrU0CDUAMGZZi!W`e{CTbx-kaeuw{RxKCr0~kz3Y3ysrEW;G&g)n`y<`a)QdvxhghH17Mrn&ZDP&C4ukZN0TjEU&^6R3zQYP-+@eq8oMeYFz?O9Lg#v&({fS28uqHIV zBZTqbhuah8N1lBfaT@o1NvAnU}e*7 z6Mu~c1GYh9DTcoSaJFgO(b})HZc5)@8tk=tb92)x+yZcl4FlFTPIAw}3G#_{5JHXi zB+&Xrhrt~Ko*tAxv`{|E2M!^to71yp2LNFwDL#+r6uLP1AdU}rewa}Fu#A0<0^p6K z3jEW(UV$b+I!F`Sg=DE7bEO!7&k3NOknBlePLLeUm>g56@#F(ODVqPFi2wXhr!;>_ zGNuZ-QyM>L?GUo(6!pP3INu--`A z8UU$r5qa`|a{nwnJ~+vdCK8Et#Qc4h!z;q~siuStE#yx%+2W&Zi9I;71>i4J)Rd$v z7V_tFwy4|zs7M)`>H*6rakF%h z@{3ZLJVvszAuUQETcbrpCXJa|44`SPQ@&=h+WP3qX+Y08u&I#7oe)R(L2_ zN>Z84sdSrU9vQUAnrRZRR6c<2*&VmH653%4#IuNY)?$pclm*4h2_^0+$=X%;7S%O5 zD>@2X81V3mjU7HUO;KY?y!Hh3g~^MR^TMM5S-~xx#+pG&T7@OF5gk?&PFlVm9qt|A z={)M99!4(~cvP)Kkc;{%mH!%A@PLg{Gg+>9% zA;vkmP+=jQ#Pr0zK-9kzU#lSu)=KG`sSI$d@Gz(diN{cMgig)RNEsoXt6F1YMaEb~ zhNt51V2=QNH349r|CqHWVEb~EA7ZN893Zikyh(BYWhdBG$;aLd#L(tHMNa-CrFfB= zM66KD=B@98>IdKi(}csm3*}umLzyOgz tRnh7415chjdGh4RlP6D}3ZUNt3;-0k%aSxwCl>$!002ovPDHLkV1nmLGUWgO literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/ic_action_share.png b/src/main/res/drawable-xhdpi/ic_action_share.png new file mode 100644 index 0000000000000000000000000000000000000000..2f6dc413b0cb9f5577be4e54c65ef19e245a3c00 GIT binary patch literal 785 zcmV+s1Md8ZP)0KooYmbka;yWG!SM z10|I*l7WJaE;Mwbql5hqMn(!sJ8Ig}7A|0m)PW6{3?z~@U{c_L4eWdB+f-S#eRrwj zd-40ECzE&Y?tOQ@_rneXg+ifFC=`m0q9`1X!K|DfXdE?GZm<23dhoTpuUQ=>-Ce}Fuy2x%Gb_&jJ4y#|~Q49Gc$;}?Mk z=vz1+8it}O$1gcf=Yc1%34;@xD(jA$J@(0Q7Xn-}v~!pEyeVv=7<%k;xhbJ1D4u|o z&jc8^#iJ;q3vl0IjuFQ0L6S60e@iCdCmx58U59xnb3BBNhme&|L>Lo5i^k%w*N6tY zoDmWce_-#2C<2&-6&9ZvkU;VNJ>)ZFuTTRJ5&N+79FmhwF{!W?Ls|}Rq#<&}CqhO; zWDOE*TVhqOk*t;O0-!LCuAEZ2PNh=YN(~C=?2XLZRp^{t7SvDv=MWwQ;!f P00000NkvXXu0mjfjizLc literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/ic_menu_browser.png b/src/main/res/drawable-xhdpi/ic_menu_browser.png new file mode 100644 index 0000000000000000000000000000000000000000..eeca5648c0f7641da528a5016d33607178047bdc GIT binary patch literal 2513 zcmV;?2`=`DP)Y)6SrfEj-?cg7=2SNEKI&UYSHmeoQFEws==3oW$p`jCmDs4bh# zb}6N{X|4MJ>~&q&_B?OD=Xv{?c^`ni06ugaXL}fi-BA>^S(cS~(~Dm*q9|%}9H+nE5Ui{O1`7gfj zyJGIQi0Cwcqps`P^7}Iulm{fSKgnVHkFZ67Sa#`XPWTqU3o1a{$h*nmgFGy@r|pme|c3 z06qn9l$lRyt-k^gh&$XARwv*0w*VN8@x*Xac&+v4;^T{Q1tPkyweAbUuv-$U|HPui z@M;iaM%ez5F?+4GmJF`Pw(a!*I!mQeyYKs3nE4bDJ(rLc0@!MD0|4{B@4IH=LZPr$ zDRltAwCwB?u_Pn>b0UIShh;P~$mbRWL6bfsT_lcR01DF=!XC)F`GP@NUBZWd?GZCF%g6wYEw!Pl6EK4cX z?|I&SqjXX1cQKb4dM&OH1i=mf02f68B6?6ycu~Mn zNwGTt+>(s)U>JtomStIv<7_9QpJi>2jD<7}Q53Zi(U+3WP6PO&+I?EaJW<|wKq)xj^p&i$ZOPbobA=_ z6ASnTz@%a3`2W7|yY-Tr#JIuCkNH(r`I~UVZLM`*^4$`G@5r-}=Xt%&l0PFQZJC)D zlu{?_Rb^2WwJ~#!h)y_;vn&1|fOSOlQyMEEqBBHvhM6ZMDf$q=L1R%#gkji0M90nC zF@kOkBG8EJ{u8CtC$;Vcuuf~e)3U4#fKC%3f*{!Fx~?r@t`uYYdgCz>ohBkDEvZRZ zd?X6I5Qbq#!wLw)u$!6h$)fJrw!Nmttr-CCDWwh&krR8qgPDDP)eJeCMgbDnKVE8W zg+gJo$pVEWZweWXIgZoQumY4)+hpnMZO9vR;M14v7x`C8A*y5tw;M-tjo;f-8cgoHIg1RPWwwHrr+VE{dWyQQnZ` z1$7IX*jONd0Dd&Zm2KN=BzXz}oC9!KDaEBysoiy5o0+F110ATh-c$gv zS4?U~YrQAsV;LfHnE7tC*uTWizaXOH*=)9phz`Z9ZvntHNw5ZmOUU!QUP*>JEpbDM zGz;-md&OYpeX_6_-}nENMtH4t9}zuWj^Hu&pVe9)k&aPGh;SH{p2A!#EY5Q!1&)a5 zGxPG80?N$nH>?0@TbsgXQT$CpLf!S12yY?{fW1)^wS{5W5r$z$sZ?qYf?y*NU5LAi z2!A@B`6;Egne0+2b)abqke$(1Ec*(>u*37bkEHw^keC0t0paI~=tR9dLun5NtFtH%(YeLw-uBlPg)HQfiy)y0(PI=8~YKpfjRM^avl#q$TY%6L%xl$BVPDSi=<^~pbgOcMh5&gAT zEN*ffr^k$X5g`eQLca(BUTjJ+WL2^&O1X>U$%jj&QhP3!+dxEzmMVhe|9i~*16Mjr zKM>IgBFb7zH#;+0>(9+Qh$!E*Q)Sz>*R#adB?OqRHHYlxzm`!G#OJ+St^b&uUldmc zFfNCv&4I-Hub0Z}0UWI}O-2ayYjKIxHG(u%>vnsk7cdE6UTb}%S?2!|5?{ybnQzLl zlM(;kg~};XS|xl|%cP}nI>VJHG+~mproz0UlcqP&bR-&&)fV}1DPN64DRp2O7I43s8^qf6bsM(LLWV2laWXNAj}a@y@szZ$ zt}Md>=2%XW45UIlk5@-&D$Tnaf^=erYOy&HJ*d^WjYDg_GtHq$LJ0@W^N!>65Ye!4 zKLFpoHq%eS9CB34^iVkuI8^U>=@}f4AEKmGz?gZzG)rbh_)E<^2S^1Wu&Y%pVS$LQ z*LW=BIL%|4c*{Trz*afO`#rYPQ>c9Ux}q+zAyxp7h-g^i{M+@RWE=oG zwbp&i{0*llpi&4w&dlE`rTX8Rk0aBdR4TQ5p4Y3j)7dER2)8CI3Km)=Tfl}&#oEQgkZ9r??m&@fggkjk6PJJcbLJKXl&_W9> bymR;;gU%Ji;HV6q00000NkvXXu0mjf;|a8Z literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/ic_menu_close_clear_cancel.png b/src/main/res/drawable-xhdpi/ic_menu_close_clear_cancel.png new file mode 100644 index 0000000000000000000000000000000000000000..d743d752b1444755f0c4db7298a5e164378ec5fe GIT binary patch literal 1709 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 M07*qoM6N<$g7f$0oB#j- literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/ic_menu_browser.png b/src/main/res/drawable-xxhdpi/ic_menu_browser.png new file mode 100644 index 0000000000000000000000000000000000000000..8c62c7df2b7706083fe8f93a8568794272bc74e7 GIT binary patch literal 3821 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 literal 0 HcmV?d00001 diff --git a/src/main/res/layout/local_device_info_fragment.xml b/src/main/res/layout/drawer_fragment.xml similarity index 85% rename from src/main/res/layout/local_device_info_fragment.xml rename to src/main/res/layout/drawer_fragment.xml index 54273a8d..e2b7a633 100644 --- a/src/main/res/layout/local_device_info_fragment.xml +++ b/src/main/res/layout/drawer_fragment.xml @@ -12,17 +12,17 @@ + + + + + + + + + + diff --git a/src/main/res/layout/main_activity.xml b/src/main/res/layout/main_activity.xml index 20af07a8..f57c347e 100644 --- a/src/main/res/layout/main_activity.xml +++ b/src/main/res/layout/main_activity.xml @@ -14,7 +14,7 @@ android:id="@+id/drawer" android:orientation="vertical" android:layout_gravity="start" - android:layout_width="260dip" + android:layout_width="240dip" android:layout_height="match_parent" android:clickable="true" android:background="@android:color/background_light" /> diff --git a/src/main/res/layout/menu_item.xml b/src/main/res/layout/menu_item.xml new file mode 100644 index 00000000..f7b6bb0d --- /dev/null +++ b/src/main/res/layout/menu_item.xml @@ -0,0 +1,23 @@ + + + + + + + + \ No newline at end of file diff --git a/src/main/res/menu/main.xml b/src/main/res/menu/main.xml deleted file mode 100644 index b64b95ea..00000000 --- a/src/main/res/menu/main.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 5a46d30f..52853a79 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -57,7 +57,8 @@ Upload - + + Download:\u0020 @@ -74,6 +75,11 @@ Announce Server + + Donate + + https://tip4commit.com/github/syncthing/syncthing-android + @@ -280,8 +286,6 @@ Please report any problems you encounter via Github. - - Syncthing is disabled