From 920cbd6afaa76f7e4dca15bf4ca844c1d94c63ba Mon Sep 17 00:00:00 2001 From: tom79 Date: Sun, 23 Jul 2017 09:45:08 +0200 Subject: [PATCH] Improves layout when writing toots (scroll) + allows to open url with an external app when using the built-in browser (via top bar icon) --- .../mastodon/activities/MainActivity.java | 8 +- .../mastodon/activities/TootActivity.java | 40 ++- .../mastodon/activities/WebviewActivity.java | 12 + .../mastodon/drawers/StatusListAdapter.java | 5 +- .../gouv/etalab/mastodon/helper/Helper.java | 10 +- .../res/drawable-hdpi/ic_action_goright.png | Bin 0 -> 487 bytes .../res/drawable-ldpi/ic_action_goright.png | Bin 0 -> 281 bytes .../res/drawable-mdpi/ic_action_goright.png | Bin 0 -> 339 bytes .../res/drawable-xhdpi/ic_action_goright.png | Bin 0 -> 647 bytes .../res/drawable-xxhdpi/ic_action_goright.png | Bin 0 -> 985 bytes .../drawable-xxxhdpi/ic_action_goright.png | Bin 0 -> 2657 bytes app/src/main/res/layout/activity_toot.xml | 272 +++++++++--------- app/src/main/res/menu/main_webview.xml | 9 + app/src/main/res/values-fr/strings.xml | 1 + app/src/main/res/values/strings.xml | 1 + 15 files changed, 195 insertions(+), 163 deletions(-) create mode 100644 app/src/main/res/drawable-hdpi/ic_action_goright.png create mode 100644 app/src/main/res/drawable-ldpi/ic_action_goright.png create mode 100644 app/src/main/res/drawable-mdpi/ic_action_goright.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_action_goright.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_action_goright.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_action_goright.png create mode 100644 app/src/main/res/menu/main_webview.xml diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainActivity.java index 9d9d73bd1..5ecdba9c8 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/MainActivity.java @@ -369,21 +369,17 @@ public class MainActivity extends AppCompatActivity String userIdIntent; boolean matchingIntent = false; if( extras.containsKey(INTENT_ACTION) ){ - SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE); - String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null); //Id of the authenticated account final NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); userIdIntent = extras.getString(PREF_KEY_ID); //Id of the account in the intent if (extras.getInt(INTENT_ACTION) == NOTIFICATION_INTENT){ - if( userId!= null && !userId.equals(userIdIntent)) //Connected account is different from the id in the intent - changeUser(MainActivity.this, userIdIntent); //Connects the account which is related to the notification + changeUser(MainActivity.this, userIdIntent, false); //Connects the account which is related to the notification unCheckAllMenuItems(navigationView.getMenu()); navigationView.getMenu().performIdentifierAction(R.id.nav_notification, 0); if( navigationView.getMenu().findItem(R.id.nav_notification) != null) navigationView.getMenu().findItem(R.id.nav_notification).setChecked(true); matchingIntent = true; }else if( extras.getInt(INTENT_ACTION) == HOME_TIMELINE_INTENT){ - if( userId!= null && !userId.equals(userIdIntent)) //Connected account is different from the id in the intent - changeUser(MainActivity.this, userIdIntent); //Connects the account which is related to the notification + changeUser(MainActivity.this, userIdIntent, false); //Connects the account which is related to the notification unCheckAllMenuItems(navigationView.getMenu()); navigationView.getMenu().performIdentifierAction(R.id.nav_home, 0); if( navigationView.getMenu().findItem(R.id.nav_home) != null) diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java index 6c10f1592..683318de4 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/TootActivity.java @@ -43,6 +43,7 @@ import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; @@ -56,6 +57,7 @@ import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; +import android.widget.ProgressBar; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.TimePicker; @@ -121,7 +123,7 @@ public class TootActivity extends AppCompatActivity implements OnRetrieveSearcAc private int maxChar; private String visibility; private final int PICK_IMAGE = 56556; - private RelativeLayout loading_picture; + private ProgressBar loading_picture; private ImageButton toot_picture; private ImageLoader imageLoader; private DisplayImageOptions options; @@ -132,7 +134,7 @@ public class TootActivity extends AppCompatActivity implements OnRetrieveSearcAc private Button toot_it; private EditText toot_content, toot_cw_content; private TextView toot_reply_content; - private LinearLayout toot_reply_content_container; + private RelativeLayout toot_reply_content_container; private RelativeLayout toot_show_accounts; private ListView toot_lv_accounts; private BroadcastReceiver search_validate; @@ -144,8 +146,6 @@ public class TootActivity extends AppCompatActivity implements OnRetrieveSearcAc private TextView title; private ImageView pp_actionBar; - private String pattern = "^(.|\\s)*(@([a-zA-Z0-9_]{2,}))$"; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -190,12 +190,12 @@ public class TootActivity extends AppCompatActivity implements OnRetrieveSearcAc final TextView toot_space_left = (TextView) findViewById(R.id.toot_space_left); toot_visibility = (ImageButton) findViewById(R.id.toot_visibility); toot_picture = (ImageButton) findViewById(R.id.toot_picture); - loading_picture = (RelativeLayout) findViewById(R.id.loading_picture); + loading_picture = (ProgressBar) findViewById(R.id.loading_picture); toot_picture_container = (LinearLayout) findViewById(R.id.toot_picture_container); toot_content = (EditText) findViewById(R.id.toot_content); toot_cw_content = (EditText) findViewById(R.id.toot_cw_content); toot_reply_content = (TextView) findViewById(R.id.toot_reply_content); - toot_reply_content_container = (LinearLayout) findViewById(R.id.toot_reply_content_container); + toot_reply_content_container = (RelativeLayout) findViewById(R.id.toot_reply_content_container); toot_show_accounts = (RelativeLayout) findViewById(R.id.toot_show_accounts); toot_lv_accounts = (ListView) findViewById(R.id.toot_lv_accounts); toot_sensitive = (CheckBox) findViewById(R.id.toot_sensitive); @@ -406,7 +406,8 @@ public class TootActivity extends AppCompatActivity implements OnRetrieveSearcAc } }); - + String pattern = "^(.|\\s)*(@([a-zA-Z0-9_]{2,}))$"; + final Pattern sPattern = Pattern.compile(pattern); toot_content.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {} @@ -415,8 +416,14 @@ public class TootActivity extends AppCompatActivity implements OnRetrieveSearcAc @Override public void afterTextChanged(Editable s) { - Pattern sPattern = Pattern.compile(pattern); - Matcher m = sPattern.matcher(s.toString()); + int length; + //Only check last 20 characters to avoid lags + if( s.toString().length() < 20 ){ //Less than 20 characters are written + length = s.toString().length(); + }else { + length = 20; + } + Matcher m = sPattern.matcher(s.toString().substring(s.toString().length()- length, s.toString().length())); if(m.matches()) { String search = m.group(3); new RetrieveSearchAccountsAsyncTask(getApplicationContext(),search,TootActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); @@ -434,6 +441,21 @@ public class TootActivity extends AppCompatActivity implements OnRetrieveSearcAc toot_space_left.setText(String.valueOf((maxChar - totalChar))); } }); + //Allow scroll of the EditText though it's embedded in a scrollview + toot_content.setOnTouchListener(new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + if (v.getId() == R.id.toot_content) { + v.getParent().requestDisallowInterceptTouchEvent(true); + switch (event.getAction() & MotionEvent.ACTION_MASK) { + case MotionEvent.ACTION_UP: + v.getParent().requestDisallowInterceptTouchEvent(false); + break; + } + } + return false; + } + }); toot_cw_content.addTextChangedListener(new TextWatcher() { @Override diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/activities/WebviewActivity.java b/app/src/main/java/fr/gouv/etalab/mastodon/activities/WebviewActivity.java index 468b07bed..cef7813f5 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/activities/WebviewActivity.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/activities/WebviewActivity.java @@ -16,14 +16,17 @@ package fr.gouv.etalab.mastodon.activities; import android.Manifest; +import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; +import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.util.Log; +import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; @@ -119,12 +122,21 @@ public class WebviewActivity extends AppCompatActivity { webView.loadUrl(url); } + @Override + public boolean onCreateOptionsMenu(Menu menu) { + getMenuInflater().inflate(R.menu.main_webview, menu); + return true; + } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; + case R.id.action_go: + Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); + startActivity(browserIntent); + return true; default: return super.onOptionsItemSelected(item); } diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java index 918a36821..d03b36d85 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/drawers/StatusListAdapter.java @@ -210,9 +210,7 @@ public class StatusListAdapter extends BaseAdapter implements OnPostActionInterf public void onClick(View v) { try { if( !status.isTranslated() ){ - //new YandexQuery(StatusListAdapter.this).getYandexTextview(position, status.getContent(), currentLocale); new YandexQuery(StatusListAdapter.this).getYandexTextview(position, status.getContent(), currentLocale); - }else { status.setTranslationShown(!status.isTranslationShown()); statusListAdapter.notifyDataSetChanged(); @@ -272,7 +270,7 @@ public class StatusListAdapter extends BaseAdapter implements OnPostActionInterf changeDrawableColor(context, R.drawable.ic_translate,R.color.black); } - + //Redraws top icons (boost/reply) final float scale = context.getResources().getDisplayMetrics().density; if( !status.getIn_reply_to_account_id().equals("null") || !status.getIn_reply_to_id().equals("null") ){ Drawable img = ContextCompat.getDrawable(context, R.drawable.ic_reply); @@ -286,7 +284,6 @@ public class StatusListAdapter extends BaseAdapter implements OnPostActionInterf holder.status_account_displayname.setCompoundDrawables( null, null, null, null); } - //Click on a conversation if( type != RetrieveFeedsAsyncTask.Type.CONTEXT ){ holder.status_content.setOnClickListener(new View.OnClickListener() { diff --git a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java index f2413e377..24cf3282b 100644 --- a/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java +++ b/app/src/main/java/fr/gouv/etalab/mastodon/helper/Helper.java @@ -776,7 +776,7 @@ public class Helper { menuAccountsOpened = false; String userId = account.getId(); Toast.makeText(activity, activity.getString(R.string.toast_account_changed, "@" + account.getAcct() + "@" + account.getInstance()), Toast.LENGTH_LONG).show(); - changeUser(activity, userId); + changeUser(activity, userId, true); arrow.setImageResource(R.drawable.ic_arrow_drop_down); return true; } @@ -846,13 +846,15 @@ public class Helper { * @param activity Activity * @param userID String - the new user id */ - public static void changeUser(Activity activity, String userID) { + public static void changeUser(Activity activity, String userID, boolean checkItem) { final NavigationView navigationView = (NavigationView) activity.findViewById(R.id.nav_view); navigationView.getMenu().clear(); navigationView.inflateMenu(R.menu.activity_main_drawer); - navigationView.setCheckedItem(R.id.nav_home); - navigationView.getMenu().performIdentifierAction(R.id.nav_home, 0); + if( checkItem ) { + navigationView.setCheckedItem(R.id.nav_home); + navigationView.getMenu().performIdentifierAction(R.id.nav_home, 0); + } SQLiteDatabase db = Sqlite.getInstance(activity, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); Account account = new AccountDAO(activity,db).getAccountByID(userID); //Can happen when an account has been deleted and there is a click on an old notification diff --git a/app/src/main/res/drawable-hdpi/ic_action_goright.png b/app/src/main/res/drawable-hdpi/ic_action_goright.png new file mode 100644 index 0000000000000000000000000000000000000000..60bfa25ed6311758855548fe114a4082622f13ce GIT binary patch literal 487 zcmV;~zVF;XDHZrkAOa#F0wN#+B9J0E-vugQ(Px3* zEc-4%S@&IlvhBM7Wd}6+EI`=@O+E`yPC<*$0+ch*>azgl3Us&<7yvV13+#d;a1L(3 zgE9~OzB3I0`n%`BA$U@DQvy9)0^J}FUKMZdL7z>52CxF&ReE^@LpB83^{dWBp20{x z0vT|p+~%TI0ooz29WOretz;sQcf9!6eIaS_W1#GC@rgTglEAUU#T(T|Ne}L~;l*e_ zxC8|-2PVNd7zKl%OE1PW#?@)u;9ATDD*E1B(4sbLp{n|WxWUptlYfFu(9cxNRo$V* z)i~kXrwE1_tI-Xc4NW#Q`GGDYxXS68Pbs1Xmi|mm<#01oKT!8MQPe;|U*J~PKpYKC z*~Up-)W9Bi0liEe*%z4RJQq3vvrH}J2bkhMnOn8=(1v*f6KR}{wlOvJS@}L70wN#+ dA|L`b`2p&MoSsE{yQu&G002ovPDHLkV1oTH(FXtk literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-ldpi/ic_action_goright.png b/app/src/main/res/drawable-ldpi/ic_action_goright.png new file mode 100644 index 0000000000000000000000000000000000000000..70abf490b0d1a2cfe82a2526a8c01facbd22d188 GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gio-U3d6}OUq{QqyytZR6o$QD&o<1;fXM|CcnoJFM|K(Zr?j@Av$g4>BF81(6Sa&M&&qewzJ^L(NpD z!?Qmeb!3~B6ks6B@`%;p4%?BN4l)c!mRa!Vt54}#=P3G*<%9(mH7 z?@%M(A?k60y?)`z83}%3%#W@+tZ{R4`^|gg;gM;s3krCZ6xIJTB-saf1qTXsb6vlv dRh$vQz~IPlU=qr>uO8@E22WQ%mvv4FO#nxqY-#`i literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_action_goright.png b/app/src/main/res/drawable-mdpi/ic_action_goright.png new file mode 100644 index 0000000000000000000000000000000000000000..e5b64b33dd4b67a043b61d5c73a2cfc2781a1fae GIT binary patch literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=hEVFiLs4IEGZ*O8)Wxzx`o{q_#lz z9;=3~wo3jj%yo=~FC45GSpG2-{sGgBh0lOAn-}{nMuiIo7x)+&<+7|Cm^&snRG10K zvp&jp_#@M?|Nn9RWz2@kJNXhAA4Mqa`!nBY14qY9&(a1tf&2gbZ8xxWM0S=sFbLHD z^shDOlwf}$EV%wjL$QO7*9pcs4mFe6rpYrWF(zGd5aMjBYqToUXDn5y%u6ahD5=9% z({?OYNnkhQMl*rW!jXJAj7fY+rx^`R&aQ9R!PdcgQl}$q(ef%MJ_F}VcldnypG<4{ zyzyzZ6CX!&);yoYKpV;MlkO)NpE~Rj>zJug;9#x#wlPdWY~ccf% literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_action_goright.png b/app/src/main/res/drawable-xhdpi/ic_action_goright.png new file mode 100644 index 0000000000000000000000000000000000000000..feb471b2b98d7978ffd7b9d853e9c3a2d92d4244 GIT binary patch literal 647 zcmV;20(kw2P)k?+}rtm>$7|H&iTA|?(dx6xjxIXd?w>#0W5$8 zumBdo0$2bGU;!+E1-OL)(*;mQK&;6EDB~dBWC4^ZkZ7_1%6E`#vH;32kZQ63$|A@x zSpa1XWSK00vH@P0EP%2D@=X>%*#!kA3!v!r-kJ1f+p#&;tg+7?=igU={oZ zf33)J3@Y3vAP=;FVNt%WEV=my-n&6SrP#je$T_IjAs`MkfMrX6E5?TN284uZw1oUL#9|} zk>n7R$UF>veZpW)zy$aRNKcMPCk;_abQG(s4OjBL;9F%At<7_#{Zsbv+&sgJ{)s zFEA$hjoMz2paamnri+mw6-&MIumBdo0$2bG hU;!+E1+V}!`48$u!}(WC8b|;D002ovPDHLkV1mPv7FqxR literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_action_goright.png b/app/src/main/res/drawable-xxhdpi/ic_action_goright.png new file mode 100644 index 0000000000000000000000000000000000000000..8937a7d7e8e0f8bdc9225ec12476e271453aff60 GIT binary patch literal 985 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>U|!(q;uunK>+PKA4&OkDQ zqzsSQ^1qudGEXh2rM;6qNXb(#cuGouO@)Le|185PK{KYX^Jksve)4I7$4(moPbJ=m z2USnamHhm(ey*vhZ@Y2z{Jr0|f4lj={;yp4+OL1lz1e&H-?e#jI-YdM>M*eeFf3%? zQV?-qY+=%92w-3p;99`o#3<ykTG!}x`uGKINxgrr1{aEy!{$GHw0&3XzMHE% z0wrs%y+0*+;ry@EJNtUX{#(3A{%aNWcK?}#kJ3jc_ucr^BKGIh-4}ihY8M#F8m%@+ z>9Br2sAIqw;{DIIRwh%RKWfr+rMNrc1=4evZXa~geCs`J#pY<6tW*Az{>+>ibm^hW zI`+wncP%@n;9x#I`pD*FOLoZ9hRGVQ_yhUxRmzF!a0JZb*dyHl=xrEk)_L^j=bPnEWWTLr)Ii)}fZzCmGS zWt-%d?I)P*c1UMSoo}m~QX_r!HNQ#J|IG|<|NDJk@FS6BPiZyhd;7qw-^ZEe?d}bb z@^^oomOtyLO*7w$zD2yxXEOYK*t30B`US?VtYQo1SM+^c^JA}Q!oS0uRtd%ZtR=h3 z4Kx2ZC>Q*{#?EM6t@CKb@}v4{3Lzlw@7=nO7FPUl9_9U#HjiZ!JGliQxN#8>Vn}EUACp%wSu#LzDIB`J)#>niA)W2Rk?{e*c-r qYJrw2M0BO1GdS7f%o7T-e^?^}EWY>sFZl_~vJ9TCelF{r5}E)R)V)^# literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_action_goright.png b/app/src/main/res/drawable-xxxhdpi/ic_action_goright.png new file mode 100644 index 0000000000000000000000000000000000000000..f73b8bd725ec93e83e9b085596a403d6af006026 GIT binary patch literal 2657 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_toot.xml b/app/src/main/res/layout/activity_toot.xml index c7448e0a7..e103b72ce 100644 --- a/app/src/main/res/layout/activity_toot.xml +++ b/app/src/main/res/layout/activity_toot.xml @@ -15,178 +15,170 @@ You should have received a copy of the GNU General Public License along with Thomas Schneider; if not, see . --> - - - + > - - + android:layout_height="wrap_content" + > + - - - - - - + + - + android:layout_height="wrap_content" + android:maxHeight="100dp" + android:layout_gravity="center_vertical" + android:gravity="center_vertical" + android:orientation="horizontal" + > - - - - - - + + - + + + + + +