Merged original_master into PhotonQyv-Baseline

This commit is contained in:
PhotonQyv 2017-10-14 20:06:53 +01:00
commit 378cf8c5ef
23 changed files with 852 additions and 268 deletions

View File

@ -7,8 +7,8 @@ android {
applicationId "fr.gouv.etalab.mastodon"
minSdkVersion 15
targetSdkVersion 26
versionCode 60
versionName "1.5.0"
versionCode 61
versionName "1.5.1"
}
buildTypes {
release {
@ -41,6 +41,7 @@ dependencies {
compile 'com.github.chrisbanes:PhotoView:2.0.0'
compile 'com.google.code.gson:gson:2.8.0'
compile 'org.jsoup:jsoup:1.10.3'
compile 'de.hdodenhof:circleimageview:2.2.0'
safetynetCompile 'com.google.android.gms:play-services-safetynet:11.0.4'
safetynetCompile 'io.github.kobakei:ratethisapp:1.2.0'
}

View File

@ -140,7 +140,7 @@ public class MainActivity extends AppCompatActivity
private String userIdService;
private Intent streamingIntent;
public static String lastHomeId = null, lastNotificationId = null;
boolean notif_follow, notif_add, notif_mention, notif_share;
boolean notif_follow, notif_add, notif_mention, notif_share, show_boosts, show_replies;
public MainActivity() {
}
@ -310,6 +310,70 @@ public class MainActivity extends AppCompatActivity
}
});
tabStrip.getChildAt(0).setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
//Only shown if the tab has focus
if( homeFragment != null && homeFragment.getUserVisibleHint()){
PopupMenu popup = new PopupMenu(MainActivity.this, tabStrip.getChildAt(0));
popup.getMenuInflater()
.inflate(R.menu.option_filter_toots, popup.getMenu());
Menu menu = popup.getMenu();
final MenuItem itemShowBoosts = menu.findItem(R.id.action_show_boosts);
final MenuItem itemShowReplies = menu.findItem(R.id.action_show_replies);
show_boosts = sharedpreferences.getBoolean(Helper.SET_SHOW_BOOSTS, true);
show_replies = sharedpreferences.getBoolean(Helper.SET_SHOW_REPLIES, true);
itemShowBoosts.setChecked(show_boosts);
itemShowReplies.setChecked(show_replies);
popup.setOnDismissListener(new PopupMenu.OnDismissListener() {
@Override
public void onDismiss(PopupMenu menu) {
if( homeFragment != null)
homeFragment.refreshFilter();
}
});
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
item.setActionView(new View(getApplicationContext()));
item.setOnActionExpandListener(new MenuItem.OnActionExpandListener() {
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
return false;
}
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
return false;
}
});
switch (item.getItemId()) {
case R.id.action_show_boosts:
SharedPreferences.Editor editor = sharedpreferences.edit();
show_boosts = !show_boosts;
editor.putBoolean(Helper.SET_SHOW_BOOSTS, show_boosts);
itemShowBoosts.setChecked(show_boosts);
editor.apply();
break;
case R.id.action_show_replies:
editor = sharedpreferences.edit();
show_replies = !show_replies;
editor.putBoolean(Helper.SET_SHOW_REPLIES, show_replies);
itemShowReplies.setChecked(show_replies);
editor.apply();
break;
}
return false;
}
});
popup.show();
}
return true;
}
});
viewPager = (ViewPager) findViewById(R.id.viewpager);
int countPage = 2;
if( sharedpreferences.getBoolean(Helper.SET_DISPLAY_LOCAL, true))

View File

@ -14,11 +14,8 @@
* see <http://www.gnu.org/licenses>. */
package fr.gouv.etalab.mastodon.activities;
import android.annotation.SuppressLint;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.Canvas;
@ -29,11 +26,9 @@ import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.RequiresApi;
import android.support.design.widget.AppBarLayout;
import android.support.design.widget.FloatingActionButton;
@ -42,14 +37,11 @@ import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.content.ContextCompat;
import android.support.v4.content.LocalBroadcastManager;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.text.SpannableString;
import android.text.method.LinkMovementMethod;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
@ -63,7 +55,6 @@ import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.FailReason;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
import com.nostra13.universalimageloader.core.display.SimpleBitmapDisplayer;
import com.nostra13.universalimageloader.core.listener.SimpleImageLoadingListener;
@ -72,6 +63,7 @@ import java.io.File;
import java.util.ArrayList;
import java.util.List;
import de.hdodenhof.circleimageview.CircleImageView;
import fr.gouv.etalab.mastodon.asynctasks.PostActionAsyncTask;
import fr.gouv.etalab.mastodon.asynctasks.RetrieveAccountAsyncTask;
import fr.gouv.etalab.mastodon.asynctasks.RetrieveAccountsAsyncTask;
@ -94,8 +86,6 @@ import fr.gouv.etalab.mastodon.interfaces.OnRetrieveFeedsInterface;
import fr.gouv.etalab.mastodon.interfaces.OnRetrieveRelationshipInterface;
import mastodon.etalab.gouv.fr.mastodon.R;
import fr.gouv.etalab.mastodon.client.Entities.Relationship;
import static fr.gouv.etalab.mastodon.helper.Helper.canPin;
import static fr.gouv.etalab.mastodon.helper.Helper.changeDrawableColor;
@ -123,12 +113,12 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
private Relationship relationship;
private boolean showMediaOnly, showPinned;
private ImageView pp_actionBar;
private BroadcastReceiver hide_header;
private boolean isHiddingShowing = false;
private LinearLayout main_header_container;
private LinearLayout small_info;
private ImageView header_edit_profile;
private List<Status> pins;
private String accountUrl;
private int maxScrollSize;
private boolean avatarShown = true;
public enum action{
FOLLOW,
UNFOLLOW,
@ -138,15 +128,16 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
private action doAction;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, android.content.Context.MODE_PRIVATE);
int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK);
if( theme == Helper.THEME_LIGHT){
setTheme(R.style.AppTheme);
setTheme(R.style.AppTheme_NoActionBar);
}else {
setTheme(R.style.AppThemeDark);
setTheme(R.style.AppThemeDark_NoActionBar);
}
setContentView(R.layout.activity_show_account);
setTitle("");
@ -155,7 +146,7 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
Bundle b = getIntent().getExtras();
account_follow = (FloatingActionButton) findViewById(R.id.account_follow);
account_follow_request = (TextView) findViewById(R.id.account_follow_request);
main_header_container = (LinearLayout) findViewById(R.id.main_header_container);
small_info = (LinearLayout) findViewById(R.id.small_info);
header_edit_profile = (ImageView) findViewById(R.id.header_edit_profile);
account_follow.setEnabled(false);
if(b != null){
@ -186,13 +177,10 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
int positionSpinnerTrans = sharedpreferences.getInt(Helper.SET_TRANSLATOR, Helper.TRANS_YANDEX);
statusListAdapter = new StatusListAdapter(getApplicationContext(), RetrieveFeedsAsyncTask.Type.USER, accountId, isOnWifi, behaviorWithAttachments, positionSpinnerTrans, this.statuses);
options = new DisplayImageOptions.Builder().displayer(new RoundedBitmapDisplayer(80)).cacheInMemory(false)
options = new DisplayImageOptions.Builder().displayer(new SimpleBitmapDisplayer()).cacheInMemory(false)
.cacheOnDisk(true).resetViewBeforeLoading(true).build();
if( getSupportActionBar() != null)
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
tabLayout = (TabLayout) findViewById(R.id.account_tabLayout);
tabLayout.addTab(tabLayout.newTab().setText(getString(R.string.toots)));
@ -272,43 +260,6 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
}
}
});
if( Build.VERSION.SDK_INT < 21) {
//Register LocalBroadcast to receive selected accounts after search
hide_header = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (!isHiddingShowing) {
isHiddingShowing = true;
ImageView account_pp = (ImageView) findViewById(R.id.account_pp);
boolean hide = intent.getBooleanExtra("hide", false);
if (hide) {
main_header_container.setVisibility(View.GONE);
if (pp_actionBar != null)
pp_actionBar.setVisibility(View.VISIBLE);
tabLayout.setVisibility(View.GONE);
} else {
manageButtonVisibility();
tabLayout.setVisibility(View.VISIBLE);
main_header_container.setVisibility(View.VISIBLE);
if (pp_actionBar != null)
pp_actionBar.setVisibility(View.GONE);
}
account_pp.requestLayout();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
isHiddingShowing = false;
}
}, 700);
}
}
};
LocalBroadcastManager.getInstance(this).registerReceiver(hide_header, new IntentFilter(Helper.HEADER_ACCOUNT + String.valueOf(instanceValue)));
}
header_edit_profile.setOnClickListener(new View.OnClickListener() {
@Override
@ -393,7 +344,6 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
@Override
public void onDestroy(){
super.onDestroy();
LocalBroadcastManager.getInstance(this).unregisterReceiver(hide_header);
}
@Override
@ -407,7 +357,7 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
}
accountUrl = account.getUrl();
ImageView account_pp = (ImageView) findViewById(R.id.account_pp);
final CircleImageView account_pp = (CircleImageView) findViewById(R.id.account_pp);
TextView account_dn = (TextView) findViewById(R.id.account_dn);
TextView account_un = (TextView) findViewById(R.id.account_un);
final SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
@ -431,23 +381,21 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
super.onLoadingComplete(imageUri, view, loadedImage);
LinearLayout main_header_container = (LinearLayout) findViewById(R.id.main_header_container);
ImageView banner_pp = (ImageView) findViewById(R.id.banner_pp);
Bitmap workingBitmap = Bitmap.createBitmap(loadedImage);
Bitmap mutableBitmap = workingBitmap.copy(Bitmap.Config.ARGB_8888, true);
Canvas canvas = new Canvas(mutableBitmap);
Paint p = new Paint(Color.BLACK);
ColorFilter filter = new LightingColorFilter(0xFF7F7F7F, 0x00000000);
p.setColorFilter(filter);
canvas.drawBitmap(mutableBitmap, new Matrix(), p);
BitmapDrawable background = new BitmapDrawable(getResources(), mutableBitmap);
main_header_container.setBackground(background);
banner_pp.setImageDrawable(background);
}
@Override
public void onLoadingFailed(java.lang.String imageUri, android.view.View view, FailReason failReason) {
LinearLayout main_header_container = (LinearLayout) findViewById(R.id.main_header_container);
main_header_container.setBackgroundResource(R.drawable.side_nav_bar);
}
});
}
@ -462,16 +410,12 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
account_dn.setCompoundDrawables( null, null, null, null);
}
final ActionBar actionBar = getSupportActionBar();
LayoutInflater mInflater = LayoutInflater.from(ShowAccountActivity.this);
if( actionBar != null && account != null){
@SuppressLint("InflateParams") View show_account_actionbar = mInflater.inflate(R.layout.showaccount_actionbar, null);
TextView actionbar_title = (TextView) show_account_actionbar.findViewById(R.id.show_account_title);
if( account != null){
TextView actionbar_title = (TextView) findViewById(R.id.show_account_title);
if( account.getAcct() != null)
actionbar_title.setText(account.getAcct());
actionBar.setCustomView(show_account_actionbar);
actionBar.setDisplayShowCustomEnabled(true);
pp_actionBar = (ImageView) actionBar.getCustomView().findViewById(R.id.pp_actionBar);
pp_actionBar = (ImageView) findViewById(R.id.pp_actionBar);
String url = account.getAvatar();
if( url.startsWith("/") ){
url = "https://" + Helper.getLiveInstance(getApplicationContext()) + account.getAvatar();
@ -491,20 +435,41 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
public void onLoadingFailed(java.lang.String imageUri, android.view.View view, FailReason failReason){
}});
if( Build.VERSION.SDK_INT >= 21) {
AppBarLayout appBar = (AppBarLayout) findViewById(R.id.appBar);
appBar.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
if (verticalOffset > 10 ) {
pp_actionBar.setVisibility(View.GONE);
} else {
pp_actionBar.setVisibility(View.VISIBLE);
}
final AppBarLayout appBar = (AppBarLayout) findViewById(R.id.appBar);
maxScrollSize = appBar.getTotalScrollRange();
appBar.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
if (Math.abs(verticalOffset)-appBar.getTotalScrollRange() == 0) {
if( small_info.getVisibility() == View.GONE)
small_info.setVisibility(View.VISIBLE);
}else {
if( small_info.getVisibility() == View.VISIBLE)
small_info.setVisibility(View.GONE);
}
});
}
if (maxScrollSize == 0)
maxScrollSize = appBarLayout.getTotalScrollRange();
int percentage = (Math.abs(verticalOffset)) * 100 / maxScrollSize;
if (percentage >= 20 && avatarShown) {
avatarShown = false;
account_pp.animate()
.scaleY(0).scaleX(0)
.setDuration(200)
.start();
}
if (percentage <= 20 && !avatarShown) {
avatarShown = true;
account_pp.animate()
.scaleY(1).scaleX(1)
.start();
}
}
});
}else {
if( account != null && account.getAcct() != null)
setTitle(account.getAcct());

View File

@ -79,7 +79,6 @@ public class ShowConversationActivity extends AppCompatActivity implements OnRet
private SwipeRefreshLayout swipeRefreshLayout;
private ListView lv_status;
private boolean isRefreshed;
private TextView title;
private ImageView pp_actionBar;
@Override
@ -101,7 +100,7 @@ public class ShowConversationActivity extends AppCompatActivity implements OnRet
View view = inflater.inflate(R.layout.conversation_action_bar, null);
actionBar.setCustomView(view, new ActionBar.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
title = (TextView) actionBar.getCustomView().findViewById(R.id.toolbar_title);
TextView title = (TextView) actionBar.getCustomView().findViewById(R.id.toolbar_title);
pp_actionBar = (ImageView) actionBar.getCustomView().findViewById(R.id.pp_actionBar);
title.setText(R.string.conversation);
ImageView close_conversation = (ImageView) actionBar.getCustomView().findViewById(R.id.close_conversation);
@ -163,15 +162,9 @@ public class ShowConversationActivity extends AppCompatActivity implements OnRet
swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipeContainer);
new RetrieveFeedsAsyncTask(getApplicationContext(), RetrieveFeedsAsyncTask.Type.ONESTATUS, statusId,null, false,false, ShowConversationActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
if( theme == Helper.THEME_LIGHT) {
swipeRefreshLayout.setColorSchemeResources(R.color.colorAccent,
R.color.colorPrimary,
R.color.colorPrimaryDark);
}else {
swipeRefreshLayout.setColorSchemeResources(R.color.colorAccentD,
R.color.colorPrimaryD,
R.color.colorPrimaryDarkD);
}
swipeRefreshLayout.setColorSchemeResources(R.color.mastodonC4,
R.color.mastodonC2,
R.color.mastodonC3);
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {

View File

@ -1063,7 +1063,7 @@ public class TootActivity extends AppCompatActivity implements OnRetrieveSearcAc
toot_content.setText(toot_content.getText().toString().replace(attachment.getText_url(), ""));
toot_space_left.setText(String.valueOf(toot_content.length()));
//Moves the cursor
if (selectionBefore >= 0)
if (selectionBefore >= 0 && selectionBefore < toot_content.length())
toot_content.setSelection(selectionBefore);
}
((ViewGroup) namebar.getParent()).removeView(namebar);

View File

@ -58,6 +58,7 @@ import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiskCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
import com.nostra13.universalimageloader.core.display.SimpleBitmapDisplayer;
import org.json.JSONArray;
@ -111,7 +112,7 @@ public class StatusListAdapter extends BaseAdapter implements OnPostActionInterf
private List<Status> statuses;
private LayoutInflater layoutInflater;
private ImageLoader imageLoader;
private DisplayImageOptions options;
private DisplayImageOptions options, optionsAttachment;
private ViewHolder holder;
private boolean isOnWifi;
private int translator;
@ -194,9 +195,10 @@ public class StatusListAdapter extends BaseAdapter implements OnPostActionInterf
.build();
if( !imageLoader.isInited())
imageLoader.init(configImg);
options = new DisplayImageOptions.Builder().displayer(new SimpleBitmapDisplayer()).cacheInMemory(false)
options = new DisplayImageOptions.Builder().displayer(new RoundedBitmapDisplayer(10)).cacheInMemory(false)
.cacheOnDisk(true).resetViewBeforeLoading(true).build();
optionsAttachment = new DisplayImageOptions.Builder().displayer(new SimpleBitmapDisplayer()).cacheInMemory(false)
.cacheOnDisk(true).resetViewBeforeLoading(true).build();
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.drawer_status, parent, false);
holder = new ViewHolder();
@ -707,9 +709,9 @@ public class StatusListAdapter extends BaseAdapter implements OnPostActionInterf
}
}else {
if( position == ShowConversationActivity.position){
holder.main_container.setBackgroundResource(R.color.mastodonC1_);
holder.main_container.setBackgroundResource(R.color.mastodonC1___);
}else {
holder.main_container.setBackgroundResource(R.color.mastodonC1);
holder.main_container.setBackgroundResource(R.color.mastodonC1_);
}
}
}
@ -1154,7 +1156,7 @@ public class StatusListAdapter extends BaseAdapter implements OnPostActionInterf
if( url == null || url.trim().equals(""))
url = attachment.getUrl();
if( !url.trim().contains("missing.png"))
imageLoader.displayImage(url, imageView, options);
imageLoader.displayImage(url, imageView, optionsAttachment);
final int finalPosition = position;
imageView.setOnClickListener(new View.OnClickListener() {
@Override

View File

@ -828,7 +828,6 @@ public class Helper {
if( currentSubmenu == null)
continue;
final MenuItem item = currentSubmenu.add("@" + account.getAcct());
//final MenuItem item = mainMenu.addSubMenu("@" + account.getAcct()).add("@" + account.getAcct());
ImageLoader imageLoader;
DisplayImageOptions options = new DisplayImageOptions.Builder().displayer(new SimpleBitmapDisplayer()).cacheInMemory(false)
.cacheOnDisk(true).resetViewBeforeLoading(true).build();

Binary file not shown.

Before

Width:  |  Height:  |  Size: 428 B

After

Width:  |  Height:  |  Size: 292 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 279 B

After

Width:  |  Height:  |  Size: 285 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 292 B

After

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 562 B

After

Width:  |  Height:  |  Size: 299 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 801 B

After

Width:  |  Height:  |  Size: 404 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 720 B

After

Width:  |  Height:  |  Size: 498 B

View File

@ -17,10 +17,10 @@
-->
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true"
tools:context="fr.gouv.etalab.mastodon.activities.ShowAccountActivity">
<android.support.design.widget.AppBarLayout
@ -30,125 +30,173 @@
android:fitsSystemWindows="true"
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.design.widget.CollapsingToolbarLayout
android:layout_width="500dp"
android:layout_gravity="center_horizontal"
android:id="@+id/collapsingToolbarLayout"
android:layout_height="@dimen/layout_height_header"
android:fitsSystemWindows="true"
app:expandedTitleMarginStart="48dp"
app:expandedTitleMarginEnd="64dp"
app:layout_scrollFlags="scroll|snap">
<ImageView
android:id="@+id/banner_pp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
app:layout_collapseMode="parallax"
/>
<android.support.design.widget.FloatingActionButton
android:layout_gravity="end|bottom"
android:visibility="gone"
app:fabSize="mini"
android:id="@+id/account_follow"
android:textAllCaps="false"
android:gravity="end|bottom"
android:layout_marginRight="10dp"
android:layout_marginEnd="10dp"
android:layout_width="40dp"
android:layout_height="40dp"
/>
</android.support.design.widget.CollapsingToolbarLayout>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
android:minHeight="?attr/actionBarSize"
app:theme="@style/ThemeOverlay.AppCompat.Light"
app:layout_scrollFlags="scroll|enterAlways|snap"
/>
<LinearLayout
android:id="@+id/main_header_container"
android:layout_width="500dp"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:gravity="center"
android:layout_gravity="center_horizontal"
app:layout_scrollFlags="scroll|enterAlways|snap"
android:orientation="vertical">
<LinearLayout
android:id="@+id/main_header_container"
android:background="@color/mastodonC1"
android:id="@+id/header_container"
android:layout_marginTop="5dp"
android:layout_width="match_parent"
android:gravity="center_horizontal"
android:layout_height="@dimen/layout_height_header"
android:orientation="vertical">
android:gravity="center"
android:orientation="horizontal"
android:layout_height="wrap_content"
>
<LinearLayout
android:id="@+id/header_container"
android:layout_marginTop="5dp"
android:layout_width="500dp"
android:gravity="center"
android:orientation="horizontal"
android:layout_height="wrap_content"
>
<ImageView
android:padding="10dp"
android:id="@+id/account_pp"
android:layout_width="80dp"
android:layout_height="80dp"
tools:ignore="ContentDescription" />
android:layout_width="0dp"
android:layout_weight="1"
android:orientation="vertical"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:layout_height="wrap_content">
<TextView
android:id="@+id/account_dn"
android:textColor="@color/mastodonC4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:textSize="16sp"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:orientation="vertical"
android:layout_height="wrap_content">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/account_dn"
android:textColor="@color/mastodonC4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:textColor="?attr/color_in_account_header"
android:id="@+id/account_un"
android:maxLines="1"
android:textSize="16sp"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
<LinearLayout
android:layout_width="wrap_content"
android:textSize="14sp"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:textColor="?attr/color_in_account_header"
android:id="@+id/account_un"
android:maxLines="1"
android:layout_width="wrap_content"
android:textSize="14sp"
android:layout_height="wrap_content"
/>
<ImageView
android:visibility="gone"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:gravity="center_horizontal|bottom"
android:src="@drawable/ic_edit"
android:id="@+id/header_edit_profile"
android:layout_width="20dp"
android:layout_height="20dp"
tools:ignore="ContentDescription" />
</LinearLayout>
/>
<ImageView
android:visibility="gone"
android:layout_marginLeft="20dp"
android:layout_marginStart="20dp"
android:gravity="center_horizontal|bottom"
android:src="@drawable/ic_edit"
android:id="@+id/header_edit_profile"
android:layout_width="20dp"
android:layout_height="20dp"
tools:ignore="ContentDescription" />
</LinearLayout>
<LinearLayout
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_marginStart="10dp"
android:layout_marginLeft="10dp"
android:visibility="gone"
android:id="@+id/account_followed_by"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:textColor="?attr/colorAccent"
android:text="@string/followed_by"
android:maxLines="1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/account_follow_request"
android:layout_marginStart="10dp"
android:layout_marginLeft="10dp"
android:visibility="gone"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:textColor="?attr/colorAccent"
android:text="@string/request_sent"
android:maxLines="1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_marginStart="10dp"
android:layout_marginLeft="10dp"
android:visibility="gone"
android:id="@+id/account_followed_by"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:textColor="?attr/colorAccent"
android:text="@string/followed_by"
android:maxLines="1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/account_follow_request"
android:layout_marginStart="10dp"
android:layout_marginLeft="10dp"
android:visibility="gone"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:textColor="?attr/colorAccent"
android:text="@string/request_sent"
android:maxLines="1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
/>
</LinearLayout>
<android.support.design.widget.FloatingActionButton
android:layout_gravity="center"
android:visibility="gone"
app:fabSize="mini"
android:id="@+id/account_follow"
android:textAllCaps="false"
android:gravity="center"
android:layout_marginRight="10dp"
android:layout_marginEnd="10dp"
android:layout_width="40dp"
android:layout_height="40dp"
/>
</LinearLayout>
<TextView
android:id="@+id/account_note"
android:padding="10dp"
android:gravity="center"
android:textColor="?attr/color_in_account_header"
android:layout_width="500dp"
android:autoLink="web"
android:layout_height="wrap_content" />
</LinearLayout>
</android.support.design.widget.CollapsingToolbarLayout>
</LinearLayout>
<TextView
android:id="@+id/account_note"
android:padding="10dp"
android:layout_marginTop="5dp"
android:gravity="center"
android:textColor="?attr/color_in_account_header"
android:layout_width="match_parent"
android:maxLines="4"
android:autoLink="web"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:id="@+id/small_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="gone"
android:padding="5dp"
tools:ignore="UseCompoundDrawables">
<ImageView
android:id="@+id/pp_actionBar"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:layout_marginEnd="10dp"
android:layout_marginRight="10dp"
tools:ignore="ContentDescription" />
<TextView
android:layout_marginLeft="5dp"
android:layout_marginStart="5dp"
android:layout_gravity="center_vertical"
android:id="@+id/show_account_title"
android:maxLines="1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="14sp"
android:textColor="?attr/actionBarTextColor"
/>
</LinearLayout>
<android.support.design.widget.TabLayout
android:id="@+id/account_tabLayout"
android:layout_width="match_parent"
@ -158,6 +206,7 @@
app:tabGravity="fill"
/>
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/account_viewpager"
android:layout_width="match_parent"
@ -165,4 +214,17 @@
app:layout_behavior="@string/appbar_scrolling_view_behavior"
/>
<de.hdodenhof.circleimageview.CircleImageView
android:padding="10dp"
android:id="@+id/account_pp"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_gravity="center_horizontal"
app:layout_anchor="@id/main_header_container"
android:elevation="8dp"
app:civ_border_width="2dp"
app:civ_border_color="#FFF"
app:layout_scrollFlags="scroll"
app:layout_anchorGravity="top|center_horizontal"
/>
</android.support.design.widget.CoordinatorLayout>

View File

@ -84,7 +84,8 @@
<ImageButton
android:id="@+id/toot_picture"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_height="wrap_content"
style="@style/Base.Widget.AppCompat.Button.Colored"
android:src="@drawable/ic_insert_photo"
tools:ignore="ContentDescription" />
<ImageButton
@ -92,7 +93,8 @@
android:layout_marginStart="5dp"
android:id="@+id/toot_visibility"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_height="wrap_content"
style="@style/Base.Widget.AppCompat.Button.Colored"
android:src="@drawable/ic_action_globe"
tools:ignore="ContentDescription" />
<Button

View File

@ -17,10 +17,10 @@
-->
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:fitsSystemWindows="true"
tools:context="fr.gouv.etalab.mastodon.activities.ShowAccountActivity">
<android.support.design.widget.AppBarLayout
@ -31,15 +31,47 @@
android:theme="@style/AppTheme.AppBarOverlay">
<android.support.design.widget.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/collapsingToolbarLayout"
android:layout_height="@dimen/layout_height_header"
android:fitsSystemWindows="true"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
app:expandedTitleMarginStart="48dp"
app:expandedTitleMarginEnd="64dp"
app:layout_scrollFlags="scroll|snap">
<ImageView
android:id="@+id/banner_pp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
app:layout_collapseMode="parallax"
/>
<android.support.design.widget.FloatingActionButton
android:layout_gravity="end|bottom"
android:visibility="gone"
app:fabSize="mini"
android:id="@+id/account_follow"
android:textAllCaps="false"
android:gravity="end|bottom"
android:layout_marginRight="10dp"
android:layout_marginEnd="10dp"
android:layout_width="40dp"
android:layout_height="40dp"
/>
</android.support.design.widget.CollapsingToolbarLayout>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?attr/actionBarSize"
app:theme="@style/ThemeOverlay.AppCompat.Light"
app:layout_scrollFlags="scroll|enterAlways|snap"
/>
<LinearLayout
android:id="@+id/main_header_container"
android:background="@color/mastodonC1"
android:gravity="center_horizontal"
android:layout_width="match_parent"
android:layout_height="@dimen/layout_height_header"
android:layout_height="wrap_content"
android:paddingTop="8dp"
android:gravity="center"
app:layout_scrollFlags="scroll|enterAlways|snap"
android:orientation="vertical">
<LinearLayout
android:id="@+id/header_container"
@ -49,16 +81,12 @@
android:orientation="horizontal"
android:layout_height="wrap_content"
>
<ImageView
android:padding="10dp"
android:id="@+id/account_pp"
android:layout_width="80dp"
android:layout_height="80dp"
tools:ignore="ContentDescription" />
<LinearLayout
android:layout_width="0dp"
android:layout_weight="1"
android:orientation="vertical"
android:layout_gravity="center_horizontal"
android:gravity="center_horizontal"
android:layout_height="wrap_content">
<TextView
android:id="@+id/account_dn"
@ -125,22 +153,12 @@
/>
</LinearLayout>
</LinearLayout>
<android.support.design.widget.FloatingActionButton
android:layout_gravity="center"
android:visibility="gone"
app:fabSize="mini"
android:id="@+id/account_follow"
android:textAllCaps="false"
android:gravity="center"
android:layout_marginRight="10dp"
android:layout_marginEnd="10dp"
android:layout_width="40dp"
android:layout_height="40dp"
/>
</LinearLayout>
<TextView
android:id="@+id/account_note"
android:padding="10dp"
android:layout_marginTop="5dp"
android:gravity="center"
android:textColor="?attr/color_in_account_header"
android:layout_width="match_parent"
@ -148,17 +166,45 @@
android:autoLink="web"
android:layout_height="wrap_content" />
</LinearLayout>
</android.support.design.widget.CollapsingToolbarLayout>
<android.support.design.widget.TabLayout
android:id="@+id/account_tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabTextAppearance="@android:style/TextAppearance.Widget.TabWidget"
app:tabMode="fixed"
app:tabGravity="fill"
/>
<LinearLayout
android:id="@+id/small_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="gone"
android:padding="5dp"
tools:ignore="UseCompoundDrawables">
<ImageView
android:id="@+id/pp_actionBar"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:layout_marginEnd="10dp"
android:layout_marginRight="10dp"
tools:ignore="ContentDescription" />
<TextView
android:layout_marginLeft="5dp"
android:layout_marginStart="5dp"
android:layout_gravity="center_vertical"
android:id="@+id/show_account_title"
android:maxLines="1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="14sp"
android:textColor="?attr/actionBarTextColor"
/>
</LinearLayout>
<android.support.design.widget.TabLayout
android:id="@+id/account_tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabTextAppearance="@android:style/TextAppearance.Widget.TabWidget"
app:tabMode="fixed"
app:tabGravity="fill"
/>
</android.support.design.widget.AppBarLayout>
<android.support.v4.view.ViewPager
android:id="@+id/account_viewpager"
android:layout_width="match_parent"
@ -166,4 +212,17 @@
app:layout_behavior="@string/appbar_scrolling_view_behavior"
/>
<de.hdodenhof.circleimageview.CircleImageView
android:padding="10dp"
android:id="@+id/account_pp"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_gravity="center_horizontal"
app:layout_anchor="@id/main_header_container"
android:elevation="8dp"
app:civ_border_width="2dp"
app:civ_border_color="#FFF"
app:layout_scrollFlags="scroll"
app:layout_anchorGravity="top|center_horizontal"
/>
</android.support.design.widget.CoordinatorLayout>

View File

@ -83,16 +83,18 @@
android:layout_height="wrap_content">
<ImageButton
android:id="@+id/toot_picture"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_width="50dp"
android:layout_height="wrap_content"
style="@style/Base.Widget.AppCompat.Button.Colored"
android:src="@drawable/ic_insert_photo"
tools:ignore="ContentDescription" />
<ImageButton
android:layout_marginLeft="5dp"
android:layout_marginStart="5dp"
android:id="@+id/toot_visibility"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_width="50dp"
android:layout_height="wrap_content"
style="@style/Base.Widget.AppCompat.Button.Colored"
android:src="@drawable/ic_action_globe"
tools:ignore="ContentDescription" />
<Button

View File

@ -0,0 +1,435 @@
<resources>
<string name="navigation_drawer_open">Abrir menu</string>
<string name="navigation_drawer_close">Fechar menu</string>
<string name="action_about">Sobre</string>
<string name="action_about_instance">Sobre a instância</string>
<string name="action_privacy">Privacidade</string>
<string name="action_cache">Cache</string>
<string name="action_logout">Sair</string>
<string name="login">Entrar</string>
<!-- common -->
<string name="close">Fechar</string>
<string name="yes">Sim</string>
<string name="no">Não</string>
<string name="cancel">Cancelar</string>
<string name="download">Baixar</string>
<string name="download_file">Baixar %1$s</string>
<string name="download_over">Download completo</string>
<string name="save_file">Salvar %1$s</string>
<string name="save_over">Mídia salva</string>
<string name="download_from">Arquivo: %1$s</string>
<string name="password">Senha</string>
<string name="email">E-mail</string>
<string name="accounts">Contas</string>
<string name="toots">Toots</string>
<string name="tags">Tags</string>
<string name="token">Token</string>
<string name="save">Salvar</string>
<string name="restore">Restaurar</string>
<string name="two_factor_authentification">Autenticação em dois passos?</string>
<string name="other_instance">Outra instância que não mastodon.etalab.gouv.fr?</string>
<string name="no_result">Sem resultados!</string>
<string name="instance">Instância</string>
<string name="instance_example">Instância: mastodon.social</string>
<string name="toast_account_changed">Agora funcionando com a conta %1$s</string>
<string name="add_account">Adicionar conta</string>
<string name="clipboard">O conteúdo do toot foi copiado para a área de transferência</string>
<string name="change">Mudar</string>
<string name="choose_picture">Selecione uma imagem…</string>
<string name="clear">Limpar</string>
<string name="microphone">Microfone</string>
<string name="speech_prompt">Por favor, diga algo</string>
<string name="speech_not_supported">Desculpe! Seu aparelho não suporta entrada por voz!</string>
<string name="delete_all">Excluir tudo</string>
<string name="translate_toot">Traduzir este toot.</string>
<string name="schedule">Agendar</string>
<string name="text_size">Tamanhos de ícones e texto</string>
<string name="text_size_change">Mudar o tamanho de texto atual:</string>
<string name="icon_size_change">Mudar o tamanho de ícones atual:</string>
<string name="next">Próximo</string>
<string name="previous">Anterior</string>
<string name="open_with">Abrir com</string>
<string name="validate">Validar</string>
<string name="media">Mídia</string>
<string name="share_with">Compartilhar com</string>
<string name="shared_via">Compartilhado via Mastalab</string>
<string name="replies">Respostas</string>
<string name="username">Nome de usuário</string>
<string name="drafts">Rascunhos</string>
<string name="new_data">Novos dados disponíveis! Deseja exibi-los?</string>
<string name="favourite">Favoritos</string>
<string name="follow">Novos seguidores</string>
<string name="mention">Menções</string>
<string name="reblog">Compartilhamentos</string>
<string name="show_boosts">Show boosts</string>
<string name="show_replies">Show replies</string>
<!--- Menu -->
<string name="home_menu">Página inicial</string>
<string name="local_menu">Timeline local</string>
<string name="global_menu">Timeline federada</string>
<string name="neutral_menu_title">Opções</string>
<string name="favorites_menu">Favoritos</string>
<string name="communication_menu_title">Comunicação</string>
<string name="muted_menu">Usuários silenciados</string>
<string name="blocked_menu">Usuários bloqueados</string>
<string name="remote_follow_menu">Seguir remotamente</string>
<string name="notifications">Notificações</string>
<string name="follow_request">Solicitações de seguidor</string>
<string name="optimization">Otimização</string>
<string name="settings">Configurações</string>
<string name="profile">Perfil</string>
<string name="make_a_choice">O que você quer fazer?</string>
<string name="delete_account_title">Excluir conta</string>
<string name="delete_account_message">Excluir a conta %1$s do aplicativo?</string>
<string name="send_email">Mandar um e-mail</string>
<string name="choose_file">Por favor, selecione um arquivo</string>
<string name="choose_file_error">Nenhum gerenciador de arquivo encontrado!</string>
<string name="click_to_change">Clique no caminho para mudá-lo</string>
<string name="failed">Falhou!</string>
<string name="scheduled_toots">Toots agendados</string>
<!-- Status -->
<string name="no_status">Sem toots para exibir</string>
<string name="fav_added">Toot adicionado aos favoritos</string>
<string name="fav_removed">Toot removido dos favoritos!</string>
<string name="reblog_added">Toot compartilhado!</string>
<string name="reblog_removed">Toot não mais compartilhado!</string>
<string name="reblog_by">Compartilhado por %1$s</string>
<string name="favourite_add">Adicionar este toot aos favoritos?</string>
<string name="favourite_remove">Remover este toot dos favoritos?</string>
<string name="reblog_add">Compartilhar este toot?</string>
<string name="reblog_remove">Desfazer compartilhamento?</string>
<string name="pin_add">Fixar este toot?</string>
<string name="pin_remove">Desafixar este toot?</string>
<string name="more_action_1">Silenciar</string>
<string name="more_action_2">Bloquear</string>
<string name="more_action_3">Denunciar</string>
<string name="more_action_4">Deletar</string>
<string name="more_action_5">Copiar</string>
<string name="more_action_6">Compartilhar</string>
<string name="more_action_7">Mencionar</string>
<string-array name="more_action_confirm">
<item>Silenciar esta conta?</item>
<item>Bloquear esta conta?</item>
<item>Denunciar este toot?</item>
</string-array>
<string-array name="more_action_owner_confirm">
<item>Excluir este toot?</item>
</string-array>
<plurals name="preview_replies">
<item quantity="one">%d resposta</item>
<item quantity="other">%d respostas</item>
</plurals>
<!-- Date -->
<plurals name="date_seconds">
<item quantity="one">Há %d segundo</item>
<item quantity="other">Há %d segundos</item>
</plurals>
<plurals name="date_minutes">
<item quantity="one">Há %d minuto</item>
<item quantity="other">Há %d minutos</item>
</plurals>
<plurals name="date_hours">
<item quantity="one">Há %d hora</item>
<item quantity="other">Há %d horas</item>
</plurals>
<string name="date_yesterday">Ontem</string>
<string name="date_day_before_yesterday">Anteontem</string>
<string name="date_day">Há %d dias</string>
<plurals name="date_month">
<item quantity="one">Há %d mês</item>
<item quantity="other">Há %d mês</item>
</plurals>
<plurals name="date_year">
<item quantity="one">Há %d ano</item>
<item quantity="other">Há %d anos</item>
</plurals>
<!-- TOOT -->
<string name="toot_cw_placeholder">Alerta de conteúdo</string>
<string name="toot_placeholder">No que você está pensando?</string>
<string name="toot_it">TOOT!</string>
<string name="cw">cw</string>
<string name="toot_title">Escrever um toot</string>
<string name="toot_title_reply">Responder a um toot</string>
<string name="toot_no_space">Você já gastou os 500 caracteres permitidos!</string>
<string name="toot_select_image">Selecionar mídia</string>
<string name="toot_select_image_error">Ocorreu um erro enquanto se selecionava a mídia!</string>
<string name="toot_delete_media">Excluir mídia?</string>
<string name="toot_error_no_content">Toot vazio!</string>
<string name="toot_visibility_tilte">Visibilidade do toot</string>
<string name="toots_visibility_tilte">Visibilidade padrão dos toots: </string>
<string name="toot_sent">Toot enviado!</string>
<string name="toot_reply_content_title">Você está respondendo a este toot:</string>
<string name="toot_sensitive">Conteúdo sensível?</string>
<string-array name="toot_visibility">
<item>Postar em timelines públicas</item>
<item>Não postar em timelines públicas</item>
<item>Postar apenas para seguidores</item>
<item>Postar apenas para usuários mencionados</item>
</string-array>
<string name="no_draft">Sem rascunhos!</string>
<string name="choose_toot">Escolha um toot</string>
<string name="choose_accounts">Escolha uma conta</string>
<string name="remove_draft">Excluir rascunho?</string>
<string name="show_reply">Clique no botão para exibir toot original</string>
<!-- Instance -->
<string name="instance_no_description">Sem descrição!</string>
<!-- About -->
<string name="about_vesrion">Versão %1$s</string>
<string name="about_developer">Desenvolvedor:</string>
<string name="about_developer_action">\@tschneider</string>
<string name="about_license">Licença: </string>
<string name="about_license_action">GNU GPL V3</string>
<string name="about_code">Código-fonte: </string>
<string name="about_code_action">Bitbucket</string>
<string name="about_yandex">Tradução dos toots:</string>
<string name="about_thekinrar">Busca de instâncias:</string>
<string name="about_thekinrar_action">instances.social</string>
<string name="thanks_text_logo">Designer do ícone:</string>
<!-- Conversation -->
<string name="conversation">Conversa</string>
<!-- Accounts -->
<string name="no_accounts">Sem contas para exibir</string>
<string name="no_follow_request">Sem solicitações de seguidor</string>
<string name="status_cnt">Toots \n %d</string>
<string name="following_cnt">Seguindo \n %d</string>
<string name="followers_cnt">Seguidores \n %d</string>
<string name="pins_cnt">Fixado \n %d</string>
<string name="authorize">Autorizar</string>
<string name="reject">Rejeitar</string>
<!-- Scheduled toots -->
<string name="no_scheduled_toots">Nenhum toot agendado para exibir!</string>
<string name="no_scheduled_toots_indications">Escreva um toot e então clique em <b>Agendar</b> no topo do menu.</string>
<string name="remove_scheduled">Excluir toot agendado?</string>
<string name="media_count">Mídia: %d</string>
<string name="toot_scheduled">Toot agendado!</string>
<string name="toot_scheduled_date">A data de agendamento deve ser após o momento atual!</string>
<string name="warning_battery">Economia de bateria ativada! Pode não funcionar como esperado.</string>
<!-- Notifications -->
<string name="no_notifications">Sem notificações para exibir</string>
<string name="notif_mention">mencionou você</string>
<string name="notif_reblog">compartilhou sua postagem</string>
<string name="notif_favourite">favoritou sua postagem</string>
<string name="notif_follow">seguiu você</string>
<string name="notif_pouet">Novo toot de %1$s</string>
<plurals name="other_notifications">
<item quantity="one">e outra %d notificação</item>
<item quantity="other">e outras %d notificações</item>
</plurals>
<plurals name="other_notif_hometimeline">
<item quantity="one">e outro % toot para descobrir</item>
<item quantity="other">e outros %d toots para descobrir</item>
</plurals>
<string name="delete_notification_ask">Excluir notificação?</string>
<string name="delete_notification_ask_all">Excluir todas as notificações?</string>
<string name="delete_notification">Notificação excluída!</string>
<string name="delete_notification_all">Todas as notificações foram excluídas!</string>
<!-- HEADER -->
<string name="following">Seguindo</string>
<string name="followers">Seguidores</string>
<string name="pinned_toots">Fixados</string>
<!-- TOAST -->
<string name="client_error">Não foi possível detectar id do cliente!</string>
<string name="no_internet">Sem conexão!</string>
<string name="toast_block">Conta bloqueada!</string>
<string name="toast_unblock">Conta desbloqueada!</string>
<string name="toast_mute">Silêncio ativado!</string>
<string name="toast_unmute">Silêncio desativado!</string>
<string name="toast_follow">Você seguiu a conta!</string>
<string name="toast_unfollow">Você deixou de seguir a conta!</string>
<string name="toast_reblog">Toot compartilhado!</string>
<string name="toast_unreblog">Toot descompartilhado!</string>
<string name="toast_favourite">Toot adicionado aos favoritos!</string>
<string name="toast_unfavourite">Toot retirado dos favoritos!</string>
<string name="toast_report">Toot denunciado!</string>
<string name="toast_unstatus">Toot excluído!</string>
<string name="toast_pin">Toot fixado!</string>
<string name="toast_unpin">Toot desafixado!</string>
<string name="toast_error">Oops! Ocorreu um erro!</string>
<string name="toast_code_error">Ocorreu um erro! A instância não retornou um código de autorização!</string>
<string name="toast_error_instance">O domínio da instância parece não ser válido!</string>
<string name="toast_error_loading_account">Ocorreu um erro na transição entre contas!</string>
<string name="toast_error_search">Ocorreu um erro na busca!</string>
<string name="toast_error_login">Não é possível entrar!</string>
<string name="toast_update_credential_ok">Dados de perfil salvos!</string>
<string name="nothing_to_do">Nenhuma ação pode ser feita</string>
<string name="toast_saved">Mídia salva!</string>
<string name="toast_error_translate">Ocorreu um erro na tradução!</string>
<string name="toast_toot_saved">Rascunho salvo!</string>
<string name="toast_error_char_limit">Você tem certeza que sua instância permite esse número de caracteres? Geralmente, são 500 caracteres.</string>
<string name="toast_visibility_changed">Visibilidade dos toots foi mudada para a conta %1$s</string>
<string name="toast_empty_search">Nome da instância e nome de exibição não podem ser vazios!</string>
<!-- Settings -->
<string name="settings_title_optimisation">Otimização do carregamento</string>
<string name="set_toots_page">Número de toots por atualização</string>
<string name="set_accounts_page">Número de contas por atualização</string>
<string name="set_notifications_page">Número de notificações por atualização</string>
<string name="set_attachment_always">Sempre</string>
<string name="set_attachment_wifi">Wi-Fi</string>
<string name="set_attachment_ask">Pedir</string>
<string name="set_attachment_action">Carregar mídia</string>
<string name="load_attachment">Carregar imagens</string>
<string name="load_attachment_spoiler">Mostrar mais…</string>
<string name="load_sensitive_attachment">Conteúdo sensível</string>
<string name="set_display_reply">Exibir mensagem anterior nas respostas</string>
<string name="set_display_local">Exibir timeline local</string>
<string name="set_display_global">Exibir timeline federada</string>
<string name="set_folder_title">Caminho: </string>
<string name="set_auto_store_toot">Salvar rascunhos automaticamente</string>
<string name="set_bubble_counter">Exibir contadores</string>
<string name="set_auto_add_media_url">Adicionar URL da mídia nos toots</string>
<string name="settings_title_notifications">Administrar notificações</string>
<string name="set_notif_follow">Notificar quando alguém te seguir</string>
<string name="set_notif_follow_ask">Notificar quando alguém requisitar ser seu seguidor</string>
<string name="set_notif_follow_share">Notificar quando alguém compartilhar suas postagens</string>
<string name="set_notif_follow_add">Notificar quando alguém favoritar suas postagens</string>
<string name="set_notif_follow_mention">Notificar quando alguém te mencionar</string>
<string name="set_share_validation">Mostrar diálogo antes de compartilhar</string>
<string name="set_share_validation_fav">Mostrar diálogo antes de adicionar aos favoritos</string>
<string name="settings_title_more_options">Configurações avançadas</string>
<string name="set_wifi_only">Notificar somente em Wi-Fi</string>
<string name="set_notify">Notificar?</string>
<string name="set_notif_silent">Notificações silenciosas</string>
<string name="set_night_mode">Modo noturno</string>
<string name="set_nsfw_timeout">Tempo até visualização de NSFW expirar (segundos, 0 significa desligado)</string>
<string name="settings_title_profile">Editar perfil</string>
<string name="set_profile_description">Bio…</string>
<string name="set_save_changes">Salvar mudanças</string>
<string name="set_header_picture_overlay">Escolher cabeçalho</string>
<string name="set_preview_reply">Exibir número de respostas na página inicial</string>
<string name="set_preview_reply_pp">Exibir imagens de perfil?</string>
<string name="set_multiaccount_actions">Permitir interações entre contas?</string>
<string name="note_no_space">Você já usou os 160 caracteres permitidos!</string>
<string name="username_no_space">Você já usou os 30 caracteres permitidos!</string>
<string name="settings_title_hour">Horário das notificações:</string>
<string name="settings_time_from">Entre</string>
<string name="settings_time_to">e</string>
<string name="settings_time_greater">O tempo deve ser maior que %1$s</string>
<string name="settings_time_lower">O tempo deve ser menor que %1$s</string>
<string name="settings_hour_init">Horário de início</string>
<string name="settings_hour_end">Horário de fim</string>
<string name="embedded_browser">Usar navegador interno</string>
<string name="use_javascript">Habilitar Javascript</string>
<string name="use_cookies">Habilitar cookies de terceiros</string>
<string name="settings_ui_layout">Modelo das timelines: </string>
<string-array name="settings_menu_tabs">
<item>Abas</item>
<item>Menu</item>
<item>Abas e menu</item>
</string-array>
<string-array name="settings_translation">
<item>Yandex</item>
<item>Google</item>
<item>Não</item>
</string-array>
<string name="set_led_colour">Configurar cor do LED:</string>
<string-array name="led_colours">
<item>Azul</item>
<item>Cyano</item>
<item>Magenta</item>
<item>Verde</item>
<item>Vermelho</item>
<item>Amarelo</item>
<item>Branco</item>
</string-array>
<string name="set_title_news">Novidades</string>
<string name="set_notification_news">Notificar sobre novos toots na página inicial</string>
<string name="set_show_error_messages">Exibir mensagens de erro?</string>
<string name="action_follow">Seguir</string>
<string name="action_unfollow">Deixar de seguir</string>
<string name="action_block">Bloquear</string>
<string name="action_unblock">Desbloquear</string>
<string name="action_mute">Silenciar</string>
<string name="action_no_action">Sem ação</string>
<string name="action_unmute">Retirar silêncio</string>
<string name="request_sent">Solicitação enviada</string>
<string name="followed_by">Segue você</string>
<string name="action_search">Busca</string>
<!-- Quick settings for notifications -->
<string name="settings_popup_title">Notificações</string>
<string name="settings_popup_message">
Por favor, confirme que notificações você quer receber.
Você pode habilitar ou desabilitar essas notificações mais tarde em configurações (na aba Notificações).
</string>
<string name="settings_popup_timeline">Para toots não lidos na página inicial?</string>
<string name="settings_popup_notification">Para notificações não lidas?</string>
<!-- CACHE -->
<string name="cache_title">Limpar cache</string>
<string name="cache_message">Há %1$s em dados em cache.\n\nGostaria de exclui-los?</string>
<string name="cache_units">Mb</string>
<string name="toast_cache_clear">Cache limpo! %1$s foram liberados</string>
<!-- PRIVACY -->
<string name="privacy_data_title">Dados salvos</string>
<string name="privacy_data">
Apenas informação básica das contas é armazenada no aparelho.
Estes dados são estritamente confidenciais e só podem ser usados pelo aplicativo.
Desinstalar o aplicativo imediatamente remove esses dados.\n
&#9888; Credenciais nunca são armazenadas. Elas só são usadas durante a autenticação segura (SSL) com uma instância.
</string>
<string name="privacy_authorizations_title">Permissões:</string>
<string name="privacy_authorizations">
- <b>ACCESS_NETWORK_STATE</b>: Usada para detectar se o aparelho está conectado a uma rede Wi-Fi.\n
- <b>INTERNET</b>: Usado para consultas em instâncias.\n
- <b>WRITE_EXTERNAL_STORAGE</b>: Usada para armazenar mídia ou mover o aplicativo para o cartão SD.\n
- <b>READ_EXTERNAL_STORAGE</b>: Usada para adicionar mídia a toots.\n
- <b>BOOT_COMPLETED</b>: Usada para iniciar o serviço de notificação.\n
- <b>WAKE_LOCK</b>: Usada durante o serviço de notificação.
</string>
<string name="privacy_API_authorizations_title">Permissões da API:</string>
<string name="privacy_API_authorizations">
- <b>Leitura</b>: Ler dados.\n
- <b>Escrita</b>: Fazer postagens e enviar mídia em postagens.\n
- <b>Seguir</b>: Seguir, deixar de seguir, bloquear, desbloquear.\n\n
<b>&#9888; Essas ações são realizadas apenas quando o usuário requisitá-las.</b>
</string>
<string name="privacy_API_title">Rastreamento e bibliotecas</string>
<string name="privacy_API">
O aplicativo <b>não usa ferramentas de rastreamento</b> (medição de audiência, relatório de erros, etc.) e não contém propagandas.\n\n
O uso de bibliotecas é mínimo: \n
- <b>Android Asynchronous Http Client</b>: Para administrar consultas\n
- <b>Universal Image Loader</b>: Para administrar mídia\n
- <b>Android-Job</b>: Para administrar serviços\n
- <b>PhotoView</b>: Para administrar imagens\n
- <b>Gson</b> : Para administrar rascunhos
</string>
<string name="privacy_API_yandex_title">Tradução de toots</string>
<string name="privacy_API_yandex_authorizations">
O aplicativo oferece a habilidade de traduzir toots usando o idioma do aparelho a API do Yandex.\n
Yandex tem a sua própria política de privacidade, que pode ser lida aqui: https://yandex.ru/legal/confidential/?lang=en
</string>
<string name="thanks_text">
Agradecimentos a Stéphane pelo logo.
</string>
<string name="thanks_text_dev">
Agradecimentos a:
</string>
</resources>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="layout_height_header">180dp</dimen>
<dimen name="layout_height_header">200dp</dimen>
</resources>

View File

@ -6,5 +6,5 @@
<dimen name="activity_vertical_margin">30dp</dimen>
<dimen name="activity_padding_top_header">16dp</dimen>
<bool name="isTablet">true</bool>
<dimen name="layout_height_header">220dp</dimen>
<dimen name="layout_height_header">250dp</dimen>
</resources>

View File

@ -40,6 +40,7 @@
<!-- Mastodon color scheme -->
<color name="mastodonC1__">#585c67</color>
<color name="mastodonC1___">#454b5b</color>
<color name="mastodonC1">#282c37</color>
<color name="mastodonC1_">#313543</color>
<color name="mastodonC2">#9baec8</color>
@ -51,6 +52,17 @@
<color name="mastodonC4_">#1b80c9</color>
<!-- Primary & accent colors -->
<color name="notif_dark_1">#313543</color>
<color name="notif_dark_2">#353947</color>
<color name="notif_dark_3">#393f4f</color>
<color name="notif_dark_4">#494f5f</color>
<color name="notif_light_1">#efefef</color>
<color name="notif_light_2">#ebf3fa</color>
<color name="notif_light_3">#d9e1e8</color>
<color name="notif_light_4">#c9d1d8</color>
<color name="foreground_material_dark" >@color/mastodonC3__</color>
<color name="foreground_material_light">@color/mastodonC1</color>
@ -65,18 +77,4 @@
<color name="primary_dark_material_light">@color/mastodonC3__</color>
<!-- Primary & accent colors -->
<color name="notif_dark_1">#313543</color>
<color name="notif_dark_2">#353947</color>
<color name="notif_dark_3">#393f4f</color>
<color name="notif_dark_4">#494f5f</color>
<color name="notif_light_1">#efefef</color>
<color name="notif_light_2">#ebf3fa</color>
<color name="notif_light_3">#d9e1e8</color>
<color name="notif_light_4">#c9d1d8</color>
<eat-comment />
</resources>

View File

@ -9,5 +9,5 @@
<dimen name="drawer_padding">2dp</dimen>
<dimen name="toot_padding">20dp</dimen>
<bool name="isTablet">false</bool>
<dimen name="layout_height_header">180dp</dimen>
<dimen name="layout_height_header">200dp</dimen>
</resources>

View File

@ -13,6 +13,7 @@
<!-- Light theme -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="android:textColor">@color/black</item>
<item name="colorPrimary">@color/mastodonC1</item>
<item name="colorPrimaryDark">@color/mastodonC2</item>
<item name="colorAccent">@color/mastodonC4</item>
@ -35,6 +36,7 @@
</style>
<style name="AppTheme_NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:textColor">@color/black</item>
<item name="colorPrimary">@color/mastodonC1</item>
<item name="colorPrimaryDark">@color/mastodonC2</item>
<item name="colorAccent">@color/mastodonC4</item>