Display account

This commit is contained in:
Thomas 2020-06-27 19:08:52 +02:00
parent fc654fe561
commit 9dca09b1d3
15 changed files with 127 additions and 334 deletions

View File

@ -59,6 +59,7 @@ dependencies {
implementation 'com.google.android.exoplayer:exoplayer:2.10.6'
implementation "com.github.mabbas007:TagsEditText:1.0.5"
implementation "com.github.bumptech.glide:glide:4.11.0"
annotationProcessor "com.github.bumptech.glide:compiler:4.11.0"
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0"
implementation 'org.apache.poi:poi:3.16'
implementation "net.gotev:uploadservice:3.5.2"

View File

@ -1,7 +1,6 @@
package app.fedilab.fedilabtube;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
@ -23,7 +22,6 @@ import app.fedilab.fedilabtube.asynctasks.RetrievePeertubeInformationAsyncTask;
import app.fedilab.fedilabtube.helper.Helper;
import static app.fedilab.fedilabtube.helper.Helper.academies;
import static app.fedilab.fedilabtube.helper.Helper.getLiveInstance;
public class MainActivity extends AppCompatActivity {
@ -71,8 +69,8 @@ public class MainActivity extends AppCompatActivity {
final SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
String acad = sharedpreferences.getString(Helper.PREF_INSTANCE, "ac-lyon.fr");
int i = 0;
for(String item: academies){
if( item.compareTo(acad) == 0) {
for (String item : academies) {
if (item.compareTo(acad) == 0) {
break;
}
i++;

View File

@ -1,4 +1,3 @@
package app.fedilab.fedilabtube;
@ -62,7 +61,6 @@ import java.util.Objects;
import javax.net.ssl.HttpsURLConnection;
import app.fedilab.fedilabtube.asynctasks.ManagePlaylistsAsyncTask;
import app.fedilab.fedilabtube.asynctasks.PostActionAsyncTask;
import app.fedilab.fedilabtube.asynctasks.RetrievePeertubeSingleAsyncTask;
@ -162,7 +160,6 @@ public class PeertubeActivity extends AppCompatActivity implements OnRetrievePee
peertube_bookmark.setVisibility(View.GONE);
SQLiteDatabase db = Sqlite.getInstance(getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null);
instance = sharedpreferences.getString(Helper.PREF_INSTANCE, Helper.getLiveInstance(PeertubeActivity.this));
@ -178,8 +175,6 @@ public class PeertubeActivity extends AppCompatActivity implements OnRetrievePee
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mode = sharedpreferences.getInt(Helper.SET_VIDEO_MODE, Helper.VIDEO_MODE_DIRECT);
if (mode != Helper.VIDEO_MODE_WEBVIEW && mode != Helper.VIDEO_MODE_DIRECT)
mode = Helper.VIDEO_MODE_DIRECT;
@ -320,9 +315,8 @@ public class PeertubeActivity extends AppCompatActivity implements OnRetrievePee
new ManagePlaylistsAsyncTask(PeertubeActivity.this, GET_PLAYLIST_FOR_VIDEO, null, peertube.getId(), null, PeertubeActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
peertube_playlist.setOnClickListener(v -> {
if( isLoggedIn(PeertubeActivity.this) ) {
if (isLoggedIn(PeertubeActivity.this)) {
if (playlists != null && peertube.getId() != null) {
PopupMenu popup = new PopupMenu(PeertubeActivity.this, peertube_playlist);
@ -366,25 +360,25 @@ public class PeertubeActivity extends AppCompatActivity implements OnRetrievePee
popup.show();
}
}
}else {
} else {
Toasty.error(PeertubeActivity.this, getString(R.string.not_logged_in), Toast.LENGTH_SHORT).show();
}
});
add_comment_read.setOnClickListener(v -> {
if( isLoggedIn(PeertubeActivity.this) ) {
if (isLoggedIn(PeertubeActivity.this)) {
add_comment_read.setVisibility(View.GONE);
add_comment_write.setVisibility(View.VISIBLE);
send.setVisibility(View.VISIBLE);
add_comment_write.requestFocus();
add_comment_write.setSelection(add_comment_write.getText().length());
}else {
} else {
Toasty.error(PeertubeActivity.this, getString(R.string.not_logged_in), Toast.LENGTH_SHORT).show();
}
});
send.setOnClickListener(v -> {
if( isLoggedIn(PeertubeActivity.this) ) {
if (isLoggedIn(PeertubeActivity.this)) {
String comment = add_comment_write.getText().toString();
if (comment.trim().length() > 0) {
new PostActionAsyncTask(PeertubeActivity.this, PeertubeAPI.StatusAction.PEERTUBECOMMENT, peertube.getId(), null, comment, PeertubeActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
@ -394,7 +388,7 @@ public class PeertubeActivity extends AppCompatActivity implements OnRetrievePee
send.setVisibility(View.GONE);
add_comment_read.requestFocus();
}
}else {
} else {
Toasty.error(PeertubeActivity.this, getString(R.string.not_logged_in), Toast.LENGTH_SHORT).show();
}
});
@ -471,22 +465,22 @@ public class PeertubeActivity extends AppCompatActivity implements OnRetrievePee
initResolution();
peertube_like_count.setOnClickListener(v -> {
if( isLoggedIn(PeertubeActivity.this) ) {
if (isLoggedIn(PeertubeActivity.this)) {
String newState = peertube.getMyRating().equals("like") ? "none" : "like";
new PostActionAsyncTask(PeertubeActivity.this, PeertubeAPI.StatusAction.RATEVIDEO, peertube.getId(), null, newState, PeertubeActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
peertube.setMyRating(newState);
changeColor();
}else {
} else {
Toasty.error(PeertubeActivity.this, getString(R.string.not_logged_in), Toast.LENGTH_SHORT).show();
}
});
peertube_dislike_count.setOnClickListener(v -> {
if( isLoggedIn(PeertubeActivity.this) ) {
if (isLoggedIn(PeertubeActivity.this)) {
String newState = peertube.getMyRating().equals("dislike") ? "none" : "dislike";
new PostActionAsyncTask(PeertubeActivity.this, PeertubeAPI.StatusAction.RATEVIDEO, peertube.getId(), null, newState, PeertubeActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
peertube.setMyRating(newState);
changeColor();
}else {
} else {
Toasty.error(PeertubeActivity.this, getString(R.string.not_logged_in), Toast.LENGTH_SHORT).show();
}
});

View File

@ -3,7 +3,6 @@ package app.fedilab.fedilabtube;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.ColorStateList;
import android.database.sqlite.SQLiteDatabase;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
@ -42,7 +41,6 @@ import app.fedilab.fedilabtube.client.APIResponse;
import app.fedilab.fedilabtube.client.PeertubeAPI;
import app.fedilab.fedilabtube.client.entities.Account;
import app.fedilab.fedilabtube.client.entities.Error;
import app.fedilab.fedilabtube.client.entities.InstanceNodeInfo;
import app.fedilab.fedilabtube.client.entities.Relationship;
import app.fedilab.fedilabtube.client.entities.Status;
import app.fedilab.fedilabtube.client.entities.StatusDrawerParams;
@ -54,12 +52,11 @@ import app.fedilab.fedilabtube.interfaces.OnPostActionInterface;
import app.fedilab.fedilabtube.interfaces.OnRetrieveFeedsAccountInterface;
import app.fedilab.fedilabtube.interfaces.OnRetrieveFeedsInterface;
import app.fedilab.fedilabtube.interfaces.OnRetrieveRelationshipInterface;
import app.fedilab.fedilabtube.sqlite.AccountDAO;
import app.fedilab.fedilabtube.sqlite.Sqlite;
import es.dmoral.toasty.Toasty;
import static androidx.core.text.HtmlCompat.FROM_HTML_MODE_LEGACY;
import static app.fedilab.fedilabtube.helper.Helper.getLiveInstance;
import static app.fedilab.fedilabtube.helper.Helper.isLoggedIn;
public class ShowAccountActivity extends AppCompatActivity implements OnPostActionInterface, OnRetrieveFeedsAccountInterface, OnRetrieveRelationshipInterface, OnRetrieveFeedsInterface {
@ -73,8 +70,6 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
private TextView account_note;
private String userId;
private Relationship relationship;
private ImageButton header_edit_profile;
private List<Status> pins;
private int maxScrollSize;
private boolean avatarShown = true;
private ImageView account_pp;
@ -85,7 +80,6 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
private boolean ischannel;
private AsyncTask<Void, Void, Void> retrieveRelationship;
private action doAction;
private PeertubeAPI.StatusAction doActionAccount;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -93,10 +87,8 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, MODE_PRIVATE);
setContentView(R.layout.activity_show_account);
setTitle("");
pins = new ArrayList<>();
Bundle b = getIntent().getExtras();
account_follow = findViewById(R.id.account_follow);
header_edit_profile = findViewById(R.id.header_edit_profile);
account_follow.setEnabled(false);
account_pp = findViewById(R.id.account_pp);
account_dn = findViewById(R.id.account_dn);
@ -143,11 +135,13 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, MODE_PRIVATE);
String accountIdRelation = account.getAcct();
if (isLoggedIn(ShowAccountActivity.this)) {
retrieveRelationship = new RetrieveRelationshipAsyncTask(ShowAccountActivity.this, accountIdRelation, ShowAccountActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
String urlHeader = account.getHeader();
if (urlHeader != null && urlHeader.startsWith("/")) {
urlHeader = "https://"+Helper.getLiveInstance(ShowAccountActivity.this) + account.getHeader();
urlHeader = "https://" + Helper.getLiveInstance(ShowAccountActivity.this) + account.getHeader();
}
if (urlHeader != null && !urlHeader.contains("missing.png")) {
ImageView banner_pp = findViewById(R.id.banner_pp);
@ -155,8 +149,6 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
.load(urlHeader)
.into(banner_pp);
}
//Peertube account watched by a Mastodon account
//Bot account
TextView actionbar_title = findViewById(R.id.show_account_title);
if (account.getAcct() != null)
@ -170,12 +162,6 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
maxScrollSize = appBar.getTotalScrollRange();
//Timed muted account
String userId = sharedpreferences.getString(Helper.PREF_KEY_ID, null);
String instance = sharedpreferences.getString(Helper.PREF_INSTANCE, null);
final SQLiteDatabase db = Sqlite.getInstance(getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
final Account authenticatedAccount = new AccountDAO(ShowAccountActivity.this, db).getUniqAccount(userId, instance);
appBar.addOnOffsetChangedListener((appBarLayout, verticalOffset) -> {
LinearLayout toolbarContent = findViewById(R.id.toolbar_content);
if (toolbarContent != null) {
@ -293,13 +279,12 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
Helper.loadGiF(ShowAccountActivity.this, account, account_pp);
//Follow button
String target = account.getAcct();
String finalTarget = target;
account_follow.setOnClickListener(v -> {
if (doAction == action.NOTHING) {
Toasty.info(ShowAccountActivity.this, getString(R.string.nothing_to_do), Toast.LENGTH_LONG).show();
} else if (doAction == action.FOLLOW) {
account_follow.setEnabled(false);
new PostActionAsyncTask(ShowAccountActivity.this, PeertubeAPI.StatusAction.FOLLOW, finalTarget, ShowAccountActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
new PostActionAsyncTask(ShowAccountActivity.this, PeertubeAPI.StatusAction.FOLLOW, target, ShowAccountActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} else if (doAction == action.UNFOLLOW) {
boolean confirm_unfollow = sharedpreferences.getBoolean(Helper.SET_UNFOLLOW_VALIDATION, true);
if (confirm_unfollow) {
@ -309,13 +294,13 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
unfollowConfirm.setNegativeButton(R.string.cancel, (dialog, which) -> dialog.dismiss());
unfollowConfirm.setPositiveButton(R.string.yes, (dialog, which) -> {
account_follow.setEnabled(false);
new PostActionAsyncTask(ShowAccountActivity.this, PeertubeAPI.StatusAction.UNFOLLOW, finalTarget, ShowAccountActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
new PostActionAsyncTask(ShowAccountActivity.this, PeertubeAPI.StatusAction.UNFOLLOW, target, ShowAccountActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
dialog.dismiss();
});
unfollowConfirm.show();
} else {
account_follow.setEnabled(false);
new PostActionAsyncTask(ShowAccountActivity.this, PeertubeAPI.StatusAction.UNFOLLOW, finalTarget, ShowAccountActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
new PostActionAsyncTask(ShowAccountActivity.this, PeertubeAPI.StatusAction.UNFOLLOW, target, ShowAccountActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}
@ -339,7 +324,6 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
public void onRetrieveFeeds(APIResponse apiResponse) {
if (apiResponse.getError() != null) {
Toasty.error(ShowAccountActivity.this, apiResponse.getError().getError(), Toast.LENGTH_LONG).show();
return;
}
}
@ -405,7 +389,6 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
}
@Override
public void onDestroy() {
super.onDestroy();
@ -428,7 +411,7 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
}
String target = account.getAcct();
//IF action is unfollow or mute, sends an intent to remove statuses
if (statusAction == PeertubeAPI.StatusAction.UNFOLLOW ) {
if (statusAction == PeertubeAPI.StatusAction.UNFOLLOW) {
Bundle b = new Bundle();
b.putString("receive_action", targetedId);
Intent intentBC = new Intent(Helper.RECEIVE_ACTION);
@ -438,7 +421,6 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
}
public enum action {
FOLLOW,
UNFOLLOW,
@ -463,7 +445,6 @@ public class ShowAccountActivity extends AppCompatActivity implements OnPostActi
bundle = new Bundle();
bundle.putSerializable("type", RetrieveFeedsAsyncTask.Type.USER);
bundle.putString("targetedid", account.getAcct());
bundle.putBoolean("showReply", false);
bundle.putBoolean("ischannel", ischannel);
displayStatusFragment.setArguments(bundle);
return displayStatusFragment;

View File

@ -1,4 +1,3 @@
package app.fedilab.fedilabtube.asynctasks;
import android.content.Context;

View File

@ -1,4 +1,3 @@
package app.fedilab.fedilabtube.asynctasks;
import android.content.Context;

View File

@ -22,33 +22,24 @@ public class RetrieveFeedsAsyncTask extends AsyncTask<Void, Void, Void> {
private APIResponse apiResponse;
private String max_id;
private OnRetrieveFeedsInterface listener;
private String targetedID;
private String tag;
private boolean showMediaOnly = false;
private boolean showPinned = false;
private boolean showReply = false;
private WeakReference<Context> contextReference;
private String instanceName, remoteInstance, name;
private int timelineId;
private String search;
private String target;
private String social;
public RetrieveFeedsAsyncTask(Context context, Type action, String max_id, OnRetrieveFeedsInterface onRetrieveFeedsInterface) {
this.contextReference = new WeakReference<>(context);
this.action = action;
this.max_id = max_id;
this.listener = onRetrieveFeedsInterface;
this.search = null;
this.target = null;
}
public RetrieveFeedsAsyncTask(Context context, Type action, String max_id, String search, OnRetrieveFeedsInterface onRetrieveFeedsInterface) {
public RetrieveFeedsAsyncTask(Context context, Type action, String max_id, String target, OnRetrieveFeedsInterface onRetrieveFeedsInterface) {
this.contextReference = new WeakReference<>(context);
this.action = action;
this.max_id = max_id;
this.listener = onRetrieveFeedsInterface;
this.search = search;
this.target = target;
}
@ -60,7 +51,7 @@ public class RetrieveFeedsAsyncTask extends AsyncTask<Void, Void, Void> {
return null;
switch (action) {
case USER:
apiResponse = peertubeAPI.getVideos(targetedID, max_id);
apiResponse = peertubeAPI.getVideos(target, max_id);
break;
case MYVIDEOS:
peertubeAPI = new PeertubeAPI(this.contextReference.get());
@ -72,7 +63,7 @@ public class RetrieveFeedsAsyncTask extends AsyncTask<Void, Void, Void> {
break;
case CHANNEL:
peertubeAPI = new PeertubeAPI(this.contextReference.get());
apiResponse = peertubeAPI.getVideosChannel(targetedID, max_id);
apiResponse = peertubeAPI.getVideosChannel(target, max_id);
break;
case CACHE_BOOKMARKS_PEERTUBE:

View File

@ -1,4 +1,3 @@
package app.fedilab.fedilabtube.asynctasks;
import android.content.Context;

View File

@ -165,7 +165,7 @@ public class Peertube {
resolution = this.getResolution().get(0);
if (resolution == null)
return null;
if (streamService ) {
if (streamService) {
return "https://" + this.host + "/static/streaming-playlists/hls/" + getUuid() + "/" + getUuid() + "-" + resolution + "-fragmented.mp4";
} else {
return "https://" + this.host + "/static/webseed/" + getUuid() + "-" + resolution + ".mp4";

View File

@ -32,7 +32,6 @@ import app.fedilab.fedilabtube.interfaces.OnPostActionInterface;
import es.dmoral.toasty.Toasty;
public class AccountsListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements OnPostActionInterface {
private List<Account> accounts;
@ -95,6 +94,8 @@ public class AccountsListAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
holder.account_follow.setOnClickListener(v -> {
});
holder.account_pp.setOnClickListener(v -> {
Intent intent = new Intent(context, ShowAccountActivity.class);
Bundle b = new Bundle();
b.putBoolean("peertubeaccount", true);
@ -103,6 +104,8 @@ public class AccountsListAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
b.putParcelable("account", account);
intent.putExtras(b);
context.startActivity(intent);
});
}
@Override

View File

@ -61,6 +61,7 @@ public class DisplayStatusFragment extends Fragment implements OnPostActionInter
private boolean ischannel;
private View rootView;
private RecyclerView lv_status;
private String targetedId;
public DisplayStatusFragment() {
}
@ -81,6 +82,7 @@ public class DisplayStatusFragment extends Fragment implements OnPostActionInter
if (bundle != null) {
search_peertube = bundle.getString("search_peertube", null);
targetedId = bundle.getString("targetedid", null);
ischannel = bundle.getBoolean("ischannel", false);
}
if (ischannel) {
@ -116,7 +118,7 @@ public class DisplayStatusFragment extends Fragment implements OnPostActionInter
if (context != null) {
//Load data depending of the value
if (search_peertube == null) { //Not a Peertube search
asyncTask = new RetrieveFeedsAsyncTask(context, type, "0", DisplayStatusFragment.this).execute();
asyncTask = new RetrieveFeedsAsyncTask(context, type, "0", targetedId, DisplayStatusFragment.this).execute();
} else {
asyncTask = new RetrievePeertubeSearchAsyncTask(context, "0", search_peertube, DisplayStatusFragment.this).execute();
}
@ -124,7 +126,7 @@ public class DisplayStatusFragment extends Fragment implements OnPostActionInter
new Handler(Looper.getMainLooper()).postDelayed(() -> {
if (context != null) {
if (search_peertube == null) { //Not a Peertube search
asyncTask = new RetrieveFeedsAsyncTask(context, type, "0", DisplayStatusFragment.this).execute();
asyncTask = new RetrieveFeedsAsyncTask(context, type, "0", targetedId, DisplayStatusFragment.this).execute();
} else {
asyncTask = new RetrievePeertubeSearchAsyncTask(context, "0", search_peertube, DisplayStatusFragment.this).execute();
}
@ -132,7 +134,7 @@ public class DisplayStatusFragment extends Fragment implements OnPostActionInter
}, 500);
}
if( type != POVERVIEW) {
if (type != POVERVIEW) {
lv_status.addOnScrollListener(new RecyclerView.OnScrollListener() {
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
@ -282,7 +284,7 @@ public class DisplayStatusFragment extends Fragment implements OnPostActionInter
max_id = "0";
peertubeAdapater.notifyItemRangeRemoved(0, size);
if (search_peertube == null) { //Not a Peertube search
asyncTask = new RetrieveFeedsAsyncTask(context, type, "0", DisplayStatusFragment.this).execute();
asyncTask = new RetrieveFeedsAsyncTask(context, type, "0", targetedId, DisplayStatusFragment.this).execute();
} else {
asyncTask = new RetrievePeertubeSearchAsyncTask(context, "0", search_peertube, DisplayStatusFragment.this).execute();
}

View File

@ -35,7 +35,6 @@ import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestOptions;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
@ -351,7 +350,7 @@ public class Helper {
public static void loadGiF(final Context context, Account account, final ImageView imageView) {
if (account == null) {
if (account == null || account.getAvatar() == null || account.getAvatar().compareTo("null") == 0) {
Glide.with(imageView.getContext())
.asDrawable()
.load(R.drawable.missing_peertube)
@ -360,7 +359,7 @@ public class Helper {
return;
}
String url = account.getAvatar();
if (url != null && url.startsWith("/")) {
if (url.startsWith("/")) {
url = Helper.getLiveInstance(context) + url;
}

View File

@ -1,8 +1,8 @@
package app.fedilab.fedilabtube.interfaces;
import java.util.List;
import app.fedilab.fedilabtube.client.entities.Status;
public interface OnRetrieveFeedsAccountInterface {

View File

@ -1,4 +1,3 @@
package app.fedilab.fedilabtube.interfaces;

View File

@ -14,7 +14,6 @@
android:fitsSystemWindows="true">
<com.google.android.material.appbar.CollapsingToolbarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true"
app:expandedTitleMarginEnd="64dp"
@ -120,7 +119,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp">
<LinearLayout
android:id="@+id/names_container"
android:layout_width="wrap_content"
@ -139,15 +137,16 @@
android:layout_height="wrap_content"
android:singleLine="true"
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
android:textColor="?colorAccent"
android:textSize="18sp" />
android:textColor="@android:color/white"
android:textSize="16sp" />
<TextView
android:id="@+id/account_un"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:textSize="16sp" />
android:textColor="@android:color/white"
android:textSize="14sp" />
</LinearLayout>
@ -161,6 +160,7 @@
android:layout_marginTop="5dp"
android:gravity="center"
android:padding="10dp"
android:textColor="@android:color/white"
android:textIsSelectable="true" />
<HorizontalScrollView
@ -199,182 +199,9 @@
android:textColor="?colorAccent"
android:visibility="gone" />
</LinearLayout>
</HorizontalScrollView>
<!-- Fields container -->
<LinearLayout
android:id="@+id/fields_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="gone">
<!-- Fields 1 to 4 -->
<LinearLayout
android:id="@+id/field1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="gone">
<TextView
android:id="@+id/label1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:minHeight="20dp"
android:padding="5dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:textSize="16sp" />
<LinearLayout
android:id="@+id/value1BG"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:orientation="vertical">
<TextView
android:id="@+id/value1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:textIsSelectable="true" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/field2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="gone">
<TextView
android:id="@+id/label2"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:minHeight="20dp"
android:padding="10dp"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:textSize="16sp" />
<LinearLayout
android:id="@+id/value2BG"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:orientation="vertical">
<TextView
android:id="@+id/value2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:textIsSelectable="true" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/field3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="gone">
<TextView
android:id="@+id/label3"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:minHeight="20dp"
android:padding="10dp"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:textSize="16sp" />
<LinearLayout
android:id="@+id/value3BG"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:orientation="vertical">
<TextView
android:id="@+id/value3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:textIsSelectable="true" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/field4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:visibility="gone">
<TextView
android:id="@+id/label4"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center"
android:layout_weight="1"
android:gravity="center"
android:minHeight="20dp"
android:padding="10dp"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:textSize="16sp" />
<LinearLayout
android:id="@+id/value4BG"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:orientation="vertical">
<TextView
android:id="@+id/value4"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:gravity="center"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:textIsSelectable="true" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<!-- End Fields container -->
</LinearLayout>
</RelativeLayout>
@ -394,7 +221,8 @@
android:layout_height="wrap_content"
android:animationCache="true"
android:orientation="horizontal"
android:visibility="gone">
android:visibility="gone"
tools:ignore="UseCompoundDrawables">
<ImageView
android:id="@+id/pp_actionBar"