From d14f69b09dc158c0625873651688a6b749616f08 Mon Sep 17 00:00:00 2001 From: nuclearfog Date: Wed, 29 Apr 2020 14:28:43 +0200 Subject: [PATCH] v 1.7.5 new Profile editor, fixed default profile image bug --- app/build.gradle | 4 +- .../twidda/activity/ProfileEditor.java | 82 +++++++------- .../twidda/activity/TweetDetail.java | 5 +- .../twidda/activity/UserProfile.java | 14 +-- .../twidda/adapter/ListAdapter.java | 8 +- .../twidda/adapter/MessageAdapter.java | 8 +- .../twidda/adapter/TweetAdapter.java | 8 +- .../twidda/adapter/UserAdapter.java | 5 +- .../twidda/backend/ProfileUpdater.java | 2 - .../twidda/backend/TwitterEngine.java | 25 ++--- .../twidda/backend/items/Message.java | 20 ++-- .../twidda/backend/items/TwitterList.java | 6 +- .../twidda/backend/items/TwitterUser.java | 11 +- .../twidda/backend/items/UserHolder.java | 38 +++++-- .../twidda/database/AppDatabase.java | 8 +- app/src/main/res/layout/page_editprofile.xml | 105 ++++++++++-------- app/src/main/res/layout/page_profile.xml | 4 +- app/src/main/res/values/dimens.xml | 2 +- app/src/main/res/values/strings.xml | 1 + 19 files changed, 207 insertions(+), 149 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 743b8d11..b745e7f6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,8 +8,8 @@ android { applicationId 'org.nuclearfog.twidda' minSdkVersion 16 targetSdkVersion 29 - versionCode 12 - versionName '1.7.4' + versionCode 13 + versionName '1.7.5' vectorDrawables.useSupportLibrary true } diff --git a/app/src/main/java/org/nuclearfog/twidda/activity/ProfileEditor.java b/app/src/main/java/org/nuclearfog/twidda/activity/ProfileEditor.java index 20f6f139..1e6e4c4b 100644 --- a/app/src/main/java/org/nuclearfog/twidda/activity/ProfileEditor.java +++ b/app/src/main/java/org/nuclearfog/twidda/activity/ProfileEditor.java @@ -4,6 +4,7 @@ import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; import android.database.Cursor; +import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Build; import android.os.Bundle; @@ -36,11 +37,8 @@ import static android.content.Intent.ACTION_PICK; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.os.AsyncTask.Status.RUNNING; import static android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI; +import static android.view.View.INVISIBLE; import static android.widget.Toast.LENGTH_SHORT; -import static org.nuclearfog.twidda.activity.MediaViewer.KEY_MEDIA_LINK; -import static org.nuclearfog.twidda.activity.MediaViewer.KEY_MEDIA_TYPE; -import static org.nuclearfog.twidda.activity.MediaViewer.MEDIAVIEWER_IMAGE; -import static org.nuclearfog.twidda.activity.MediaViewer.MEDIAVIEWER_IMG_STORAGE; public class ProfileEditor extends AppCompatActivity implements OnClickListener { @@ -48,13 +46,14 @@ public class ProfileEditor extends AppCompatActivity implements OnClickListener private static final String[] PERM_READ = {READ_EXTERNAL_STORAGE}; private static final String[] MEDIA_MODE = {MediaStore.Images.Media.DATA}; private static final int REQ_PERM = 3; - private static final int REQ_PB = 4; + private static final int REQ_PROFILE_IMG = 4; + private static final int REQ_PROFILE_BANNER = 5; private ProfileUpdater editorAsync; - private TwitterUser user; - private ImageView pb_image; + private ImageView profile_image, profile_banner; private EditText name, link, loc, bio; - private Button txtImg; + private Button add_banner_btn; + private String profileLink, bannerLink; @Override protected void onCreate(Bundle savedInstanceState) { @@ -62,8 +61,9 @@ public class ProfileEditor extends AppCompatActivity implements OnClickListener setContentView(R.layout.page_editprofile); Toolbar toolbar = findViewById(R.id.editprofile_toolbar); View root = findViewById(R.id.page_edit); - pb_image = findViewById(R.id.edit_pb); - txtImg = findViewById(R.id.edit_upload); + profile_image = findViewById(R.id.edit_pb); + profile_banner = findViewById(R.id.edit_banner); + add_banner_btn = findViewById(R.id.edit_add_banner); name = findViewById(R.id.edit_name); link = findViewById(R.id.edit_link); loc = findViewById(R.id.edit_location); @@ -75,8 +75,9 @@ public class ProfileEditor extends AppCompatActivity implements OnClickListener GlobalSettings settings = GlobalSettings.getInstance(this); FontTool.setViewFontAndColor(settings, root); root.setBackgroundColor(settings.getBackgroundColor()); - txtImg.setOnClickListener(this); - pb_image.setOnClickListener(this); + profile_image.setOnClickListener(this); + profile_banner.setOnClickListener(this); + add_banner_btn.setOnClickListener(this); } @@ -128,11 +129,10 @@ public class ProfileEditor extends AppCompatActivity implements OnClickListener String userLink = link.getText().toString(); String userLoc = loc.getText().toString(); String userBio = bio.getText().toString(); - String imgLink = txtImg.getText().toString(); if (username.trim().isEmpty()) { Toast.makeText(this, R.string.error_empty_name, LENGTH_SHORT).show(); } else { - UserHolder userHolder = new UserHolder(username, userLink, userLoc, userBio, imgLink); + UserHolder userHolder = new UserHolder(username, userLink, userLoc, userBio, profileLink, bannerLink); editorAsync = new ProfileUpdater(this, userHolder); editorAsync.execute(); } @@ -145,14 +145,20 @@ public class ProfileEditor extends AppCompatActivity implements OnClickListener @Override protected void onActivityResult(int reqCode, int returnCode, Intent intent) { super.onActivityResult(reqCode, returnCode, intent); - if (reqCode == REQ_PB && returnCode == RESULT_OK) { + if (returnCode == RESULT_OK && (reqCode == REQ_PROFILE_IMG || reqCode == REQ_PROFILE_BANNER)) { if (intent != null && intent.getData() != null) { Cursor c = getContentResolver().query(intent.getData(), MEDIA_MODE, null, null, null); if (c != null && c.moveToFirst()) { int index = c.getColumnIndex(MEDIA_MODE[0]); String mediaPath = c.getString(index); - pb_image.setImageBitmap(BitmapFactory.decodeFile(mediaPath)); - txtImg.setText(mediaPath); + Bitmap image = BitmapFactory.decodeFile(mediaPath); + if (reqCode == REQ_PROFILE_IMG) { + profile_image.setImageBitmap(image); + profileLink = mediaPath; + } else { + profile_banner.setImageBitmap(image); + bannerLink = mediaPath; + } c.close(); } } @@ -163,54 +169,50 @@ public class ProfileEditor extends AppCompatActivity implements OnClickListener @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (requestCode == REQ_PERM && grantResults[0] == PERMISSION_GRANTED) - getMedia(); + getMedia(requestCode); } @Override public void onClick(View v) { switch (v.getId()) { - case R.id.edit_upload: - getMedia(); + case R.id.edit_pb: + getMedia(REQ_PROFILE_IMG); break; - case R.id.edit_pb: - if (user != null) { - Intent image = new Intent(getApplicationContext(), MediaViewer.class); - if (!txtImg.getText().toString().isEmpty()) { - String[] mediaLink = new String[]{txtImg.getText().toString()}; - image.putExtra(KEY_MEDIA_LINK, mediaLink); - image.putExtra(KEY_MEDIA_TYPE, MEDIAVIEWER_IMG_STORAGE); - } else { - String[] mediaLink = new String[]{user.getImageLink()}; - image.putExtra(KEY_MEDIA_LINK, mediaLink); - image.putExtra(KEY_MEDIA_TYPE, MEDIAVIEWER_IMAGE); - } - startActivity(image); - } + case R.id.edit_add_banner: + case R.id.edit_banner: + getMedia(REQ_PROFILE_BANNER); break; } } public void setUser(TwitterUser user) { - String pbLink = user.getImageLink() + "_bigger"; - Picasso.get().load(pbLink).into(pb_image); + String pbLink = user.getImageLink(); + String bnLink = user.getBannerLink() + "/600x200"; + + if (!user.hasDefaultProfileImage()) + pbLink += "_bigger"; + Picasso.get().load(pbLink).into(profile_image); + if (user.hasBannerImg()) { + Picasso.get().load(bnLink).into(profile_banner); + add_banner_btn.setVisibility(INVISIBLE); + } name.setText(user.getUsername()); link.setText(user.getLink()); loc.setText(user.getLocation()); bio.setText(user.getBio()); - this.user = user; } - private void getMedia() { + private void getMedia(int request) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { int check = checkSelfPermission(READ_EXTERNAL_STORAGE); if (check == PackageManager.PERMISSION_GRANTED) { Intent media = new Intent(ACTION_PICK, EXTERNAL_CONTENT_URI); if (media.resolveActivity(getPackageManager()) != null) - startActivityForResult(media, REQ_PB); + startActivityForResult(media, request); else Toast.makeText(getApplicationContext(), R.string.error_no_media_app, LENGTH_SHORT).show(); } else { @@ -219,7 +221,7 @@ public class ProfileEditor extends AppCompatActivity implements OnClickListener } else { Intent media = new Intent(ACTION_PICK, EXTERNAL_CONTENT_URI); if (media.resolveActivity(getPackageManager()) != null) - startActivityForResult(media, REQ_PB); + startActivityForResult(media, request); else Toast.makeText(getApplicationContext(), R.string.error_no_media_app, LENGTH_SHORT).show(); } diff --git a/app/src/main/java/org/nuclearfog/twidda/activity/TweetDetail.java b/app/src/main/java/org/nuclearfog/twidda/activity/TweetDetail.java index 26336ab5..42601b8d 100644 --- a/app/src/main/java/org/nuclearfog/twidda/activity/TweetDetail.java +++ b/app/src/main/java/org/nuclearfog/twidda/activity/TweetDetail.java @@ -406,7 +406,10 @@ public class TweetDetail extends AppCompatActivity implements OnClickListener, O videoButton.setVisibility(VISIBLE); } if (settings.getImageLoad()) { - Picasso.get().load(author.getImageLink() + "_bigger").into(profile_img); + String pbLink = author.getImageLink(); + if (!author.hasDefaultProfileImage()) + pbLink += "_bigger"; + Picasso.get().load(pbLink).into(profile_img); } String placeName = tweet.getLocationName(); if (placeName != null && !placeName.isEmpty()) { diff --git a/app/src/main/java/org/nuclearfog/twidda/activity/UserProfile.java b/app/src/main/java/org/nuclearfog/twidda/activity/UserProfile.java index 6113a673..684f02b9 100644 --- a/app/src/main/java/org/nuclearfog/twidda/activity/UserProfile.java +++ b/app/src/main/java/org/nuclearfog/twidda/activity/UserProfile.java @@ -531,15 +531,13 @@ public class UserProfile extends AppCompatActivity implements OnClickListener, String bannerLink = user.getBannerLink() + "/600x200"; Picasso.get().load(bannerLink).into(banner); profile_layer.getLayoutParams().height = (int) getResources().getDimension(R.dimen.profile_banner_height); - profile_layer.requestLayout(); - } else { + } else profile_layer.getLayoutParams().height = WRAP_CONTENT; - profile_layer.requestLayout(); - } - if (user.hasProfileImage()) { - String imgLink = user.getImageLink() + "_bigger"; - Picasso.get().load(imgLink).into(profile); - } + profile_layer.requestLayout(); + String imgLink = user.getImageLink(); + if (!user.hasDefaultProfileImage()) + imgLink += "_bigger"; + Picasso.get().load(imgLink).into(profile); } } diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/ListAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/ListAdapter.java index 97292a63..ac9d3ec9 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/ListAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/ListAdapter.java @@ -161,8 +161,12 @@ public class ListAdapter extends Adapter { vh.createdAt.setText(StringTools.getTimeString(item.getCreatedAt())); vh.memberCount.setText(formatter.format(item.getMemberCount())); vh.subscriberCount.setText(formatter.format(item.getSubscriberCount())); - if (settings.getImageLoad()) - Picasso.get().load(owner.getImageLink() + "_mini").into(vh.pb_image); + if (settings.getImageLoad()) { + String pbLink = owner.getImageLink(); + if (!owner.hasDefaultProfileImage()) + pbLink += "_mini"; + Picasso.get().load(pbLink).into(vh.pb_image); + } if (item.isFollowing()) vh.followList.setText(R.string.user_unfollow); else diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/MessageAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/MessageAdapter.java index 36a9ad1b..40fabfc7 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/MessageAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/MessageAdapter.java @@ -145,8 +145,12 @@ public class MessageAdapter extends Adapter { vh.screenname.setCompoundDrawablesWithIntrinsicBounds(R.drawable.lock, 0, 0, 0); else vh.screenname.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); - if (settings.getImageLoad()) - Picasso.get().load(sender.getImageLink() + "_mini").into(vh.profile_img); + if (settings.getImageLoad()) { + String pbLink = sender.getImageLink(); + if (!sender.hasDefaultProfileImage()) + pbLink += "_mini"; + Picasso.get().load(pbLink).into(vh.profile_img); + } } diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/TweetAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/TweetAdapter.java index ec7230b0..73fd0cd1 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/TweetAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/TweetAdapter.java @@ -148,8 +148,12 @@ public class TweetAdapter extends Adapter { vh.screenname.setCompoundDrawablesWithIntrinsicBounds(R.drawable.lock, 0, 0, 0); else vh.screenname.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); - if (settings.getImageLoad()) - Picasso.get().load(user.getImageLink() + "_mini").into(vh.profile); + if (settings.getImageLoad()) { + String pbLink = user.getImageLink(); + if (!user.hasDefaultProfileImage()) + pbLink += "_mini"; + Picasso.get().load(pbLink).into(vh.profile); + } else vh.profile.setImageResource(0); } diff --git a/app/src/main/java/org/nuclearfog/twidda/adapter/UserAdapter.java b/app/src/main/java/org/nuclearfog/twidda/adapter/UserAdapter.java index 6939ef84..78504d06 100644 --- a/app/src/main/java/org/nuclearfog/twidda/adapter/UserAdapter.java +++ b/app/src/main/java/org/nuclearfog/twidda/adapter/UserAdapter.java @@ -86,7 +86,10 @@ public class UserAdapter extends Adapter { vh.username.setText(user.getUsername()); vh.screenname.setText(user.getScreenname()); if (settings.getImageLoad()) { - Picasso.get().load(user.getImageLink() + "_mini").into(vh.profileImg); + String pbLink = user.getImageLink(); + if (!user.hasDefaultProfileImage()) + pbLink += "_mini"; + Picasso.get().load(pbLink).into(vh.profileImg); } if (user.isVerified()) { vh.username.setCompoundDrawablesWithIntrinsicBounds(R.drawable.verify, 0, 0, 0); diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/ProfileUpdater.java b/app/src/main/java/org/nuclearfog/twidda/backend/ProfileUpdater.java index 785402ec..5ece2619 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/ProfileUpdater.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/ProfileUpdater.java @@ -85,8 +85,6 @@ public class ProfileUpdater extends AsyncTask { if (userHolder == null) { return mTwitter.getCurrentUser(); } else { - if (userHolder.hasProfileImage()) - mTwitter.updateProfileImage(userHolder.getImageLink()); TwitterUser user = mTwitter.updateProfile(userHolder); db.storeUser(user); } diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/TwitterEngine.java b/app/src/main/java/org/nuclearfog/twidda/backend/TwitterEngine.java index c5a20e76..6f093dc0 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/TwitterEngine.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/TwitterEngine.java @@ -771,6 +771,15 @@ public class TwitterEngine { */ TwitterUser updateProfile(UserHolder userHolder) throws EngineException { try { + if (userHolder.hasProfileImage()) { + File profileImage = new File(userHolder.getProfileImage()); + twitter.updateProfileImage(profileImage); + twitter.removeProfileBanner(); + } + if (userHolder.hasProfileBanner()) { + File profileBanner = new File(userHolder.getProfileBanner()); + twitter.updateProfileBanner(profileBanner); + } String username = userHolder.getName(); String user_link = userHolder.getLink(); String user_loc = userHolder.getLocation(); @@ -783,22 +792,6 @@ public class TwitterEngine { } - /** - * Update user profile image_add - * - * @param path image path - * @throws EngineException if access is unavailable - */ - void updateProfileImage(String path) throws EngineException { - try { - File image = new File(path); - twitter.updateProfileImage(image); - } catch (TwitterException err) { - throw new EngineException(err); - } - } - - /** * get user list * diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/items/Message.java b/app/src/main/java/org/nuclearfog/twidda/backend/items/Message.java index c280c6b2..f6acb37d 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/items/Message.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/items/Message.java @@ -26,7 +26,7 @@ public class Message { this.receiver = new TwitterUser(receiver); messageId = dm.getId(); time = dm.getCreatedAt().getTime(); - message = "" + getText(dm); + message = getText(dm); } /** @@ -97,14 +97,18 @@ public class Message { * @return Tweet string with resolved URL entities */ private String getText(DirectMessage message) { - URLEntity[] entities = message.getURLEntities(); - StringBuilder text = new StringBuilder(message.getText()); - - for (int i = entities.length - 1; i >= 0; i--) { - URLEntity entity = entities[i]; - text.replace(entity.getStart(), entity.getEnd(), entity.getExpandedURL()); + String text = message.getText(); + if (text != null && !text.isEmpty()) { + URLEntity[] entities = message.getURLEntities(); + StringBuilder messageBuilder = new StringBuilder(message.getText()); + for (int i = entities.length - 1; i >= 0; i--) { + URLEntity entity = entities[i]; + messageBuilder.replace(entity.getStart(), entity.getEnd(), entity.getExpandedURL()); + } + return messageBuilder.toString(); + } else { + return ""; } - return text.toString(); } @NonNull diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/items/TwitterList.java b/app/src/main/java/org/nuclearfog/twidda/backend/items/TwitterList.java index 7ac2396a..625254b2 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/items/TwitterList.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/items/TwitterList.java @@ -22,15 +22,17 @@ public class TwitterList { private final int subscriberCnt; public TwitterList(UserList list, long homeId, boolean isFollowing) { + String description = list.getDescription(); + String title = list.getName(); id = list.getId(); - title = "" + list.getName(); createdAt = list.getCreatedAt().getTime(); - description = "" + list.getDescription(); owner = new TwitterUser(list.getUser()); isPrivate = !list.isPublic(); memberCount = list.getMemberCount(); subscriberCnt = list.getSubscriberCount(); isOwner = homeId != owner.getId(); + this.title = title != null ? title : ""; + this.description = description != null ? description : ""; this.isFollowing = isFollowing; } diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/items/TwitterUser.java b/app/src/main/java/org/nuclearfog/twidda/backend/items/TwitterUser.java index 6baa31a7..282e52cf 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/items/TwitterUser.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/items/TwitterUser.java @@ -15,6 +15,7 @@ public class TwitterUser { private final boolean isVerified; private final boolean isLocked; private final boolean isFollowReqSent; + private final boolean hasDefaultImage; private final int following; private final int follower; @@ -69,11 +70,12 @@ public class TwitterUser { tweetCount = user.getStatusesCount(); favorCount = user.getFavouritesCount(); isFollowReqSent = user.isFollowRequestSent(); + hasDefaultImage = user.isDefaultProfileImage(); } public TwitterUser(long userID, String username, String screenname, String profileImg, String bio, String location, - boolean isVerified, boolean isLocked, boolean isFollowReqSent, String link, String bannerImg, - long created, int following, int follower, int tweetCount, int favorCount) { + boolean isVerified, boolean isLocked, boolean isFollowReqSent, boolean hasDefaultImage, String link, + String bannerImg, long created, int following, int follower, int tweetCount, int favorCount) { this.userID = userID; this.username = username != null ? username : ""; @@ -91,6 +93,7 @@ public class TwitterUser { this.tweetCount = tweetCount; this.favorCount = favorCount; this.isFollowReqSent = isFollowReqSent; + this.hasDefaultImage = hasDefaultImage; } /** @@ -226,8 +229,8 @@ public class TwitterUser { * * @return true if user has a profile image set */ - public boolean hasProfileImage() { - return !profileImg.isEmpty(); + public boolean hasDefaultProfileImage() { + return hasDefaultImage; } /** diff --git a/app/src/main/java/org/nuclearfog/twidda/backend/items/UserHolder.java b/app/src/main/java/org/nuclearfog/twidda/backend/items/UserHolder.java index a52a471f..f4210fe5 100644 --- a/app/src/main/java/org/nuclearfog/twidda/backend/items/UserHolder.java +++ b/app/src/main/java/org/nuclearfog/twidda/backend/items/UserHolder.java @@ -7,7 +7,7 @@ import androidx.annotation.NonNull; */ public class UserHolder { - private final String name, link, location, bio, imageLink; + private final String name, link, location, bio, profileImage, profileBanner; /** * create user information holder @@ -16,14 +16,17 @@ public class UserHolder { * @param link profile link * @param location profile location string * @param bio description string - * @param imageLink local profile image path + * @param profileImage local profile image path + * @param profileBanner local profile image path */ - public UserHolder(String name, String link, String location, String bio, String imageLink) { + public UserHolder(String name, String link, String location, String bio, String profileImage, String profileBanner) { this.name = name; + this.bio = bio; this.link = link; this.location = location; - this.imageLink = imageLink; - this.bio = bio; + this.profileImage = profileImage; + this.profileBanner = profileBanner; + } /** @@ -62,17 +65,34 @@ public class UserHolder { * get local image path * @return image path */ - public String getImageLink() { - return imageLink; + public String getProfileImage() { + return profileImage; } /** * check if profile image path is included - * * @return true if image path is included */ public boolean hasProfileImage() { - return !imageLink.isEmpty(); + return profileImage != null && !profileImage.isEmpty(); + } + + /** + * getprofile banner path + * + * @return image path + */ + public String getProfileBanner() { + return profileBanner; + } + + /** + * check if profile banner path is included + * + * @return true if path is included + */ + public boolean hasProfileBanner() { + return profileBanner != null && !profileBanner.isEmpty(); } @NonNull diff --git a/app/src/main/java/org/nuclearfog/twidda/database/AppDatabase.java b/app/src/main/java/org/nuclearfog/twidda/database/AppDatabase.java index f6572bc4..96b0d744 100644 --- a/app/src/main/java/org/nuclearfog/twidda/database/AppDatabase.java +++ b/app/src/main/java/org/nuclearfog/twidda/database/AppDatabase.java @@ -31,6 +31,7 @@ public class AppDatabase { private static final int LCK_MASK = 1 << 1; // USER LOCKED MASK private static final int FRQ_MASK = 1 << 2; // USER REQUEST FOLLOW private static final int EXCL_USR = 1 << 3; // EXCLUDE USERS TWEETS + private static final int DEF_IMG = 1 << 4; // DEFAULT PROFILE IMAGE private final int limit; // DATABASE ENTRY limit private final long homeId; @@ -586,8 +587,9 @@ public class AppDatabase { boolean isVerified = (userRegister & VER_MASK) > 0; boolean isLocked = (userRegister & LCK_MASK) > 0; boolean isReq = (userRegister & FRQ_MASK) > 0; + boolean defaultImg = (userRegister & DEF_IMG) > 0; return new TwitterUser(userId, username, screenname, profileImg, bio, location, isVerified, - isLocked, isReq, link, banner, createdAt, following, follower, tCount, fCount); + isLocked, isReq, defaultImg, link, banner, createdAt, following, follower, tCount, fCount); } @@ -606,6 +608,10 @@ public class AppDatabase { userRegister |= FRQ_MASK; else userRegister &= ~FRQ_MASK; + if (user.hasDefaultProfileImage()) + userRegister |= DEF_IMG; + else + userRegister &= ~DEF_IMG; userColumn.put("userID", user.getId()); userColumn.put("username", user.getUsername()); diff --git a/app/src/main/res/layout/page_editprofile.xml b/app/src/main/res/layout/page_editprofile.xml index d670741c..74f8b269 100644 --- a/app/src/main/res/layout/page_editprofile.xml +++ b/app/src/main/res/layout/page_editprofile.xml @@ -1,6 +1,5 @@ + android:orientation="vertical"> - + android:gravity="center_vertical"> + +