mirror of
https://github.com/TwidereProject/Twidere-Android
synced 2025-02-17 04:00:48 +01:00
improved user info update
This commit is contained in:
parent
5e6fbc12c2
commit
2ad1fc3ef0
@ -21,40 +21,30 @@ package org.mariotaku.twidere.model;
|
||||
|
||||
import android.content.ContentValues;
|
||||
import android.database.Cursor;
|
||||
import android.location.Location;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.support.annotation.Nullable;
|
||||
|
||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||
import com.hannesdorfmann.parcelableplease.annotation.ParcelablePlease;
|
||||
import com.hannesdorfmann.parcelableplease.annotation.ParcelableThisPlease;
|
||||
|
||||
import org.mariotaku.library.objectcursor.converter.CursorFieldConverter;
|
||||
import org.mariotaku.twidere.api.twitter.model.GeoLocation;
|
||||
import org.mariotaku.twidere.util.ParseUtils;
|
||||
|
||||
import java.lang.reflect.ParameterizedType;
|
||||
|
||||
@ParcelablePlease
|
||||
@JsonObject
|
||||
public class ParcelableLocation implements Parcelable {
|
||||
|
||||
@ParcelableThisPlease
|
||||
@JsonField(name = "latitude")
|
||||
public double latitude;
|
||||
@ParcelableThisPlease
|
||||
@JsonField(name = "longitude")
|
||||
public double longitude;
|
||||
|
||||
public static final Parcelable.Creator<ParcelableLocation> CREATOR = new Parcelable.Creator<ParcelableLocation>() {
|
||||
@Override
|
||||
public ParcelableLocation createFromParcel(final Parcel in) {
|
||||
return new ParcelableLocation(in);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ParcelableLocation[] newArray(final int size) {
|
||||
return new ParcelableLocation[size];
|
||||
}
|
||||
};
|
||||
|
||||
public ParcelableLocation() {
|
||||
}
|
||||
|
||||
@ -63,54 +53,6 @@ public class ParcelableLocation implements Parcelable {
|
||||
this.longitude = longitude;
|
||||
}
|
||||
|
||||
public ParcelableLocation(@Nullable final GeoLocation location) {
|
||||
latitude = location != null ? location.getLatitude() : Double.NaN;
|
||||
longitude = location != null ? location.getLongitude() : Double.NaN;
|
||||
}
|
||||
|
||||
public ParcelableLocation(@Nullable final Location location) {
|
||||
latitude = location != null ? location.getLatitude() : Double.NaN;
|
||||
longitude = location != null ? location.getLongitude() : Double.NaN;
|
||||
}
|
||||
|
||||
public ParcelableLocation(final Parcel in) {
|
||||
latitude = in.readDouble();
|
||||
longitude = in.readDouble();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static ParcelableLocation fromString(@Nullable final String locationString) {
|
||||
if (locationString == null) return null;
|
||||
final String[] longlat = locationString.split(",");
|
||||
if (longlat.length != 2) {
|
||||
return null;
|
||||
}
|
||||
|
||||
ParcelableLocation obj = new ParcelableLocation();
|
||||
try {
|
||||
obj.latitude = Double.parseDouble(longlat[0]);
|
||||
obj.longitude = Double.parseDouble(longlat[1]);
|
||||
} catch (NumberFormatException e) {
|
||||
return null;
|
||||
}
|
||||
if (isValidLocation(obj)) return obj;
|
||||
return null;
|
||||
}
|
||||
|
||||
public static String toString(final ParcelableLocation location) {
|
||||
if (!isValidLocation(location)) return null;
|
||||
return toString(location.latitude, location.longitude);
|
||||
}
|
||||
|
||||
public static String toString(double latitude, double longitude) {
|
||||
return latitude + "," + longitude;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int describeContents() {
|
||||
return hashCode();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(final Object obj) {
|
||||
if (this == obj) return true;
|
||||
@ -124,24 +66,6 @@ public class ParcelableLocation implements Parcelable {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static ParcelableLocation fromGeoLocation(@Nullable GeoLocation geoLocation) {
|
||||
if (geoLocation == null) return null;
|
||||
return new ParcelableLocation(geoLocation);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static ParcelableLocation fromLocation(@Nullable Location location) {
|
||||
if (location == null) return null;
|
||||
return new ParcelableLocation(location);
|
||||
}
|
||||
|
||||
public String getHumanReadableString(int decimalDigits) {
|
||||
return String.format("%s,%s", ParseUtils.parsePrettyDecimal(latitude, decimalDigits),
|
||||
ParseUtils.parsePrettyDecimal(longitude, decimalDigits));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
@ -154,46 +78,63 @@ public class ParcelableLocation implements Parcelable {
|
||||
return result;
|
||||
}
|
||||
|
||||
public boolean isValid() {
|
||||
return isValidLocation(latitude, longitude);
|
||||
}
|
||||
|
||||
public static boolean isValidLocation(double latitude, double longitude) {
|
||||
return !Double.isNaN(latitude) && !Double.isNaN(longitude);
|
||||
}
|
||||
|
||||
public GeoLocation toGeoLocation() {
|
||||
return isValid() ? new GeoLocation(latitude, longitude) : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ParcelableLocation{latitude=" + latitude + ", longitude=" + longitude + "}";
|
||||
return latitude + "," + longitude;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(final Parcel out, final int flags) {
|
||||
out.writeDouble(latitude);
|
||||
out.writeDouble(longitude);
|
||||
}
|
||||
@Nullable
|
||||
public static ParcelableLocation valueOf(@Nullable final String locationString) {
|
||||
if (locationString == null) return null;
|
||||
final String[] longlat = locationString.split(",");
|
||||
if (longlat.length != 2) {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static boolean isValidLocation(final ParcelableLocation location) {
|
||||
return location != null && location.isValid();
|
||||
}
|
||||
|
||||
public static GeoLocation toGeoLocation(final ParcelableLocation location) {
|
||||
return isValidLocation(location) ? location.toGeoLocation() : null;
|
||||
ParcelableLocation obj = new ParcelableLocation();
|
||||
try {
|
||||
obj.latitude = Double.parseDouble(longlat[0]);
|
||||
obj.longitude = Double.parseDouble(longlat[1]);
|
||||
} catch (NumberFormatException e) {
|
||||
return null;
|
||||
}
|
||||
if (Double.isNaN(obj.latitude) || Double.isNaN(obj.longitude)) return null;
|
||||
return obj;
|
||||
}
|
||||
|
||||
public static class Converter implements CursorFieldConverter<ParcelableLocation> {
|
||||
@Override
|
||||
public ParcelableLocation parseField(Cursor cursor, int columnIndex, ParameterizedType fieldType) {
|
||||
return ParcelableLocation.fromString(cursor.getString(columnIndex));
|
||||
return valueOf(cursor.getString(columnIndex));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeField(ContentValues values, ParcelableLocation object, String columnName, ParameterizedType fieldType) {
|
||||
values.put(columnName, ParcelableLocation.toString(object));
|
||||
if (object == null) return;
|
||||
values.put(columnName, object.toString());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags) {
|
||||
ParcelableLocationParcelablePlease.writeToParcel(this, dest, flags);
|
||||
}
|
||||
|
||||
public static final Creator<ParcelableLocation> CREATOR = new Creator<ParcelableLocation>() {
|
||||
public ParcelableLocation createFromParcel(Parcel source) {
|
||||
ParcelableLocation target = new ParcelableLocation();
|
||||
ParcelableLocationParcelablePlease.readFromParcel(target, source);
|
||||
return target;
|
||||
}
|
||||
|
||||
public ParcelableLocation[] newArray(int size) {
|
||||
return new ParcelableLocation[size];
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -50,17 +50,6 @@ public final class ParseUtils implements TwidereConstants {
|
||||
return String.valueOf(object);
|
||||
}
|
||||
|
||||
public static String parsePrettyDecimal(double num, int decimalDigits) {
|
||||
String result = String.format(Locale.US, "%." + decimalDigits + "f", num);
|
||||
int dotIdx = result.lastIndexOf('.');
|
||||
if (dotIdx == -1) return result;
|
||||
int i;
|
||||
for (i = result.length() - 1; i >= 0; i--) {
|
||||
if (result.charAt(i) != '0') break;
|
||||
}
|
||||
return result.substring(0, i == dotIdx ? dotIdx : i + 1);
|
||||
}
|
||||
|
||||
public static int parseColor(String str, int def) {
|
||||
if (isEmpty(str)) return def;
|
||||
try {
|
||||
|
@ -117,6 +117,7 @@ import org.mariotaku.twidere.model.ParcelableUser;
|
||||
import org.mariotaku.twidere.model.UserKey;
|
||||
import org.mariotaku.twidere.model.draft.UpdateStatusActionExtra;
|
||||
import org.mariotaku.twidere.model.util.ParcelableAccountUtils;
|
||||
import org.mariotaku.twidere.model.util.ParcelableLocationUtils;
|
||||
import org.mariotaku.twidere.preference.ServicePickerPreference;
|
||||
import org.mariotaku.twidere.provider.TwidereDataStore.Drafts;
|
||||
import org.mariotaku.twidere.service.BackgroundOperationService;
|
||||
@ -1244,7 +1245,7 @@ public class ComposeActivity extends ThemedFragmentActivity implements OnMenuIte
|
||||
|
||||
private void setRecentLocation(ParcelableLocation location) {
|
||||
if (location != null) {
|
||||
mLocationText.setText(location.getHumanReadableString(3));
|
||||
mLocationText.setText(ParcelableLocationUtils.getHumanReadableString(location, 3));
|
||||
} else {
|
||||
mLocationText.setText(R.string.unknown_location);
|
||||
}
|
||||
@ -1397,7 +1398,7 @@ public class ComposeActivity extends ThemedFragmentActivity implements OnMenuIte
|
||||
public void onLocationChanged(final Location location) {
|
||||
final ComposeActivity activity = mActivityRef.get();
|
||||
if (activity == null) return;
|
||||
activity.setRecentLocation(ParcelableLocation.fromLocation(location));
|
||||
activity.setRecentLocation(ParcelableLocationUtils.fromLocation(location));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -243,7 +243,7 @@ public abstract class AbsActivitiesFragment<Data> extends AbsContentListRecycler
|
||||
public final Loader<Data> onCreateLoader(int id, Bundle args) {
|
||||
final boolean fromUser = args.getBoolean(EXTRA_FROM_USER);
|
||||
args.remove(EXTRA_FROM_USER);
|
||||
return onCreateStatusesLoader(getActivity(), args, fromUser);
|
||||
return onCreateActivitiesLoader(getActivity(), args, fromUser);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -527,8 +527,8 @@ public abstract class AbsActivitiesFragment<Data> extends AbsContentListRecycler
|
||||
|
||||
protected abstract boolean hasMoreData(Data data);
|
||||
|
||||
protected abstract Loader<Data> onCreateStatusesLoader(final Context context, final Bundle args,
|
||||
final boolean fromUser);
|
||||
protected abstract Loader<Data> onCreateActivitiesLoader(final Context context, final Bundle args,
|
||||
final boolean fromUser);
|
||||
|
||||
protected abstract void onLoadingFinished();
|
||||
|
||||
|
@ -101,9 +101,9 @@ public abstract class CursorActivitiesFragment extends AbsActivitiesFragment<Lis
|
||||
public abstract Uri getContentUri();
|
||||
|
||||
@Override
|
||||
protected Loader<List<ParcelableActivity>> onCreateStatusesLoader(final Context context,
|
||||
final Bundle args,
|
||||
final boolean fromUser) {
|
||||
protected Loader<List<ParcelableActivity>> onCreateActivitiesLoader(final Context context,
|
||||
final Bundle args,
|
||||
final boolean fromUser) {
|
||||
final Uri uri = getContentUri();
|
||||
final String table = getTableNameByUri(uri);
|
||||
final String sortOrder = getSortOrder();
|
||||
|
@ -119,6 +119,7 @@ import org.mariotaku.twidere.model.UserKey;
|
||||
import org.mariotaku.twidere.model.message.FavoriteTaskEvent;
|
||||
import org.mariotaku.twidere.model.message.StatusListChangedEvent;
|
||||
import org.mariotaku.twidere.model.util.ParcelableActivityUtils;
|
||||
import org.mariotaku.twidere.model.util.ParcelableLocationUtils;
|
||||
import org.mariotaku.twidere.model.util.ParcelableMediaUtils;
|
||||
import org.mariotaku.twidere.model.util.ParcelableStatusUtils;
|
||||
import org.mariotaku.twidere.model.util.ParcelableUserUtils;
|
||||
@ -1086,8 +1087,8 @@ public class StatusFragment extends BaseSupportFragment implements LoaderCallbac
|
||||
if (!TextUtils.isEmpty(placeFullName)) {
|
||||
locationView.setVisibility(View.VISIBLE);
|
||||
locationView.setText(placeFullName);
|
||||
locationView.setClickable(ParcelableLocation.isValidLocation(location));
|
||||
} else if (ParcelableLocation.isValidLocation(location)) {
|
||||
locationView.setClickable(ParcelableLocationUtils.isValidLocation(location));
|
||||
} else if (ParcelableLocationUtils.isValidLocation(location)) {
|
||||
locationView.setVisibility(View.VISIBLE);
|
||||
locationView.setText(R.string.view_map);
|
||||
locationView.setClickable(true);
|
||||
@ -1215,7 +1216,7 @@ public class StatusFragment extends BaseSupportFragment implements LoaderCallbac
|
||||
}
|
||||
case R.id.location_view: {
|
||||
final ParcelableLocation location = status.location;
|
||||
if (!ParcelableLocation.isValidLocation(location)) return;
|
||||
if (!ParcelableLocationUtils.isValidLocation(location)) return;
|
||||
IntentUtils.openMap(adapter.getContext(), location.latitude, location.longitude);
|
||||
break;
|
||||
}
|
||||
|
@ -114,10 +114,8 @@ public final class ParcelableUserLoader extends AsyncTaskLoader<SingleResponse<P
|
||||
try {
|
||||
final User twitterUser = TwitterWrapper.tryShowUser(twitter, mUserId, mScreenName);
|
||||
final ContentValues cachedUserValues = createCachedUser(twitterUser);
|
||||
final long userId = twitterUser.getId();
|
||||
resolver.insert(CachedUsers.CONTENT_URI, cachedUserValues);
|
||||
final ParcelableUser user = ParcelableUserUtils.fromUser(twitterUser, accountKey);
|
||||
|
||||
user.account_color = accountColor;
|
||||
return SingleResponse.getInstance(user);
|
||||
} catch (final TwitterException e) {
|
||||
|
@ -68,7 +68,7 @@ public class ListResponse<Data> extends AbstractList<Data> implements Response<L
|
||||
|
||||
@Override
|
||||
public boolean isEmpty() {
|
||||
return list != null && list.isEmpty();
|
||||
return list == null || list.isEmpty();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -7,6 +7,7 @@ import android.support.annotation.NonNull;
|
||||
import com.bluelinelabs.logansquare.annotation.JsonField;
|
||||
import com.bluelinelabs.logansquare.annotation.JsonObject;
|
||||
|
||||
import org.mariotaku.twidere.TwidereConstants;
|
||||
import org.mariotaku.twidere.constant.IntentConstants;
|
||||
import org.mariotaku.twidere.model.UserKey;
|
||||
|
||||
@ -16,7 +17,7 @@ import java.util.Arrays;
|
||||
* Created by mariotaku on 16/3/6.
|
||||
*/
|
||||
@JsonObject
|
||||
public class TabArguments implements IntentConstants {
|
||||
public class TabArguments implements TwidereConstants {
|
||||
@JsonField(name = "account_id")
|
||||
long accountId = -1;
|
||||
|
||||
|
@ -0,0 +1,48 @@
|
||||
package org.mariotaku.twidere.model.util;
|
||||
|
||||
import android.location.Location;
|
||||
import android.support.annotation.Nullable;
|
||||
|
||||
import org.mariotaku.twidere.api.twitter.model.GeoLocation;
|
||||
import org.mariotaku.twidere.model.ParcelableLocation;
|
||||
import org.mariotaku.twidere.util.InternalParseUtils;
|
||||
|
||||
/**
|
||||
* Created by mariotaku on 16/3/8.
|
||||
*/
|
||||
public class ParcelableLocationUtils {
|
||||
public static String getHumanReadableString(ParcelableLocation obj, int decimalDigits) {
|
||||
return String.format("%s,%s", InternalParseUtils.parsePrettyDecimal(obj.latitude, decimalDigits),
|
||||
InternalParseUtils.parsePrettyDecimal(obj.longitude, decimalDigits));
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static ParcelableLocation fromGeoLocation(@Nullable GeoLocation geoLocation) {
|
||||
if (geoLocation == null) return null;
|
||||
final ParcelableLocation result = new ParcelableLocation();
|
||||
result.latitude = geoLocation.getLatitude();
|
||||
result.longitude = geoLocation.getLongitude();
|
||||
return result;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static ParcelableLocation fromLocation(@Nullable Location location) {
|
||||
if (location == null) return null;
|
||||
final ParcelableLocation result = new ParcelableLocation();
|
||||
result.latitude = location.getLatitude();
|
||||
result.longitude = location.getLongitude();
|
||||
return result;
|
||||
}
|
||||
|
||||
public static boolean isValidLocation(final ParcelableLocation location) {
|
||||
return location != null && !Double.isNaN(location.latitude) && !Double.isNaN(location.longitude);
|
||||
}
|
||||
|
||||
public static GeoLocation toGeoLocation(final ParcelableLocation location) {
|
||||
return isValidLocation(location) ? new GeoLocation(location.latitude, location.longitude) : null;
|
||||
}
|
||||
|
||||
public static boolean isValidLocation(double latitude, double longitude) {
|
||||
return !Double.isNaN(latitude) && !Double.isNaN(longitude);
|
||||
}
|
||||
}
|
@ -8,7 +8,6 @@ import org.mariotaku.twidere.api.twitter.model.Place;
|
||||
import org.mariotaku.twidere.api.twitter.model.Status;
|
||||
import org.mariotaku.twidere.api.twitter.model.User;
|
||||
import org.mariotaku.twidere.api.twitter.model.UserMentionEntity;
|
||||
import org.mariotaku.twidere.model.ParcelableLocation;
|
||||
import org.mariotaku.twidere.model.ParcelableStatus;
|
||||
import org.mariotaku.twidere.model.UserKey;
|
||||
import org.mariotaku.twidere.util.HtmlEscapeHelper;
|
||||
@ -68,7 +67,7 @@ public class ParcelableStatusUtils {
|
||||
result.quoted_timestamp = quoted.getCreatedAt().getTime();
|
||||
result.quoted_source = quoted.getSource();
|
||||
result.quoted_media = ParcelableMediaUtils.fromStatus(quoted);
|
||||
result.quoted_location = ParcelableLocation.fromGeoLocation(quoted.getGeoLocation());
|
||||
result.quoted_location = ParcelableLocationUtils.fromGeoLocation(quoted.getGeoLocation());
|
||||
result.quoted_place_full_name = getPlaceFullName(quoted.getPlace());
|
||||
|
||||
result.quoted_user_id = UserKeyUtils.fromUser(quoted_user);
|
||||
@ -116,7 +115,7 @@ public class ParcelableStatusUtils {
|
||||
result.media = ParcelableMediaUtils.fromStatus(status);
|
||||
result.text_plain = InternalTwitterContentUtils.unescapeTwitterStatusText(status.getText());
|
||||
result.source = status.getSource();
|
||||
result.location = ParcelableLocation.fromGeoLocation(status.getGeoLocation());
|
||||
result.location = ParcelableLocationUtils.fromGeoLocation(status.getGeoLocation());
|
||||
result.is_favorite = status.isFavorited();
|
||||
result.text_unescaped = HtmlEscapeHelper.toPlainText(result.text_html);
|
||||
if (result.account_key.maybeEquals(result.retweeted_by_user_id)) {
|
||||
|
@ -61,7 +61,6 @@ import org.mariotaku.twidere.api.twitter.model.ErrorInfo;
|
||||
import org.mariotaku.twidere.api.twitter.model.MediaUploadResponse;
|
||||
import org.mariotaku.twidere.api.twitter.model.Status;
|
||||
import org.mariotaku.twidere.api.twitter.model.StatusUpdate;
|
||||
import org.mariotaku.twidere.api.twitter.model.UserMentionEntity;
|
||||
import org.mariotaku.twidere.app.TwidereApplication;
|
||||
import org.mariotaku.twidere.model.Draft;
|
||||
import org.mariotaku.twidere.model.DraftCursorIndices;
|
||||
@ -70,7 +69,6 @@ import org.mariotaku.twidere.model.MediaUploadResult;
|
||||
import org.mariotaku.twidere.model.ParcelableAccount;
|
||||
import org.mariotaku.twidere.model.ParcelableCredentials;
|
||||
import org.mariotaku.twidere.model.ParcelableDirectMessage;
|
||||
import org.mariotaku.twidere.model.ParcelableLocation;
|
||||
import org.mariotaku.twidere.model.ParcelableMediaUpdate;
|
||||
import org.mariotaku.twidere.model.ParcelableStatus;
|
||||
import org.mariotaku.twidere.model.ParcelableStatusUpdate;
|
||||
@ -84,6 +82,7 @@ import org.mariotaku.twidere.model.draft.UpdateStatusActionExtra;
|
||||
import org.mariotaku.twidere.model.util.ParcelableAccountUtils;
|
||||
import org.mariotaku.twidere.model.util.ParcelableCredentialsUtils;
|
||||
import org.mariotaku.twidere.model.util.ParcelableDirectMessageUtils;
|
||||
import org.mariotaku.twidere.model.util.ParcelableLocationUtils;
|
||||
import org.mariotaku.twidere.model.util.ParcelableStatusUpdateUtils;
|
||||
import org.mariotaku.twidere.model.util.ParcelableStatusUtils;
|
||||
import org.mariotaku.twidere.model.util.ParcelableUserMentionUtils;
|
||||
@ -646,7 +645,7 @@ public class BackgroundOperationService extends IntentService implements Constan
|
||||
status.inReplyToStatusId(statusUpdate.in_reply_to_status.id);
|
||||
}
|
||||
if (statusUpdate.location != null) {
|
||||
status.location(ParcelableLocation.toGeoLocation(statusUpdate.location));
|
||||
status.location(ParcelableLocationUtils.toGeoLocation(statusUpdate.location));
|
||||
}
|
||||
if (uploader == null && hasMedia) {
|
||||
final long[] mediaIds = new long[statusUpdate.media.length];
|
||||
|
@ -32,7 +32,7 @@ public class UpdateAccountInfoTask extends AbstractTask<Pair<UserKey, Parcelable
|
||||
final ContentResolver resolver = context.getContentResolver();
|
||||
final UserKey accountKey = params.first;
|
||||
final ParcelableUser user = params.second;
|
||||
if (!Utils.isMyAccount(context, user.key)) {
|
||||
if (!Utils.isMyAccount(context, user.key) || user.is_cache) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -905,8 +905,10 @@ public class DataStoreUtils implements Constants {
|
||||
Expression.likeRaw(new Column(Accounts.ACCOUNT_KEY), "?||\'@%\'")).getSQL();
|
||||
whereArgs = new String[]{String.valueOf(accountId), String.valueOf(accountId)};
|
||||
} else {
|
||||
where = Expression.equalsArgs(Accounts.ACCOUNT_KEY).getSQL();
|
||||
whereArgs = new String[]{String.valueOf(accountKey.toString())};
|
||||
where = Expression.or(Expression.equalsArgs(Accounts.ACCOUNT_KEY),
|
||||
Expression.equalsArgs(Accounts.ACCOUNT_KEY)).getSQL();
|
||||
whereArgs = new String[]{String.valueOf(accountKey.toString()),
|
||||
String.valueOf(accountId)};
|
||||
}
|
||||
return cr.query(Accounts.CONTENT_URI, columns, where, whereArgs, null);
|
||||
}
|
||||
@ -916,12 +918,15 @@ public class DataStoreUtils implements Constants {
|
||||
final long... ids) {
|
||||
if (ids == null) return null;
|
||||
final ContentResolver cr = context.getContentResolver();
|
||||
Expression[] expressions = new Expression[ids.length];
|
||||
Expression[] expressions = new Expression[ids.length + 1];
|
||||
for (int i = 0, j = ids.length; i < j; i++) {
|
||||
expressions[i] = Expression.likeRaw(new Column(Accounts.ACCOUNT_KEY), "?||\'@%\'");
|
||||
}
|
||||
expressions[ids.length] = Expression.inArgs(new Column(Accounts.ACCOUNT_KEY), ids.length);
|
||||
final String where = Expression.or(expressions).getSQL();
|
||||
final String[] whereArgs = TwidereArrayUtils.toStringArray(ids);
|
||||
final String[] whereArgs = new String[ids.length * 2];
|
||||
System.arraycopy(TwidereArrayUtils.toStringArray(ids), 0, whereArgs, 0, ids.length);
|
||||
System.arraycopy(whereArgs, 0, whereArgs, ids.length, ids.length);
|
||||
return cr.query(Accounts.CONTENT_URI, columns, where, whereArgs, null);
|
||||
}
|
||||
|
||||
|
@ -25,12 +25,12 @@ import org.mariotaku.twidere.constant.SharedPreferenceConstants;
|
||||
import org.mariotaku.twidere.fragment.support.SensitiveContentWarningDialogFragment;
|
||||
import org.mariotaku.twidere.fragment.support.UserFragment;
|
||||
import org.mariotaku.twidere.model.ParcelableDirectMessage;
|
||||
import org.mariotaku.twidere.model.ParcelableLocation;
|
||||
import org.mariotaku.twidere.model.ParcelableMedia;
|
||||
import org.mariotaku.twidere.model.ParcelableStatus;
|
||||
import org.mariotaku.twidere.model.ParcelableUser;
|
||||
import org.mariotaku.twidere.model.ParcelableUserList;
|
||||
import org.mariotaku.twidere.model.UserKey;
|
||||
import org.mariotaku.twidere.model.util.ParcelableLocationUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -273,7 +273,7 @@ public class IntentUtils implements Constants {
|
||||
}
|
||||
|
||||
public static void openMap(@NonNull final Context context, final double latitude, final double longitude) {
|
||||
if (!ParcelableLocation.isValidLocation(latitude, longitude)) return;
|
||||
if (!ParcelableLocationUtils.isValidLocation(latitude, longitude)) return;
|
||||
final Uri.Builder builder = new Uri.Builder();
|
||||
builder.scheme(SCHEME_TWIDERE);
|
||||
builder.authority(AUTHORITY_MAP);
|
||||
|
@ -14,6 +14,7 @@ import org.mariotaku.twidere.constant.IntentConstants;
|
||||
import java.io.IOException;
|
||||
import java.io.StringWriter;
|
||||
import java.util.Iterator;
|
||||
import java.util.Locale;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
@ -99,4 +100,15 @@ public class InternalParseUtils {
|
||||
return CompatibilityConstants.EXTRA_ACCOUNT_ID.equals(key) || IntentConstants.EXTRA_USER_ID.equals(key) || IntentConstants.EXTRA_STATUS_ID.equals(key)
|
||||
|| IntentConstants.EXTRA_LIST_ID.equals(key);
|
||||
}
|
||||
|
||||
public static String parsePrettyDecimal(double num, int decimalDigits) {
|
||||
String result = String.format(Locale.US, "%." + decimalDigits + "f", num);
|
||||
int dotIdx = result.lastIndexOf('.');
|
||||
if (dotIdx == -1) return result;
|
||||
int i;
|
||||
for (i = result.length() - 1; i >= 0; i--) {
|
||||
if (result.charAt(i) != '0') break;
|
||||
}
|
||||
return result.substring(0, i == dotIdx ? dotIdx : i + 1);
|
||||
}
|
||||
}
|
||||
|
@ -25,6 +25,7 @@ import org.mariotaku.twidere.model.ParcelableLocation;
|
||||
import org.mariotaku.twidere.model.ParcelableMedia;
|
||||
import org.mariotaku.twidere.model.ParcelableStatus;
|
||||
import org.mariotaku.twidere.model.UserKey;
|
||||
import org.mariotaku.twidere.model.util.ParcelableLocationUtils;
|
||||
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
||||
import org.mariotaku.twidere.util.HtmlSpanBuilder;
|
||||
import org.mariotaku.twidere.util.MediaLoaderWrapper;
|
||||
@ -551,7 +552,7 @@ public class StatusViewHolder extends ViewHolder implements Constants, IStatusVi
|
||||
extraTypeView.setImageResource(sensitive ? R.drawable.ic_action_warning : R.drawable.ic_action_gallery);
|
||||
}
|
||||
extraTypeView.setVisibility(View.VISIBLE);
|
||||
} else if (ParcelableLocation.isValidLocation(location) || !TextUtils.isEmpty(placeFullName)) {
|
||||
} else if (ParcelableLocationUtils.isValidLocation(location) || !TextUtils.isEmpty(placeFullName)) {
|
||||
extraTypeView.setImageResource(R.drawable.ic_action_location);
|
||||
extraTypeView.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
|
Loading…
x
Reference in New Issue
Block a user