trying to make twidere work with identi.ca #235
improved L compatibility
This commit is contained in:
parent
7baf4c95af
commit
03dccdbe43
|
@ -1 +1 @@
|
|||
Subproject commit e565ee636888197425aabf17c46a398544ba6dc3
|
||||
Subproject commit 42c1ffdeb547e4caa9a3a10249912b350453346e
|
|
@ -1,4 +1,5 @@
|
|||
include ':twidere', ':SlidingMenu', ':DragSortListView', ':MenuComponent', ':RefreshNow'
|
||||
include ':twidere', ':twidere.wear'
|
||||
include ':SlidingMenu', ':DragSortListView', ':MenuComponent', ':RefreshNow'
|
||||
|
||||
project(':SlidingMenu').projectDir = file('libraries/SlidingMenu/library')
|
||||
project(':DragSortListView').projectDir = file('libraries/DragSortListView/library')
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
/build
|
|
@ -0,0 +1,32 @@
|
|||
apply plugin: 'com.android.application'
|
||||
|
||||
|
||||
android {
|
||||
compileSdkVersion 20
|
||||
buildToolsVersion "21.0.2"
|
||||
|
||||
defaultConfig {
|
||||
applicationId "org.mariotaku.twidere"
|
||||
minSdkVersion 20
|
||||
targetSdkVersion 20
|
||||
versionCode 1
|
||||
versionName "1.0"
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_7
|
||||
targetCompatibility JavaVersion.VERSION_1_7
|
||||
}
|
||||
buildTypes {
|
||||
release {
|
||||
runProguard false
|
||||
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile fileTree(dir: 'libs', include: ['*.jar'])
|
||||
compile 'com.google.android.support:wearable:1.0.0'
|
||||
compile 'com.google.android.gms:play-services-wearable:6.1.11'
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
# Add project specific ProGuard rules here.
|
||||
# By default, the flags in this file are appended to flags specified
|
||||
# in /Applications/Android Studio.app/sdk/tools/proguard/proguard-android.txt
|
||||
# You can edit the include path and order by changing the proguardFiles
|
||||
# directive in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# Add any project specific keep options here:
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
|
@ -0,0 +1,23 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.mariotaku.twidere.extension.wear" >
|
||||
|
||||
<uses-feature android:name="android.hardware.type.watch" />
|
||||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
android:icon="@drawable/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@android:style/Theme.DeviceDefault" >
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:label="@string/title_activity_main" >
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
</application>
|
||||
|
||||
</manifest>
|
|
@ -0,0 +1,24 @@
|
|||
package org.mariotaku.twidere.extension.wear;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.os.Bundle;
|
||||
import android.support.wearable.view.WatchViewStub;
|
||||
import android.widget.TextView;
|
||||
|
||||
public class MainActivity extends Activity {
|
||||
|
||||
private TextView mTextView;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_main);
|
||||
final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
|
||||
stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
|
||||
@Override
|
||||
public void onLayoutInflated(WatchViewStub stub) {
|
||||
mTextView = (TextView) stub.findViewById(R.id.text);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 7.6 KiB |
Binary file not shown.
After Width: | Height: | Size: 3.7 KiB |
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.wearable.view.WatchViewStub
|
||||
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:id="@+id/watch_view_stub"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
app:rectLayout="@layout/rect_activity_main"
|
||||
app:roundLayout="@layout/round_activity_main"
|
||||
tools:context="org.mariotaku.twidere.extension.wear.MainActivity"
|
||||
tools:deviceIds="wear">
|
||||
</android.support.wearable.view.WatchViewStub>
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
tools:context="org.mariotaku.twidere.extension.wear.MainActivity"
|
||||
tools:deviceIds="wear_square">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/hello_square" />
|
||||
</LinearLayout>
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
tools:context="org.mariotaku.twidere.extension.wear.MainActivity"
|
||||
tools:deviceIds="wear_round">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:text="@string/hello_round" />
|
||||
</RelativeLayout>
|
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<string name="app_name">Twidere Wear Extension</string>
|
||||
<string name="title_activity_main">MainActivity</string>
|
||||
<string name="hello_round">Hello Round World!</string>
|
||||
<string name="hello_square">Hello Square World!</string>
|
||||
|
||||
</resources>
|
|
@ -2,7 +2,7 @@ apply plugin: 'com.android.application'
|
|||
|
||||
android {
|
||||
compileSdkVersion 21
|
||||
buildToolsVersion '21.0.1'
|
||||
buildToolsVersion '21.0.2'
|
||||
|
||||
defaultConfig {
|
||||
applicationId "org.mariotaku.twidere"
|
||||
|
@ -69,7 +69,9 @@ android {
|
|||
}
|
||||
|
||||
dependencies {
|
||||
wearApp project(':twidere.wear')
|
||||
compile 'com.android.support:support-v13:21.0.0'
|
||||
compile 'com.android.support:appcompat-v7:21.0.0'
|
||||
compile 'com.android.support:cardview-v7:21.0.0'
|
||||
compile 'com.android.support:recyclerview-v7:21.0.0'
|
||||
compile 'com.google.android.gms:play-services:6.1.11'
|
||||
|
|
|
@ -46,6 +46,7 @@ import org.mariotaku.gallery3d.ui.SynchronizedHandler;
|
|||
import org.mariotaku.gallery3d.util.GalleryUtils;
|
||||
import org.mariotaku.gallery3d.util.ThreadPool;
|
||||
import org.mariotaku.menucomponent.widget.MenuBar;
|
||||
import org.mariotaku.menucomponent.widget.MenuBar.MenuBarListener;
|
||||
import org.mariotaku.twidere.Constants;
|
||||
import org.mariotaku.twidere.R;
|
||||
import org.mariotaku.twidere.activity.support.TwidereSwipeBackActivity;
|
||||
|
@ -60,7 +61,7 @@ import me.imid.swipebacklayout.lib.SwipeBackLayout.SwipeListener;
|
|||
|
||||
public final class ImageViewerGLActivity extends TwidereSwipeBackActivity implements Constants, PhotoView.Listener,
|
||||
GLImageLoader.DownloadListener, LoaderManager.LoaderCallbacks<GLImageLoader.Result>, OnMenuVisibilityListener,
|
||||
SwipeListener, OnMenuItemClickListener {
|
||||
SwipeListener, MenuBarListener {
|
||||
|
||||
private final GLView mRootPane = new GLView() {
|
||||
@Override
|
||||
|
@ -340,7 +341,7 @@ public final class ImageViewerGLActivity extends TwidereSwipeBackActivity implem
|
|||
if (savedInstanceState == null) {
|
||||
loadImage();
|
||||
}
|
||||
mMenuBar.setOnMenuItemClickListener(this);
|
||||
mMenuBar.setMenuBarListener(this);
|
||||
mMenuBar.inflate(R.menu.menu_image_viewer);
|
||||
mMenuBar.setIsBottomBar(true);
|
||||
mMenuBar.show();
|
||||
|
@ -531,6 +532,11 @@ public final class ImageViewerGLActivity extends TwidereSwipeBackActivity implem
|
|||
Utils.addIntentToMenu(this, subMenu, shareIntent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPreShowMenu(Menu menu) {
|
||||
|
||||
}
|
||||
|
||||
private static class MyHandler extends SynchronizedHandler {
|
||||
ImageViewerGLActivity activity;
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ package org.mariotaku.twidere;
|
|||
public interface Constants extends TwidereConstants {
|
||||
|
||||
public static final String DATABASES_NAME = "twidere.sqlite";
|
||||
public static final int DATABASES_VERSION = 66;
|
||||
public static final int DATABASES_VERSION = 67;
|
||||
|
||||
public static final String GOOGLE_MAPS_API_KEY_RELEASE = "0kjPwJOe_zwYjzGc9uYak7vhm_Sf3eob-2L3Xzw";
|
||||
public static final String GOOGLE_MAPS_API_KEY_DEBUG = "0kjPwJOe_zwY9p6kT-kygu4mxwysyOOpfkaXqTA";
|
||||
|
|
|
@ -61,10 +61,10 @@ import org.mariotaku.twidere.fragment.support.BaseSupportDialogFragment;
|
|||
import org.mariotaku.twidere.menu.TwidereMenuInflater;
|
||||
import org.mariotaku.twidere.model.ParcelableUser;
|
||||
import org.mariotaku.twidere.provider.TweetStore.Filters;
|
||||
import org.mariotaku.twidere.util.ContentValuesCreator;
|
||||
import org.mariotaku.twidere.util.ParseUtils;
|
||||
import org.mariotaku.twidere.util.ThemeUtils;
|
||||
|
||||
import static org.mariotaku.twidere.util.ContentValuesCreator.makeFilterdUserContentValues;
|
||||
import static org.mariotaku.twidere.util.Utils.getDefaultAccountId;
|
||||
|
||||
public class FiltersActivity extends BaseSupportActivity implements TabListener, OnPageChangeListener {
|
||||
|
@ -204,7 +204,7 @@ public class FiltersActivity extends BaseSupportActivity implements TabListener,
|
|||
if (resultCode != RESULT_OK || !(filter instanceof FilteredUsersFragment) || !data.hasExtra(EXTRA_USER))
|
||||
return;
|
||||
final ParcelableUser user = data.getParcelableExtra(EXTRA_USER);
|
||||
final ContentValues values = makeFilterdUserContentValues(user);
|
||||
final ContentValues values = ContentValuesCreator.makeFilteredUserContentValues(user);
|
||||
final ContentResolver resolver = getContentResolver();
|
||||
resolver.delete(Filters.Users.CONTENT_URI, Where.equals(Filters.Users.USER_ID, user.id).getSQL(), null);
|
||||
resolver.insert(Filters.Users.CONTENT_URI, values);
|
||||
|
|
|
@ -53,7 +53,7 @@ public class APIEditorActivity extends BaseSupportDialogActivity implements Twit
|
|||
OnClickListener {
|
||||
|
||||
private EditText mEditAPIUrlFormat;
|
||||
private CheckBox mEditSameOAuthSigningUrl;
|
||||
private CheckBox mEditSameOAuthSigningUrl, mEditNoVersionSuffix;
|
||||
private EditText mEditConsumerKey, mEditConsumerSecret;
|
||||
private RadioGroup mEditAuthType;
|
||||
private RadioButton mButtonOAuth, mButtonxAuth, mButtonBasic, mButtonTwipOMode;
|
||||
|
@ -111,6 +111,7 @@ public class APIEditorActivity extends BaseSupportDialogActivity implements Twit
|
|||
mAdvancedAPIConfigLabel = (TextView) findViewById(R.id.advanced_api_config_label);
|
||||
mAdvancedAPIConfigView = findViewById(R.id.advanced_api_config);
|
||||
mEditSameOAuthSigningUrl = (CheckBox) findViewById(R.id.same_oauth_signing_url);
|
||||
mEditNoVersionSuffix = (CheckBox) findViewById(R.id.no_version_suffix);
|
||||
mEditConsumerKey = (EditText) findViewById(R.id.consumer_key);
|
||||
mEditConsumerSecret = (EditText) findViewById(R.id.consumer_secret);
|
||||
mSaveButton = (Button) findViewById(R.id.save);
|
||||
|
@ -122,11 +123,13 @@ public class APIEditorActivity extends BaseSupportDialogActivity implements Twit
|
|||
final String apiUrlFormat = parseString(mEditAPIUrlFormat.getText());
|
||||
final int authType = getCheckedAuthType(mEditAuthType.getCheckedRadioButtonId());
|
||||
final boolean sameOAuthSigningUrl = mEditSameOAuthSigningUrl.isChecked();
|
||||
final boolean noVersionSuffix = mEditNoVersionSuffix.isChecked();
|
||||
final String consumerKey = parseString(mEditConsumerKey.getText());
|
||||
final String consumerSecret = parseString(mEditConsumerSecret.getText());
|
||||
outState.putString(Accounts.API_URL_FORMAT, apiUrlFormat);
|
||||
outState.putInt(Accounts.AUTH_TYPE, authType);
|
||||
outState.putBoolean(Accounts.SAME_OAUTH_SIGNING_URL, sameOAuthSigningUrl);
|
||||
outState.putBoolean(Accounts.NO_VERSION_SUFFIX, noVersionSuffix);
|
||||
outState.putString(Accounts.CONSUMER_KEY, consumerKey);
|
||||
outState.putString(Accounts.CONSUMER_SECRET, consumerSecret);
|
||||
super.onSaveInstanceState(outState);
|
||||
|
@ -136,12 +139,14 @@ public class APIEditorActivity extends BaseSupportDialogActivity implements Twit
|
|||
final String apiUrlFormat = parseString(mEditAPIUrlFormat.getText());
|
||||
final int authType = getCheckedAuthType(mEditAuthType.getCheckedRadioButtonId());
|
||||
final boolean sameOAuthSigningUrl = mEditSameOAuthSigningUrl.isChecked();
|
||||
final boolean noVersionSuffix = mEditNoVersionSuffix.isChecked();
|
||||
final String consumerKey = parseString(mEditConsumerKey.getText());
|
||||
final String consumerSecret = parseString(mEditConsumerSecret.getText());
|
||||
final Intent intent = new Intent();
|
||||
intent.putExtra(Accounts.API_URL_FORMAT, apiUrlFormat);
|
||||
intent.putExtra(Accounts.AUTH_TYPE, authType);
|
||||
intent.putExtra(Accounts.SAME_OAUTH_SIGNING_URL, sameOAuthSigningUrl);
|
||||
intent.putExtra(Accounts.NO_VERSION_SUFFIX, noVersionSuffix);
|
||||
intent.putExtra(Accounts.CONSUMER_KEY, consumerKey);
|
||||
intent.putExtra(Accounts.CONSUMER_SECRET, consumerSecret);
|
||||
setResult(RESULT_OK, intent);
|
||||
|
@ -155,13 +160,14 @@ public class APIEditorActivity extends BaseSupportDialogActivity implements Twit
|
|||
|
||||
String apiUrlFormat;
|
||||
int authType;
|
||||
boolean sameOAuthSigningUrl;
|
||||
boolean sameOAuthSigningUrl, noVersionSuffix;
|
||||
String consumerKey, consumerSecret;
|
||||
|
||||
final SharedPreferences pref = getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE);
|
||||
final String prefApiUrlFormat = getNonEmptyString(pref, KEY_API_URL_FORMAT, DEFAULT_REST_BASE_URL);
|
||||
final int prefAuthType = pref.getInt(KEY_AUTH_TYPE, Accounts.AUTH_TYPE_OAUTH);
|
||||
final boolean prefSameOAuthSigningUrl = pref.getBoolean(KEY_SAME_OAUTH_SIGNING_URL, false);
|
||||
final boolean prefNoVersionSuffix = pref.getBoolean(KEY_NO_VERSION_SUFFIX, false);
|
||||
final String prefConsumerKey = getNonEmptyString(pref, KEY_CONSUMER_KEY, TWITTER_CONSUMER_KEY_2);
|
||||
final String prefConsumerSecret = getNonEmptyString(pref, KEY_CONSUMER_SECRET, TWITTER_CONSUMER_SECRET_2);
|
||||
if (savedInstanceState != null) {
|
||||
|
@ -169,6 +175,8 @@ public class APIEditorActivity extends BaseSupportDialogActivity implements Twit
|
|||
authType = savedInstanceState.getInt(Accounts.AUTH_TYPE, prefAuthType);
|
||||
sameOAuthSigningUrl = savedInstanceState.getBoolean(Accounts.SAME_OAUTH_SIGNING_URL,
|
||||
prefSameOAuthSigningUrl);
|
||||
noVersionSuffix = savedInstanceState.getBoolean(Accounts.NO_VERSION_SUFFIX,
|
||||
prefNoVersionSuffix);
|
||||
consumerKey = trim(savedInstanceState.getString(Accounts.CONSUMER_KEY, prefConsumerKey));
|
||||
consumerSecret = trim(savedInstanceState.getString(Accounts.CONSUMER_SECRET, prefConsumerSecret));
|
||||
} else {
|
||||
|
@ -177,6 +185,7 @@ public class APIEditorActivity extends BaseSupportDialogActivity implements Twit
|
|||
apiUrlFormat = trim(extras.getString(Accounts.API_URL_FORMAT, prefApiUrlFormat));
|
||||
authType = extras.getInt(Accounts.AUTH_TYPE, prefAuthType);
|
||||
sameOAuthSigningUrl = extras.getBoolean(Accounts.SAME_OAUTH_SIGNING_URL, prefSameOAuthSigningUrl);
|
||||
noVersionSuffix = extras.getBoolean(Accounts.NO_VERSION_SUFFIX, prefNoVersionSuffix);
|
||||
consumerKey = trim(extras.getString(Accounts.CONSUMER_KEY, prefConsumerKey));
|
||||
consumerSecret = trim(extras.getString(Accounts.CONSUMER_SECRET, prefConsumerSecret));
|
||||
}
|
||||
|
@ -188,6 +197,7 @@ public class APIEditorActivity extends BaseSupportDialogActivity implements Twit
|
|||
|
||||
mEditAPIUrlFormat.setText(apiUrlFormat);
|
||||
mEditSameOAuthSigningUrl.setChecked(sameOAuthSigningUrl);
|
||||
mEditNoVersionSuffix.setChecked(noVersionSuffix);
|
||||
mEditConsumerKey.setText(consumerKey);
|
||||
mEditConsumerSecret.setText(consumerSecret);
|
||||
|
||||
|
|
|
@ -21,9 +21,13 @@ package org.mariotaku.twidere.activity.support;
|
|||
|
||||
import android.app.ActionBar;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.FragmentActivity;
|
||||
import android.support.v4.app.NavUtils;
|
||||
import android.text.SpannableStringBuilder;
|
||||
import android.text.Spanned;
|
||||
import android.text.style.ForegroundColorSpan;
|
||||
import android.view.Menu;
|
||||
|
||||
import org.mariotaku.twidere.Constants;
|
||||
|
@ -143,6 +147,20 @@ public abstract class BaseSupportThemedActivity extends FragmentActivity impleme
|
|||
super.onStart();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onTitleChanged(CharSequence title, int color) {
|
||||
final SpannableStringBuilder builder = new SpannableStringBuilder(title);
|
||||
super.onTitleChanged(title, color);
|
||||
final int themeResId = getCurrentThemeResourceId();
|
||||
final int themeColor = getThemeColor(), contrastColor = Utils.getContrastYIQ(themeColor, 192);
|
||||
if (ThemeUtils.isColoredActionBar(themeResId)) {
|
||||
builder.setSpan(new ForegroundColorSpan(contrastColor), 0, builder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
} else {
|
||||
final int titleColor = ThemeUtils.isLightActionBar(themeResId) ? Color.BLACK : Color.WHITE;
|
||||
builder.setSpan(new ForegroundColorSpan(titleColor), 0, builder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
|
|
|
@ -43,6 +43,7 @@ import android.os.Bundle;
|
|||
import android.os.Environment;
|
||||
import android.os.Parcelable;
|
||||
import android.provider.MediaStore;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.app.DialogFragment;
|
||||
import android.support.v4.util.LongSparseArray;
|
||||
import android.text.Editable;
|
||||
|
@ -53,7 +54,6 @@ import android.view.KeyEvent;
|
|||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.MenuItem.OnMenuItemClickListener;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
|
@ -78,6 +78,7 @@ import com.twitter.Extractor;
|
|||
|
||||
import org.mariotaku.dynamicgridview.DraggableArrayAdapter;
|
||||
import org.mariotaku.menucomponent.widget.MenuBar;
|
||||
import org.mariotaku.menucomponent.widget.MenuBar.MenuBarListener;
|
||||
import org.mariotaku.menucomponent.widget.PopupMenu;
|
||||
import org.mariotaku.twidere.R;
|
||||
import org.mariotaku.twidere.adapter.BaseArrayAdapter;
|
||||
|
@ -148,7 +149,7 @@ import static org.mariotaku.twidere.util.Utils.showErrorMessage;
|
|||
import static org.mariotaku.twidere.util.Utils.showMenuItemToast;
|
||||
|
||||
public class ComposeActivity extends BaseSupportDialogActivity implements TextWatcher, LocationListener,
|
||||
OnMenuItemClickListener, OnClickListener, OnEditorActionListener, OnItemClickListener, OnItemLongClickListener,
|
||||
MenuBarListener, OnClickListener, OnEditorActionListener, OnItemClickListener, OnItemLongClickListener,
|
||||
OnLongClickListener {
|
||||
|
||||
private static final String FAKE_IMAGE_LINK = "https://www.example.com/fake_image.jpg";
|
||||
|
@ -595,8 +596,8 @@ public class ComposeActivity extends BaseSupportDialogActivity implements TextWa
|
|||
return;
|
||||
}
|
||||
mBottomMenuBar.setIsBottomBar(true);
|
||||
mBottomMenuBar.setOnMenuItemClickListener(this);
|
||||
mActionMenuBar.setOnMenuItemClickListener(this);
|
||||
mBottomMenuBar.setMenuBarListener(this);
|
||||
mActionMenuBar.setMenuBarListener(this);
|
||||
mEditText.setOnEditorActionListener(mPreferences.getBoolean(KEY_QUICK_SEND, false) ? this : null);
|
||||
mEditText.addTextChangedListener(this);
|
||||
mAccountSelectorAdapter = new AccountSelectorAdapter(this);
|
||||
|
@ -1142,7 +1143,7 @@ public class ComposeActivity extends BaseSupportDialogActivity implements TextWa
|
|||
private void updateTextCount() {
|
||||
final StatusTextCountView textCountView = mBottomSendButton ? mBottomSendTextCountView : mSendTextCountView;
|
||||
if (textCountView != null && mEditText != null) {
|
||||
final String textOrig = mEditText != null ? parseString(mEditText.getText()) : null;
|
||||
final String textOrig = parseString(mEditText.getText());
|
||||
final String text = hasMedia() && textOrig != null ? mImageUploaderUsed ? getImageUploadStatus(this,
|
||||
new String[]{FAKE_IMAGE_LINK}, textOrig) : textOrig + " " + FAKE_IMAGE_LINK : textOrig;
|
||||
final int validatedCount = text != null ? mValidator.getTweetLength(text) : 0;
|
||||
|
@ -1150,6 +1151,11 @@ public class ComposeActivity extends BaseSupportDialogActivity implements TextWa
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPreShowMenu(Menu menu) {
|
||||
|
||||
}
|
||||
|
||||
public static class RetweetProtectedStatusWarnFragment extends BaseSupportDialogFragment implements
|
||||
DialogInterface.OnClickListener {
|
||||
|
||||
|
@ -1167,6 +1173,7 @@ public class ComposeActivity extends BaseSupportDialogActivity implements TextWa
|
|||
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Dialog onCreateDialog(final Bundle savedInstanceState) {
|
||||
final Context wrapped = ThemeUtils.getDialogThemedContext(getActivity());
|
||||
|
@ -1204,6 +1211,7 @@ public class ComposeActivity extends BaseSupportDialogActivity implements TextWa
|
|||
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public Dialog onCreateDialog(final Bundle savedInstanceState) {
|
||||
final Context wrapped = ThemeUtils.getDialogThemedContext(getActivity());
|
||||
|
|
|
@ -35,6 +35,7 @@ import android.database.ContentObserver;
|
|||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.drawable.ColorDrawable;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
|
@ -228,9 +229,7 @@ public class HomeActivity extends BaseSupportActivity implements OnClickListener
|
|||
@Override
|
||||
public void onClick(final View v) {
|
||||
switch (v.getId()) {
|
||||
case R.id.actions:
|
||||
case R.id.actions_button:
|
||||
case R.id.actions_button_bottom: {
|
||||
case R.id.actions_button: {
|
||||
triggerActionsClick();
|
||||
break;
|
||||
}
|
||||
|
@ -248,7 +247,7 @@ public class HomeActivity extends BaseSupportActivity implements OnClickListener
|
|||
mSlidingMenu = (HomeSlidingMenu) findViewById(R.id.home_menu);
|
||||
mViewPager = (ExtendedViewPager) findViewById(R.id.main_pager);
|
||||
mEmptyTabHint = findViewById(R.id.empty_tab_hint);
|
||||
mActionsButton = findViewById(R.id.actions_button_bottom);
|
||||
mActionsButton = findViewById(R.id.actions_button);
|
||||
mTabsContainer = findViewById(R.id.tabs_container);
|
||||
mTabIndicator = (TabPagerIndicator) findViewById(R.id.main_tabs);
|
||||
mActionBarOverlay = findViewById(R.id.actionbar_overlay);
|
||||
|
@ -297,12 +296,7 @@ public class HomeActivity extends BaseSupportActivity implements OnClickListener
|
|||
@Override
|
||||
public boolean onLongClick(final View v) {
|
||||
switch (v.getId()) {
|
||||
case R.id.actions:
|
||||
case R.id.actions_button: {
|
||||
showMenuItemToast(v, v.getContentDescription());
|
||||
return true;
|
||||
}
|
||||
case R.id.actions_button_bottom: {
|
||||
showMenuItemToast(v, v.getContentDescription(), true);
|
||||
return true;
|
||||
}
|
||||
|
@ -574,7 +568,7 @@ public class HomeActivity extends BaseSupportActivity implements OnClickListener
|
|||
final int themeColor = getThemeColor(), contrastColor = Utils.getContrastYIQ(themeColor, 192);
|
||||
final int themeResId = getCurrentThemeResourceId();
|
||||
if (ThemeUtils.isColoredActionBar(themeResId)) {
|
||||
mTabIndicator.setBackgroundColor(themeColor);
|
||||
ViewAccessor.setBackground(mTabIndicator, new ColorDrawable(themeColor));
|
||||
mTabIndicator.setStripColor(contrastColor);
|
||||
mTabIndicator.setIconColor(contrastColor);
|
||||
} else {
|
||||
|
|
|
@ -120,6 +120,10 @@ public class LinkHandlerActivity extends BaseSupportActivity implements OnClickL
|
|||
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
|
||||
setUiOptions(getWindow(), data);
|
||||
super.onCreate(savedInstanceState);
|
||||
final ActionBar actionBar = getActionBar();
|
||||
if (actionBar != null) {
|
||||
actionBar.setDisplayHomeAsUpEnabled(true);
|
||||
}
|
||||
setContentView(R.layout.layout_link_handler);
|
||||
setProgressBarIndeterminateVisibility(false);
|
||||
if (data == null || !showFragment(data)) {
|
||||
|
@ -148,11 +152,6 @@ public class LinkHandlerActivity extends BaseSupportActivity implements OnClickL
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onTitleChanged(final CharSequence title, final int color) {
|
||||
super.onTitleChanged(title, color);
|
||||
}
|
||||
|
||||
private void setUiOptions(final Window window, final Uri data) {
|
||||
if (FlymeUtils.hasSmartBar()) {
|
||||
window.setUiOptions(ActivityInfo.UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW);
|
||||
|
|
|
@ -26,7 +26,6 @@ import android.content.ContentValues;
|
|||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Resources;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.graphics.Color;
|
||||
|
@ -35,7 +34,6 @@ import android.os.Bundle;
|
|||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.View.OnClickListener;
|
||||
|
@ -116,7 +114,7 @@ public class SignInActivity extends BaseSupportActivity implements TwitterConsta
|
|||
private SharedPreferences mPreferences;
|
||||
private ContentResolver mResolver;
|
||||
private AbstractSignInTask mTask;
|
||||
private boolean mSameOAuthSigningUrl;
|
||||
private boolean mSameOAuthSigningUrl, mNoVersionSuffix;
|
||||
|
||||
@Override
|
||||
public void afterTextChanged(final Editable s) {
|
||||
|
@ -136,6 +134,7 @@ public class SignInActivity extends BaseSupportActivity implements TwitterConsta
|
|||
mAPIUrlFormat = data.getStringExtra(Accounts.API_URL_FORMAT);
|
||||
mAuthType = data.getIntExtra(Accounts.AUTH_TYPE, Accounts.AUTH_TYPE_OAUTH);
|
||||
mSameOAuthSigningUrl = data.getBooleanExtra(Accounts.SAME_OAUTH_SIGNING_URL, false);
|
||||
mNoVersionSuffix = data.getBooleanExtra(Accounts.NO_VERSION_SUFFIX, false);
|
||||
mConsumerKey = data.getStringExtra(Accounts.CONSUMER_KEY);
|
||||
mConsumerSecret = data.getStringExtra(Accounts.CONSUMER_SECRET);
|
||||
final boolean isTwipOMode = mAuthType == Accounts.AUTH_TYPE_TWIP_O_MODE;
|
||||
|
@ -263,6 +262,7 @@ public class SignInActivity extends BaseSupportActivity implements TwitterConsta
|
|||
intent.putExtra(Accounts.API_URL_FORMAT, mAPIUrlFormat);
|
||||
intent.putExtra(Accounts.AUTH_TYPE, mAuthType);
|
||||
intent.putExtra(Accounts.SAME_OAUTH_SIGNING_URL, mSameOAuthSigningUrl);
|
||||
intent.putExtra(Accounts.NO_VERSION_SUFFIX, mNoVersionSuffix);
|
||||
intent.putExtra(Accounts.CONSUMER_KEY, mConsumerKey);
|
||||
intent.putExtra(Accounts.CONSUMER_SECRET, mConsumerSecret);
|
||||
startActivityForResult(intent, REQUEST_EDIT_API);
|
||||
|
@ -305,6 +305,7 @@ public class SignInActivity extends BaseSupportActivity implements TwitterConsta
|
|||
outState.putString(Accounts.API_URL_FORMAT, mAPIUrlFormat);
|
||||
outState.putInt(Accounts.AUTH_TYPE, mAuthType);
|
||||
outState.putBoolean(Accounts.SAME_OAUTH_SIGNING_URL, mSameOAuthSigningUrl);
|
||||
outState.putBoolean(Accounts.NO_VERSION_SUFFIX, mNoVersionSuffix);
|
||||
outState.putString(Accounts.CONSUMER_KEY, mConsumerKey);
|
||||
outState.putString(Accounts.CONSUMER_SECRET, mConsumerSecret);
|
||||
outState.putString(Accounts.SCREEN_NAME, mUsername);
|
||||
|
@ -368,7 +369,7 @@ public class SignInActivity extends BaseSupportActivity implements TwitterConsta
|
|||
setDefaultAPI();
|
||||
final Configuration conf = getConfiguration();
|
||||
mTask = new SignInTask(this, conf, mUsername, mPassword, mAuthType, mUserColor, mAPIUrlFormat,
|
||||
mSameOAuthSigningUrl);
|
||||
mSameOAuthSigningUrl, mNoVersionSuffix);
|
||||
mTask.execute();
|
||||
}
|
||||
|
||||
|
@ -384,7 +385,7 @@ public class SignInActivity extends BaseSupportActivity implements TwitterConsta
|
|||
final String secret = intent.getStringExtra(EXTRA_REQUEST_TOKEN_SECRET);
|
||||
final String verifier = intent.getStringExtra(EXTRA_OAUTH_VERIFIER);
|
||||
mTask = new BrowserSignInTask(this, conf, token, secret, verifier, mUserColor, mAPIUrlFormat,
|
||||
mSameOAuthSigningUrl);
|
||||
mSameOAuthSigningUrl, mNoVersionSuffix);
|
||||
mTask.execute();
|
||||
}
|
||||
|
||||
|
@ -397,9 +398,10 @@ public class SignInActivity extends BaseSupportActivity implements TwitterConsta
|
|||
cb.setHttpClientFactory(new TwidereHttpClientFactory(mApplication));
|
||||
setUserAgent(this, cb);
|
||||
if (!isEmpty(mAPIUrlFormat)) {
|
||||
cb.setRestBaseURL(Utils.getApiUrl(mAPIUrlFormat, "api", "/1.1/"));
|
||||
final String versionSuffix = mNoVersionSuffix ? null : "/1.1/";
|
||||
cb.setRestBaseURL(Utils.getApiUrl(mAPIUrlFormat, "api", versionSuffix));
|
||||
cb.setOAuthBaseURL(Utils.getApiUrl(mAPIUrlFormat, "api", "/oauth/"));
|
||||
cb.setUploadBaseURL(Utils.getApiUrl(mAPIUrlFormat, "upload", "/1.1/"));
|
||||
cb.setUploadBaseURL(Utils.getApiUrl(mAPIUrlFormat, "upload", versionSuffix));
|
||||
if (!mSameOAuthSigningUrl) {
|
||||
cb.setSigningRestBaseURL(DEFAULT_SIGNING_REST_BASE_URL);
|
||||
cb.setSigningOAuthBaseURL(DEFAULT_SIGNING_OAUTH_BASE_URL);
|
||||
|
@ -437,6 +439,7 @@ public class SignInActivity extends BaseSupportActivity implements TwitterConsta
|
|||
final String apiUrlFormat = getNonEmptyString(mPreferences, KEY_API_URL_FORMAT, null);
|
||||
final int authType = mPreferences.getInt(KEY_AUTH_TYPE, Accounts.AUTH_TYPE_OAUTH);
|
||||
final boolean sameOAuthSigningUrl = mPreferences.getBoolean(KEY_SAME_OAUTH_SIGNING_URL, false);
|
||||
final boolean noVersionSuffix = mPreferences.getBoolean(KEY_NO_VERSION_SUFFIX, false);
|
||||
final String consumerKey = getNonEmptyString(mPreferences, KEY_CONSUMER_KEY, TWITTER_CONSUMER_KEY_2);
|
||||
final String consumerSecret = getNonEmptyString(mPreferences, KEY_CONSUMER_SECRET, TWITTER_CONSUMER_SECRET_2);
|
||||
if (isEmpty(mAPIUrlFormat) || defaultApiChanged) {
|
||||
|
@ -448,6 +451,9 @@ public class SignInActivity extends BaseSupportActivity implements TwitterConsta
|
|||
if (defaultApiChanged) {
|
||||
mSameOAuthSigningUrl = sameOAuthSigningUrl;
|
||||
}
|
||||
if (defaultApiChanged) {
|
||||
mNoVersionSuffix = noVersionSuffix;
|
||||
}
|
||||
if (isEmpty(mConsumerKey) || defaultApiChanged) {
|
||||
mConsumerKey = consumerKey;
|
||||
}
|
||||
|
@ -472,25 +478,27 @@ public class SignInActivity extends BaseSupportActivity implements TwitterConsta
|
|||
}
|
||||
}
|
||||
|
||||
void onSignInResult(final SignInActivity.SigninResponse result) {
|
||||
void onSignInResult(final SignInResponse result) {
|
||||
if (result != null) {
|
||||
if (result.succeed) {
|
||||
final ContentValues values;
|
||||
switch (result.auth_type) {
|
||||
case Accounts.AUTH_TYPE_BASIC: {
|
||||
values = makeAccountContentValuesBasic(result.conf, result.basic_username,
|
||||
result.basic_password, result.user, result.color, result.api_url_format);
|
||||
result.basic_password, result.user, result.color,
|
||||
result.api_url_format, result.no_version_suffix);
|
||||
break;
|
||||
}
|
||||
case Accounts.AUTH_TYPE_TWIP_O_MODE: {
|
||||
values = makeAccountContentValuesTWIP(result.conf, result.user, result.color,
|
||||
result.api_url_format);
|
||||
result.api_url_format, result.no_version_suffix);
|
||||
break;
|
||||
}
|
||||
case Accounts.AUTH_TYPE_OAUTH:
|
||||
case Accounts.AUTH_TYPE_XAUTH: {
|
||||
values = makeAccountContentValuesOAuth(result.conf, result.access_token, result.user,
|
||||
result.auth_type, result.color, result.api_url_format, result.same_oauth_signing_url);
|
||||
values = makeAccountContentValuesOAuth(result.conf, result.access_token,
|
||||
result.user, result.auth_type, result.color, result.api_url_format,
|
||||
result.same_oauth_signing_url, result.no_version_suffix);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
|
@ -540,7 +548,7 @@ public class SignInActivity extends BaseSupportActivity implements TwitterConsta
|
|||
mSetColorButton.setEnabled(false);
|
||||
}
|
||||
|
||||
public static abstract class AbstractSignInTask extends AsyncTask<Void, Void, SigninResponse> {
|
||||
public static abstract class AbstractSignInTask extends AsyncTask<Void, Void, SignInResponse> {
|
||||
|
||||
protected final Configuration conf;
|
||||
protected final SignInActivity callback;
|
||||
|
@ -551,7 +559,7 @@ public class SignInActivity extends BaseSupportActivity implements TwitterConsta
|
|||
}
|
||||
|
||||
@Override
|
||||
protected void onPostExecute(final SigninResponse result) {
|
||||
protected void onPostExecute(final SignInResponse result) {
|
||||
if (callback != null) {
|
||||
callback.onSignInResult(result);
|
||||
}
|
||||
|
@ -597,11 +605,11 @@ public class SignInActivity extends BaseSupportActivity implements TwitterConsta
|
|||
|
||||
private final Context context;
|
||||
private final String api_url_format;
|
||||
private final boolean same_oauth_signing_url;
|
||||
private final boolean same_oauth_signing_url, no_version_suffix;
|
||||
|
||||
public BrowserSignInTask(final SignInActivity context, final Configuration conf, final String request_token,
|
||||
final String request_token_secret, final String oauth_verifier, final Integer user_color,
|
||||
final String api_url_format, final boolean same_oauth_signing_url) {
|
||||
final String api_url_format, final boolean same_oauth_signing_url, final boolean no_version_suffix) {
|
||||
super(context, conf);
|
||||
this.context = context;
|
||||
this.conf = conf;
|
||||
|
@ -611,23 +619,24 @@ public class SignInActivity extends BaseSupportActivity implements TwitterConsta
|
|||
this.user_color = user_color;
|
||||
this.api_url_format = api_url_format;
|
||||
this.same_oauth_signing_url = same_oauth_signing_url;
|
||||
this.no_version_suffix = no_version_suffix;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SigninResponse doInBackground(final Void... params) {
|
||||
protected SignInResponse doInBackground(final Void... params) {
|
||||
try {
|
||||
final Twitter twitter = new TwitterFactory(conf).getInstance();
|
||||
final AccessToken access_token = twitter.getOAuthAccessToken(new RequestToken(conf, request_token,
|
||||
request_token_secret), oauth_verifier);
|
||||
final long userId = access_token.getUserId();
|
||||
if (userId <= 0) return new SigninResponse(false, false, null);
|
||||
if (userId <= 0) return new SignInResponse(false, false, null);
|
||||
final User user = twitter.verifyCredentials();
|
||||
if (isUserLoggedIn(context, userId)) return new SigninResponse(true, false, null);
|
||||
if (isUserLoggedIn(context, userId)) return new SignInResponse(true, false, null);
|
||||
final int color = user_color != null ? user_color : analyseUserProfileColor(user);
|
||||
return new SigninResponse(conf, access_token, user, Accounts.AUTH_TYPE_OAUTH, color, api_url_format,
|
||||
same_oauth_signing_url);
|
||||
return new SignInResponse(conf, access_token, user, Accounts.AUTH_TYPE_OAUTH, color,
|
||||
api_url_format, same_oauth_signing_url, no_version_suffix);
|
||||
} catch (final TwitterException e) {
|
||||
return new SigninResponse(false, false, e);
|
||||
return new SignInResponse(false, false, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -655,11 +664,11 @@ public class SignInActivity extends BaseSupportActivity implements TwitterConsta
|
|||
|
||||
private final Context context;
|
||||
private final String api_url_format;
|
||||
private final boolean same_oauth_signing_url;
|
||||
private final boolean same_oauth_signing_url, no_version_suffix;
|
||||
|
||||
public SignInTask(final SignInActivity context, final Configuration conf, final String username,
|
||||
final String password, final int auth_type, final Integer user_color, final String api_url_format,
|
||||
final boolean same_oauth_signing_url) {
|
||||
final boolean same_oauth_signing_url, final boolean no_version_suffix) {
|
||||
super(context, conf);
|
||||
this.context = context;
|
||||
this.conf = conf;
|
||||
|
@ -669,10 +678,11 @@ public class SignInActivity extends BaseSupportActivity implements TwitterConsta
|
|||
this.user_color = user_color;
|
||||
this.api_url_format = api_url_format;
|
||||
this.same_oauth_signing_url = same_oauth_signing_url;
|
||||
this.no_version_suffix = no_version_suffix;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SigninResponse doInBackground(final Void... params) {
|
||||
protected SignInResponse doInBackground(final Void... params) {
|
||||
try {
|
||||
switch (auth_type) {
|
||||
case Accounts.AUTH_TYPE_OAUTH:
|
||||
|
@ -687,67 +697,73 @@ public class SignInActivity extends BaseSupportActivity implements TwitterConsta
|
|||
return authOAuth();
|
||||
} catch (final TwitterException e) {
|
||||
e.printStackTrace();
|
||||
return new SigninResponse(false, false, e);
|
||||
return new SignInResponse(false, false, e);
|
||||
} catch (final AuthenticationException e) {
|
||||
e.printStackTrace();
|
||||
return new SigninResponse(false, false, e);
|
||||
return new SignInResponse(false, false, e);
|
||||
}
|
||||
}
|
||||
|
||||
private SigninResponse authBasic() throws TwitterException {
|
||||
private SignInResponse authBasic() throws TwitterException {
|
||||
final Twitter twitter = new TwitterFactory(conf).getInstance(new BasicAuthorization(username, password));
|
||||
final User user = twitter.verifyCredentials();
|
||||
final long user_id = user.getId();
|
||||
if (user_id <= 0) return new SigninResponse(false, false, null);
|
||||
if (isUserLoggedIn(context, user_id)) return new SigninResponse(true, false, null);
|
||||
if (user_id <= 0) return new SignInResponse(false, false, null);
|
||||
if (isUserLoggedIn(context, user_id)) return new SignInResponse(true, false, null);
|
||||
final int color = user_color != null ? user_color : analyseUserProfileColor(user);
|
||||
return new SigninResponse(conf, username, password, user, color, api_url_format);
|
||||
return new SignInResponse(conf, username, password, user, color, api_url_format,
|
||||
no_version_suffix);
|
||||
}
|
||||
|
||||
private SigninResponse authOAuth() throws AuthenticationException, TwitterException {
|
||||
private SignInResponse authOAuth() throws AuthenticationException, TwitterException {
|
||||
final Twitter twitter = new TwitterFactory(conf).getInstance();
|
||||
final OAuthPasswordAuthenticator authenticator = new OAuthPasswordAuthenticator(twitter);
|
||||
final AccessToken access_token = authenticator.getOAuthAccessToken(username, password);
|
||||
final long user_id = access_token.getUserId();
|
||||
if (user_id <= 0) return new SigninResponse(false, false, null);
|
||||
if (user_id <= 0) return new SignInResponse(false, false, null);
|
||||
final User user = twitter.verifyCredentials();
|
||||
if (isUserLoggedIn(context, user_id)) return new SigninResponse(true, false, null);
|
||||
if (isUserLoggedIn(context, user_id)) return new SignInResponse(true, false, null);
|
||||
final int color = user_color != null ? user_color : analyseUserProfileColor(user);
|
||||
return new SigninResponse(conf, access_token, user, Accounts.AUTH_TYPE_OAUTH, color, api_url_format,
|
||||
same_oauth_signing_url);
|
||||
return new SignInResponse(conf, access_token, user, Accounts.AUTH_TYPE_OAUTH, color,
|
||||
api_url_format, same_oauth_signing_url, no_version_suffix);
|
||||
}
|
||||
|
||||
private SigninResponse authTwipOMode() throws TwitterException {
|
||||
private SignInResponse authTwipOMode() throws TwitterException {
|
||||
final Twitter twitter = new TwitterFactory(conf).getInstance(new TwipOModeAuthorization());
|
||||
final User user = twitter.verifyCredentials();
|
||||
final long user_id = user.getId();
|
||||
if (user_id <= 0) return new SigninResponse(false, false, null);
|
||||
if (isUserLoggedIn(context, user_id)) return new SigninResponse(true, false, null);
|
||||
if (user_id <= 0) return new SignInResponse(false, false, null);
|
||||
if (isUserLoggedIn(context, user_id)) return new SignInResponse(true, false, null);
|
||||
final int color = user_color != null ? user_color : analyseUserProfileColor(user);
|
||||
return new SigninResponse(conf, user, color, api_url_format);
|
||||
return new SignInResponse(conf, user, color, api_url_format, no_version_suffix);
|
||||
}
|
||||
|
||||
private SigninResponse authxAuth() throws TwitterException {
|
||||
private SignInResponse authxAuth() throws TwitterException {
|
||||
final Twitter twitter = new TwitterFactory(conf).getInstance();
|
||||
final AccessToken access_token = twitter.getOAuthAccessToken(username, password);
|
||||
final User user = twitter.verifyCredentials();
|
||||
final long user_id = user.getId();
|
||||
if (user_id <= 0) return new SigninResponse(false, false, null);
|
||||
if (isUserLoggedIn(context, user_id)) return new SigninResponse(true, false, null);
|
||||
if (user_id <= 0) return new SignInResponse(false, false, null);
|
||||
if (isUserLoggedIn(context, user_id)) return new SignInResponse(true, false, null);
|
||||
final int color = user_color != null ? user_color : analyseUserProfileColor(user);
|
||||
return new SigninResponse(conf, access_token, user, Accounts.AUTH_TYPE_XAUTH, color, api_url_format,
|
||||
same_oauth_signing_url);
|
||||
return new SignInResponse(conf, access_token, user, Accounts.AUTH_TYPE_XAUTH, color,
|
||||
api_url_format, same_oauth_signing_url, no_version_suffix);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getThemeResourceId() {
|
||||
return ThemeUtils.getSettingsThemeResource(this);
|
||||
}
|
||||
|
||||
static interface SigninCallback {
|
||||
void onSigninResult(SigninResponse response);
|
||||
void onSigninResult(SignInResponse response);
|
||||
|
||||
void onSigninStart();
|
||||
}
|
||||
|
||||
static class SigninResponse {
|
||||
static class SignInResponse {
|
||||
|
||||
public final boolean already_logged_in, succeed;
|
||||
public final Exception exception;
|
||||
|
@ -757,16 +773,16 @@ public class SignInActivity extends BaseSupportActivity implements TwitterConsta
|
|||
public final User user;
|
||||
public final int auth_type, color;
|
||||
public final String api_url_format;
|
||||
public final boolean same_oauth_signing_url;
|
||||
public final boolean same_oauth_signing_url, no_version_suffix;
|
||||
|
||||
public SigninResponse(final boolean already_logged_in, final boolean succeed, final Exception exception) {
|
||||
this(already_logged_in, succeed, exception, null, null, null, null, null, 0, 0, null, false);
|
||||
public SignInResponse(final boolean already_logged_in, final boolean succeed, final Exception exception) {
|
||||
this(already_logged_in, succeed, exception, null, null, null, null, null, 0, 0, null, false, false);
|
||||
}
|
||||
|
||||
public SigninResponse(final boolean already_logged_in, final boolean succeed, final Exception exception,
|
||||
public SignInResponse(final boolean already_logged_in, final boolean succeed, final Exception exception,
|
||||
final Configuration conf, final String basic_username, final String basic_password,
|
||||
final AccessToken access_token, final User user, final int auth_type, final int color,
|
||||
final String api_url_format, final boolean same_oauth_signing_url) {
|
||||
final String api_url_format, final boolean same_oauth_signing_url, final boolean no_version_suffix) {
|
||||
this.already_logged_in = already_logged_in;
|
||||
this.succeed = succeed;
|
||||
this.exception = exception;
|
||||
|
@ -779,23 +795,27 @@ public class SignInActivity extends BaseSupportActivity implements TwitterConsta
|
|||
this.color = color;
|
||||
this.api_url_format = api_url_format;
|
||||
this.same_oauth_signing_url = same_oauth_signing_url;
|
||||
this.no_version_suffix = no_version_suffix;
|
||||
}
|
||||
|
||||
public SigninResponse(final Configuration conf, final AccessToken access_token, final User user,
|
||||
final int auth_type, final int color, final String api_url_format, final boolean same_oauth_signing_url) {
|
||||
public SignInResponse(final Configuration conf, final AccessToken access_token, final User user,
|
||||
final int auth_type, final int color, final String api_url_format,
|
||||
final boolean same_oauth_signing_url, final boolean no_version_suffix) {
|
||||
this(false, true, null, conf, null, null, access_token, user, auth_type, color, api_url_format,
|
||||
same_oauth_signing_url);
|
||||
same_oauth_signing_url, no_version_suffix);
|
||||
}
|
||||
|
||||
public SigninResponse(final Configuration conf, final String basic_username, final String basic_password,
|
||||
final User user, final int color, final String api_url_format) {
|
||||
public SignInResponse(final Configuration conf, final String basic_username, final String basic_password,
|
||||
final User user, final int color, final String api_url_format,
|
||||
final boolean no_version_suffix) {
|
||||
this(false, true, null, conf, basic_username, basic_password, null, user, Accounts.AUTH_TYPE_BASIC, color,
|
||||
api_url_format, false);
|
||||
api_url_format, false, no_version_suffix);
|
||||
}
|
||||
|
||||
public SigninResponse(final Configuration conf, final User user, final int color, final String api_url_format) {
|
||||
public SignInResponse(final Configuration conf, final User user, final int color,
|
||||
final String api_url_format, final boolean no_version_suffix) {
|
||||
this(false, true, null, conf, null, null, null, user, Accounts.AUTH_TYPE_TWIP_O_MODE, color,
|
||||
api_url_format, false);
|
||||
api_url_format, false, no_version_suffix);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -248,6 +248,8 @@ public interface SharedPreferenceConstants {
|
|||
public static final String KEY_API_URL_FORMAT = "api_url_format";
|
||||
@Preference(type = BOOLEAN, hasDefault = true, defaultBoolean = false)
|
||||
public static final String KEY_SAME_OAUTH_SIGNING_URL = "same_oauth_signing_url";
|
||||
@Preference(type = BOOLEAN, hasDefault = true, defaultBoolean = false)
|
||||
public static final String KEY_NO_VERSION_SUFFIX = "no_version_suffix";
|
||||
@Preference(type = INT, hasDefault = true, defaultInt = Accounts.AUTH_TYPE_OAUTH)
|
||||
public static final String KEY_AUTH_TYPE = "auth_type";
|
||||
@Preference(type = STRING, hasDefault = true, defaultString = TwidereConstants.TWITTER_CONSUMER_KEY_2)
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
|
||||
package org.mariotaku.twidere.fragment.support;
|
||||
|
||||
import static org.mariotaku.twidere.util.ContentValuesCreator.makeFilterdUserContentValues;
|
||||
import static org.mariotaku.twidere.util.ContentValuesCreator.makeFilteredUserContentValues;
|
||||
import static org.mariotaku.twidere.util.Utils.getDisplayName;
|
||||
import static org.mariotaku.twidere.util.content.ContentResolverUtils.bulkDelete;
|
||||
import static org.mariotaku.twidere.util.content.ContentResolverUtils.bulkInsert;
|
||||
|
@ -41,6 +41,7 @@ import org.mariotaku.twidere.R;
|
|||
import org.mariotaku.twidere.model.ParcelableStatus;
|
||||
import org.mariotaku.twidere.model.ParcelableUserMention;
|
||||
import org.mariotaku.twidere.provider.TweetStore.Filters;
|
||||
import org.mariotaku.twidere.util.ContentValuesCreator;
|
||||
import org.mariotaku.twidere.util.HtmlEscapeHelper;
|
||||
import org.mariotaku.twidere.util.ParseUtils;
|
||||
import org.mariotaku.twidere.util.ThemeUtils;
|
||||
|
@ -71,11 +72,11 @@ public class AddStatusFilterDialogFragment extends BaseSupportDialogFragment imp
|
|||
if (value instanceof ParcelableUserMention) {
|
||||
final ParcelableUserMention mention = (ParcelableUserMention) value;
|
||||
user_ids.add(mention.id);
|
||||
user_values.add(makeFilterdUserContentValues(mention));
|
||||
user_values.add(makeFilteredUserContentValues(mention));
|
||||
} else if (value instanceof ParcelableStatus) {
|
||||
final ParcelableStatus status = (ParcelableStatus) value;
|
||||
user_ids.add(status.user_id);
|
||||
user_values.add(makeFilterdUserContentValues(status));
|
||||
user_values.add(ContentValuesCreator.makeFilteredUserContentValues(status));
|
||||
} else if (info.type == FilterItemInfo.FILTER_TYPE_KEYWORD) {
|
||||
if (value != null) {
|
||||
final String keyword = ParseUtils.parseString(value);
|
||||
|
|
|
@ -65,7 +65,6 @@ import android.widget.ListView;
|
|||
import android.widget.ProgressBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import org.mariotaku.menucomponent.widget.MenuBar;
|
||||
import org.mariotaku.refreshnow.widget.RefreshMode;
|
||||
import org.mariotaku.twidere.R;
|
||||
import org.mariotaku.twidere.activity.support.AccountSelectorActivity;
|
||||
|
@ -98,6 +97,7 @@ import org.mariotaku.twidere.util.Utils;
|
|||
import org.mariotaku.twidere.view.ColorLabelRelativeLayout;
|
||||
import org.mariotaku.twidere.view.ExtendedFrameLayout;
|
||||
import org.mariotaku.twidere.view.StatusTextView;
|
||||
import org.mariotaku.twidere.view.TwidereMenuBar;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
|
@ -156,7 +156,7 @@ public class StatusFragment extends ParcelableStatusesListFragment implements On
|
|||
private boolean mFollowInfoDisplayed, mLocationInfoDisplayed;
|
||||
private boolean mStatusLoaderInitialized, mLocationLoaderInitialized;
|
||||
private boolean mFollowInfoLoaderInitialized;
|
||||
;
|
||||
|
||||
private boolean mShouldScroll;
|
||||
private SharedPreferences mPreferences;
|
||||
private AsyncTwitterWrapper mTwitterWrapper;
|
||||
|
@ -171,7 +171,7 @@ public class StatusFragment extends ParcelableStatusesListFragment implements On
|
|||
private Button mRetryButton;
|
||||
private View mMainContent, mFollowIndicator, mImagePreviewContainer, mLocationContainer, mLocationBackgroundView;
|
||||
private ColorLabelRelativeLayout mProfileView;
|
||||
private MenuBar mMenuBar;
|
||||
private TwidereMenuBar mMenuBar;
|
||||
private ProgressBar mDetailsLoadProgress, mFollowInfoProgress;
|
||||
private LinearLayout mImagePreviewGrid;
|
||||
private View mHeaderView;
|
||||
|
@ -577,7 +577,7 @@ public class StatusFragment extends ParcelableStatusesListFragment implements On
|
|||
final View view = inflater.inflate(R.layout.fragment_details_page, null, false);
|
||||
mMainContent = view.findViewById(R.id.content);
|
||||
mDetailsLoadProgress = (ProgressBar) view.findViewById(R.id.details_load_progress);
|
||||
mMenuBar = (MenuBar) view.findViewById(R.id.menu_bar);
|
||||
mMenuBar = (TwidereMenuBar) view.findViewById(R.id.menu_bar);
|
||||
mDetailsContainer = (ExtendedFrameLayout) view.findViewById(R.id.details_container);
|
||||
mDetailsContainer.addView(super.onCreateView(inflater, container, savedInstanceState));
|
||||
mHeaderView = inflater.inflate(R.layout.header_status, null, false);
|
||||
|
|
|
@ -19,18 +19,6 @@
|
|||
|
||||
package org.mariotaku.twidere.fragment.support;
|
||||
|
||||
import static android.text.TextUtils.isEmpty;
|
||||
import static org.mariotaku.twidere.util.Utils.addIntentToMenu;
|
||||
import static org.mariotaku.twidere.util.Utils.getAccountColor;
|
||||
import static org.mariotaku.twidere.util.Utils.getDisplayName;
|
||||
import static org.mariotaku.twidere.util.Utils.getLocalizedNumber;
|
||||
import static org.mariotaku.twidere.util.Utils.getTwitterInstance;
|
||||
import static org.mariotaku.twidere.util.Utils.openUserListMembers;
|
||||
import static org.mariotaku.twidere.util.Utils.openUserListSubscribers;
|
||||
import static org.mariotaku.twidere.util.Utils.openUserListTimeline;
|
||||
import static org.mariotaku.twidere.util.Utils.openUserProfile;
|
||||
import static org.mariotaku.twidere.util.Utils.setMenuItemAvailability;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.Dialog;
|
||||
|
@ -67,6 +55,7 @@ import android.widget.ListView;
|
|||
import android.widget.TextView;
|
||||
|
||||
import org.mariotaku.menucomponent.widget.MenuBar;
|
||||
import org.mariotaku.menucomponent.widget.MenuBar.MenuBarListener;
|
||||
import org.mariotaku.twidere.R;
|
||||
import org.mariotaku.twidere.activity.support.UserListSelectorActivity;
|
||||
import org.mariotaku.twidere.adapter.ListActionAdapter;
|
||||
|
@ -82,12 +71,25 @@ import org.mariotaku.twidere.util.ParseUtils;
|
|||
import org.mariotaku.twidere.util.ThemeUtils;
|
||||
import org.mariotaku.twidere.util.TwidereLinkify;
|
||||
import org.mariotaku.twidere.view.ColorLabelRelativeLayout;
|
||||
import org.mariotaku.twidere.view.TwidereMenuBar;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
import twitter4j.Twitter;
|
||||
import twitter4j.TwitterException;
|
||||
import twitter4j.UserList;
|
||||
|
||||
import java.util.Locale;
|
||||
import static android.text.TextUtils.isEmpty;
|
||||
import static org.mariotaku.twidere.util.Utils.addIntentToMenu;
|
||||
import static org.mariotaku.twidere.util.Utils.getAccountColor;
|
||||
import static org.mariotaku.twidere.util.Utils.getDisplayName;
|
||||
import static org.mariotaku.twidere.util.Utils.getLocalizedNumber;
|
||||
import static org.mariotaku.twidere.util.Utils.getTwitterInstance;
|
||||
import static org.mariotaku.twidere.util.Utils.openUserListMembers;
|
||||
import static org.mariotaku.twidere.util.Utils.openUserListSubscribers;
|
||||
import static org.mariotaku.twidere.util.Utils.openUserListTimeline;
|
||||
import static org.mariotaku.twidere.util.Utils.openUserProfile;
|
||||
import static org.mariotaku.twidere.util.Utils.setMenuItemAvailability;
|
||||
|
||||
public class UserListDetailsFragment extends BaseSupportListFragment implements OnClickListener, OnItemClickListener,
|
||||
OnItemLongClickListener, OnMenuItemClickListener, LoaderCallbacks<SingleResponse<ParcelableUserList>>,
|
||||
|
@ -104,7 +106,7 @@ public class UserListDetailsFragment extends BaseSupportListFragment implements
|
|||
private Button mRetryButton;
|
||||
private ListView mListView;
|
||||
private View mHeaderView;
|
||||
private MenuBar mMenuBar;
|
||||
private TwidereMenuBar mMenuBar;
|
||||
|
||||
private ListActionAdapter mAdapter;
|
||||
|
||||
|
@ -120,7 +122,8 @@ public class UserListDetailsFragment extends BaseSupportListFragment implements
|
|||
if (getActivity() == null || !isAdded() || isDetached()) return;
|
||||
final String action = intent.getAction();
|
||||
final ParcelableUserList user_list = intent.getParcelableExtra(EXTRA_USER_LIST);
|
||||
if (user_list == null || mUserList == null || !intent.getBooleanExtra(EXTRA_SUCCEED, false)) return;
|
||||
if (user_list == null || mUserList == null || !intent.getBooleanExtra(EXTRA_SUCCEED, false))
|
||||
return;
|
||||
if (BROADCAST_USER_LIST_DETAILS_UPDATED.equals(action)) {
|
||||
if (user_list.id == mUserList.id) {
|
||||
getUserListInfo(true);
|
||||
|
@ -263,7 +266,7 @@ public class UserListDetailsFragment extends BaseSupportListFragment implements
|
|||
mErrorRetryContainer = containerView.findViewById(R.id.error_retry_container);
|
||||
mRetryButton = (Button) containerView.findViewById(R.id.retry);
|
||||
mErrorMessageView = (TextView) containerView.findViewById(R.id.error_message);
|
||||
mMenuBar = (MenuBar) containerView.findViewById(R.id.menu_bar);
|
||||
mMenuBar = (TwidereMenuBar) containerView.findViewById(R.id.menu_bar);
|
||||
final View cardView = mHeaderView.findViewById(R.id.card);
|
||||
ThemeUtils.applyThemeAlphaToDrawable(cardView.getContext(), cardView.getBackground());
|
||||
return containerView;
|
||||
|
|
|
@ -83,6 +83,7 @@ import org.mariotaku.twidere.provider.TweetStore.Accounts;
|
|||
import org.mariotaku.twidere.provider.TweetStore.CachedUsers;
|
||||
import org.mariotaku.twidere.provider.TweetStore.Filters;
|
||||
import org.mariotaku.twidere.util.AsyncTwitterWrapper;
|
||||
import org.mariotaku.twidere.util.ContentValuesCreator;
|
||||
import org.mariotaku.twidere.util.FlymeUtils;
|
||||
import org.mariotaku.twidere.util.ImageLoaderWrapper;
|
||||
import org.mariotaku.twidere.util.ParseUtils;
|
||||
|
@ -92,6 +93,7 @@ import org.mariotaku.twidere.util.TwidereLinkify.OnLinkClickListener;
|
|||
import org.mariotaku.twidere.view.ColorLabelLinearLayout;
|
||||
import org.mariotaku.twidere.view.ExtendedFrameLayout;
|
||||
import org.mariotaku.twidere.view.ProfileImageView;
|
||||
import org.mariotaku.twidere.view.TwidereMenuBar;
|
||||
import org.mariotaku.twidere.view.iface.IExtendedView.OnSizeChangedListener;
|
||||
|
||||
import java.util.Locale;
|
||||
|
@ -101,7 +103,6 @@ import twitter4j.Twitter;
|
|||
import twitter4j.TwitterException;
|
||||
|
||||
import static android.text.TextUtils.isEmpty;
|
||||
import static org.mariotaku.twidere.util.ContentValuesCreator.makeFilterdUserContentValues;
|
||||
import static org.mariotaku.twidere.util.ParseUtils.parseLong;
|
||||
import static org.mariotaku.twidere.util.UserColorNicknameUtils.clearUserColor;
|
||||
import static org.mariotaku.twidere.util.UserColorNicknameUtils.clearUserNickname;
|
||||
|
@ -161,7 +162,7 @@ public class UserProfileFragment extends BaseSupportListFragment implements OnCl
|
|||
private View mMainContent;
|
||||
private View mProfileBannerSpace;
|
||||
private ProgressBar mDetailsLoadProgress;
|
||||
private MenuBar mMenuBar;
|
||||
private TwidereMenuBar mMenuBar;
|
||||
|
||||
private ListActionAdapter mAdapter;
|
||||
|
||||
|
@ -720,7 +721,7 @@ public class UserProfileFragment extends BaseSupportListFragment implements OnCl
|
|||
super.onViewCreated(view, savedInstanceState);
|
||||
mMainContent = view.findViewById(R.id.content);
|
||||
mDetailsLoadProgress = (ProgressBar) view.findViewById(R.id.details_load_progress);
|
||||
mMenuBar = (MenuBar) view.findViewById(R.id.menu_bar);
|
||||
mMenuBar = (TwidereMenuBar) view.findViewById(R.id.menu_bar);
|
||||
mErrorRetryContainer = view.findViewById(R.id.error_retry_container);
|
||||
mRetryButton = (Button) view.findViewById(R.id.retry);
|
||||
mErrorMessageView = (TextView) view.findViewById(R.id.error_message);
|
||||
|
@ -792,7 +793,7 @@ public class UserProfileFragment extends BaseSupportListFragment implements OnCl
|
|||
case MENU_ADD_TO_FILTER: {
|
||||
final ContentResolver resolver = getContentResolver();
|
||||
resolver.delete(Filters.Users.CONTENT_URI, Where.equals(Filters.Users.USER_ID, user.id).getSQL(), null);
|
||||
resolver.insert(Filters.Users.CONTENT_URI, makeFilterdUserContentValues(user));
|
||||
resolver.insert(Filters.Users.CONTENT_URI, ContentValuesCreator.makeFilteredUserContentValues(user));
|
||||
showInfoMessage(getActivity(), R.string.message_user_muted, false);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -19,9 +19,6 @@
|
|||
|
||||
package org.mariotaku.twidere.model;
|
||||
|
||||
import static org.mariotaku.twidere.util.Utils.isOfficialConsumerKeySecret;
|
||||
import static org.mariotaku.twidere.util.Utils.shouldForceUsingPrivateAPIs;
|
||||
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.graphics.Color;
|
||||
|
@ -38,6 +35,9 @@ import java.util.ArrayList;
|
|||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import static org.mariotaku.twidere.util.Utils.isOfficialConsumerKeySecret;
|
||||
import static org.mariotaku.twidere.util.Utils.shouldForceUsingPrivateAPIs;
|
||||
|
||||
public class Account implements Parcelable {
|
||||
|
||||
public static final Parcelable.Creator<Account> CREATOR = new Parcelable.Creator<Account>() {
|
||||
|
@ -229,7 +229,7 @@ public class Account implements Parcelable {
|
|||
public final String basic_auth_username, basic_auth_password;
|
||||
public final String oauth_token, oauth_token_secret;
|
||||
public final String api_url_format;
|
||||
public final boolean same_oauth_signing_url;
|
||||
public final boolean same_oauth_signing_url, no_version_suffix;
|
||||
|
||||
public AccountWithCredentials(final Cursor cursor, final Indices indices) {
|
||||
super(cursor, indices);
|
||||
|
@ -242,6 +242,7 @@ public class Account implements Parcelable {
|
|||
oauth_token_secret = cursor.getString(indices.oauth_token_secret);
|
||||
api_url_format = cursor.getString(indices.api_url_format);
|
||||
same_oauth_signing_url = cursor.getInt(indices.same_oauth_signing_url) == 1;
|
||||
no_version_suffix = cursor.getInt(indices.no_version_suffix) == 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -265,7 +266,7 @@ public class Account implements Parcelable {
|
|||
|
||||
public final int screen_name, name, account_id, profile_image_url, profile_banner_url, color, is_activated,
|
||||
auth_type, consumer_key, consumer_secret, basic_auth_username, basic_auth_password, oauth_token,
|
||||
oauth_token_secret, api_url_format, same_oauth_signing_url;
|
||||
oauth_token_secret, api_url_format, same_oauth_signing_url, no_version_suffix;
|
||||
|
||||
public Indices(final Cursor cursor) {
|
||||
screen_name = cursor.getColumnIndex(Accounts.SCREEN_NAME);
|
||||
|
@ -284,6 +285,7 @@ public class Account implements Parcelable {
|
|||
oauth_token_secret = cursor.getColumnIndex(Accounts.OAUTH_TOKEN_SECRET);
|
||||
api_url_format = cursor.getColumnIndex(Accounts.API_URL_FORMAT);
|
||||
same_oauth_signing_url = cursor.getColumnIndex(Accounts.SAME_OAUTH_SIGNING_URL);
|
||||
no_version_suffix = cursor.getColumnIndex(Accounts.NO_VERSION_SUFFIX);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -48,12 +48,12 @@ public interface TweetStore {
|
|||
public static final Uri CONTENT_URI_DATABASE_READY = Uri.withAppendedPath(BASE_CONTENT_URI,
|
||||
CONTENT_PATH_DATABASE_READY);
|
||||
|
||||
public static final Uri[] STATUSES_URIS = new Uri[] { Statuses.CONTENT_URI, Mentions.CONTENT_URI,
|
||||
CachedStatuses.CONTENT_URI };
|
||||
public static final Uri[] CACHE_URIS = new Uri[] { CachedUsers.CONTENT_URI, CachedStatuses.CONTENT_URI,
|
||||
CachedHashtags.CONTENT_URI, CachedTrends.Local.CONTENT_URI };
|
||||
public static final Uri[] DIRECT_MESSAGES_URIS = new Uri[] { DirectMessages.Inbox.CONTENT_URI,
|
||||
DirectMessages.Outbox.CONTENT_URI };
|
||||
public static final Uri[] STATUSES_URIS = new Uri[]{Statuses.CONTENT_URI, Mentions.CONTENT_URI,
|
||||
CachedStatuses.CONTENT_URI};
|
||||
public static final Uri[] CACHE_URIS = new Uri[]{CachedUsers.CONTENT_URI, CachedStatuses.CONTENT_URI,
|
||||
CachedHashtags.CONTENT_URI, CachedTrends.Local.CONTENT_URI};
|
||||
public static final Uri[] DIRECT_MESSAGES_URIS = new Uri[]{DirectMessages.Inbox.CONTENT_URI,
|
||||
DirectMessages.Outbox.CONTENT_URI};
|
||||
|
||||
public static interface Accounts extends BaseColumns {
|
||||
|
||||
|
@ -132,25 +132,26 @@ public interface TweetStore {
|
|||
public static final String PROFILE_BANNER_URL = "profile_banner_url";
|
||||
public static final String API_URL_FORMAT = "api_url_format";
|
||||
public static final String SAME_OAUTH_SIGNING_URL = "same_oauth_signing_url";
|
||||
public static final String NO_VERSION_SUFFIX = "no_version_suffix";
|
||||
|
||||
public static final String[] COLUMNS_NO_CREDENTIALS = new String[] { _ID, NAME, SCREEN_NAME, ACCOUNT_ID,
|
||||
PROFILE_IMAGE_URL, PROFILE_BANNER_URL, COLOR, IS_ACTIVATED };
|
||||
public static final String[] COLUMNS_NO_CREDENTIALS = new String[]{_ID, NAME, SCREEN_NAME, ACCOUNT_ID,
|
||||
PROFILE_IMAGE_URL, PROFILE_BANNER_URL, COLOR, IS_ACTIVATED};
|
||||
|
||||
public static final String[] COLUMNS = new String[] { _ID, NAME, SCREEN_NAME, ACCOUNT_ID, AUTH_TYPE,
|
||||
public static final String[] COLUMNS = new String[]{_ID, NAME, SCREEN_NAME, ACCOUNT_ID, AUTH_TYPE,
|
||||
BASIC_AUTH_USERNAME, BASIC_AUTH_PASSWORD, OAUTH_TOKEN, OAUTH_TOKEN_SECRET, CONSUMER_KEY,
|
||||
CONSUMER_SECRET, API_URL_FORMAT, SAME_OAUTH_SIGNING_URL, PROFILE_IMAGE_URL, PROFILE_BANNER_URL, COLOR,
|
||||
IS_ACTIVATED };
|
||||
CONSUMER_SECRET, API_URL_FORMAT, SAME_OAUTH_SIGNING_URL, NO_VERSION_SUFFIX, PROFILE_IMAGE_URL, PROFILE_BANNER_URL, COLOR,
|
||||
IS_ACTIVATED};
|
||||
|
||||
public static final String[] TYPES = new String[] { TYPE_PRIMARY_KEY, TYPE_TEXT_NOT_NULL, TYPE_TEXT_NOT_NULL,
|
||||
public static final String[] TYPES = new String[]{TYPE_PRIMARY_KEY, TYPE_TEXT_NOT_NULL, TYPE_TEXT_NOT_NULL,
|
||||
TYPE_INT_UNIQUE, TYPE_INT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT,
|
||||
TYPE_BOOLEAN, TYPE_TEXT, TYPE_TEXT, TYPE_INT, TYPE_BOOLEAN };
|
||||
TYPE_BOOLEAN, TYPE_BOOLEAN, TYPE_TEXT, TYPE_TEXT, TYPE_INT, TYPE_BOOLEAN};
|
||||
|
||||
}
|
||||
|
||||
public static interface CachedHashtags extends CachedValues {
|
||||
|
||||
public static final String[] COLUMNS = new String[] { _ID, NAME };
|
||||
public static final String[] TYPES = new String[] { TYPE_PRIMARY_KEY, TYPE_TEXT };
|
||||
public static final String[] COLUMNS = new String[]{_ID, NAME};
|
||||
public static final String[] TYPES = new String[]{TYPE_PRIMARY_KEY, TYPE_TEXT};
|
||||
|
||||
public static final String TABLE_NAME = "cached_hashtags";
|
||||
public static final String CONTENT_PATH = TABLE_NAME;
|
||||
|
@ -168,9 +169,9 @@ public interface TweetStore {
|
|||
|
||||
public static final String PATH = "path";
|
||||
|
||||
public static final String[] MATRIX_COLUMNS = new String[] { URL, PATH };
|
||||
public static final String[] MATRIX_COLUMNS = new String[]{URL, PATH};
|
||||
|
||||
public static final String[] COLUMNS = new String[] { _ID, URL, PATH };
|
||||
public static final String[] COLUMNS = new String[]{_ID, URL, PATH};
|
||||
}
|
||||
|
||||
public static interface CachedStatuses extends Statuses {
|
||||
|
@ -184,8 +185,8 @@ public interface TweetStore {
|
|||
|
||||
public static final String TIMESTAMP = "timestamp";
|
||||
|
||||
public static final String[] COLUMNS = new String[] { _ID, NAME, TIMESTAMP };
|
||||
public static final String[] TYPES = new String[] { TYPE_PRIMARY_KEY, TYPE_TEXT, TYPE_INT };
|
||||
public static final String[] COLUMNS = new String[]{_ID, NAME, TIMESTAMP};
|
||||
public static final String[] TYPES = new String[]{TYPE_PRIMARY_KEY, TYPE_TEXT, TYPE_INT};
|
||||
|
||||
public static interface Local extends CachedTrends {
|
||||
public static final String TABLE_NAME = "local_trends";
|
||||
|
@ -248,14 +249,14 @@ public interface TweetStore {
|
|||
*/
|
||||
public static final String PROFILE_IMAGE_URL = "profile_image_url";
|
||||
|
||||
public static final String[] COLUMNS = new String[] { _ID, USER_ID, CREATED_AT, NAME, SCREEN_NAME,
|
||||
public static final String[] COLUMNS = new String[]{_ID, USER_ID, CREATED_AT, NAME, SCREEN_NAME,
|
||||
DESCRIPTION_PLAIN, LOCATION, URL, PROFILE_IMAGE_URL, PROFILE_BANNER_URL, IS_PROTECTED, IS_VERIFIED,
|
||||
IS_FOLLOWING, FOLLOWERS_COUNT, FRIENDS_COUNT, STATUSES_COUNT, FAVORITES_COUNT, DESCRIPTION_HTML,
|
||||
DESCRIPTION_EXPANDED, URL_EXPANDED };
|
||||
DESCRIPTION_EXPANDED, URL_EXPANDED};
|
||||
|
||||
public static final String[] TYPES = new String[] { TYPE_PRIMARY_KEY, TYPE_INT_UNIQUE, TYPE_INT, TYPE_TEXT,
|
||||
public static final String[] TYPES = new String[]{TYPE_PRIMARY_KEY, TYPE_INT_UNIQUE, TYPE_INT, TYPE_TEXT,
|
||||
TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_BOOLEAN, TYPE_BOOLEAN,
|
||||
TYPE_BOOLEAN, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT };
|
||||
TYPE_BOOLEAN, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT};
|
||||
|
||||
}
|
||||
|
||||
|
@ -274,9 +275,9 @@ public interface TweetStore {
|
|||
|
||||
public static final String PATH = "path";
|
||||
|
||||
public static final String[] MATRIX_COLUMNS = new String[] { NAME, PATH };
|
||||
public static final String[] MATRIX_COLUMNS = new String[]{NAME, PATH};
|
||||
|
||||
public static final String[] COLUMNS = new String[] { _ID, NAME, PATH };
|
||||
public static final String[] COLUMNS = new String[]{_ID, NAME, PATH};
|
||||
}
|
||||
|
||||
public static interface DirectMessages extends BaseColumns {
|
||||
|
@ -308,13 +309,13 @@ public interface TweetStore {
|
|||
|
||||
public static final String FIRST_MEDIA = "first_media";
|
||||
|
||||
public static final String[] COLUMNS = new String[] { _ID, ACCOUNT_ID, MESSAGE_ID, MESSAGE_TIMESTAMP,
|
||||
public static final String[] COLUMNS = new String[]{_ID, ACCOUNT_ID, MESSAGE_ID, MESSAGE_TIMESTAMP,
|
||||
SENDER_ID, RECIPIENT_ID, IS_OUTGOING, TEXT_HTML, TEXT_PLAIN, TEXT_UNESCAPED, SENDER_NAME,
|
||||
RECIPIENT_NAME, SENDER_SCREEN_NAME, RECIPIENT_SCREEN_NAME, SENDER_PROFILE_IMAGE_URL,
|
||||
RECIPIENT_PROFILE_IMAGE_URL, MEDIAS, FIRST_MEDIA };
|
||||
public static final String[] TYPES = new String[] { TYPE_PRIMARY_KEY, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
|
||||
RECIPIENT_PROFILE_IMAGE_URL, MEDIAS, FIRST_MEDIA};
|
||||
public static final String[] TYPES = new String[]{TYPE_PRIMARY_KEY, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
|
||||
TYPE_INT, TYPE_BOOLEAN, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT,
|
||||
TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT };
|
||||
TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT};
|
||||
|
||||
public static final String DEFAULT_SORT_ORDER = MESSAGE_ID + " DESC";
|
||||
|
||||
|
@ -401,9 +402,9 @@ public interface TweetStore {
|
|||
|
||||
public static final String ADDRESS = "address";
|
||||
|
||||
public static final String[] MATRIX_COLUMNS = new String[] { HOST, ADDRESS };
|
||||
public static final String[] MATRIX_COLUMNS = new String[]{HOST, ADDRESS};
|
||||
|
||||
public static final String[] COLUMNS = new String[] { _ID, HOST, ADDRESS };
|
||||
public static final String[] COLUMNS = new String[]{_ID, HOST, ADDRESS};
|
||||
}
|
||||
|
||||
public static interface Drafts extends BaseColumns {
|
||||
|
@ -443,11 +444,11 @@ public interface TweetStore {
|
|||
|
||||
public static final String ACTION_EXTRAS = "action_extras";
|
||||
|
||||
public static final String[] COLUMNS = new String[] { _ID, TEXT, ACCOUNT_IDS, LOCATION, MEDIAS,
|
||||
IN_REPLY_TO_STATUS_ID, IS_POSSIBLY_SENSITIVE, TIMESTAMP, ACTION_TYPE, ACTION_EXTRAS };
|
||||
public static final String[] COLUMNS = new String[]{_ID, TEXT, ACCOUNT_IDS, LOCATION, MEDIAS,
|
||||
IN_REPLY_TO_STATUS_ID, IS_POSSIBLY_SENSITIVE, TIMESTAMP, ACTION_TYPE, ACTION_EXTRAS};
|
||||
|
||||
public static final String[] TYPES = new String[] { TYPE_PRIMARY_KEY, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT,
|
||||
TYPE_INT, TYPE_INT, TYPE_BOOLEAN, TYPE_INT, TYPE_INT, TYPE_TEXT };
|
||||
public static final String[] TYPES = new String[]{TYPE_PRIMARY_KEY, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT,
|
||||
TYPE_INT, TYPE_INT, TYPE_BOOLEAN, TYPE_INT, TYPE_INT, TYPE_TEXT};
|
||||
|
||||
}
|
||||
|
||||
|
@ -465,9 +466,9 @@ public interface TweetStore {
|
|||
|
||||
public static final String ENABLE_FOR_RETWEETS = "enable_for_retweets";
|
||||
|
||||
public static final String[] COLUMNS = new String[] { _ID, VALUE };
|
||||
public static final String[] COLUMNS = new String[]{_ID, VALUE};
|
||||
|
||||
public static final String[] TYPES = new String[] { TYPE_PRIMARY_KEY, TYPE_TEXT_NOT_NULL_UNIQUE };
|
||||
public static final String[] TYPES = new String[]{TYPE_PRIMARY_KEY, TYPE_TEXT_NOT_NULL_UNIQUE};
|
||||
|
||||
public static interface Keywords extends Filters {
|
||||
|
||||
|
@ -504,10 +505,10 @@ public interface TweetStore {
|
|||
public static final String NAME = "name";
|
||||
public static final String SCREEN_NAME = "screen_name";
|
||||
|
||||
public static final String[] COLUMNS = new String[] { _ID, USER_ID, NAME, SCREEN_NAME };
|
||||
public static final String[] COLUMNS = new String[]{_ID, USER_ID, NAME, SCREEN_NAME};
|
||||
|
||||
public static final String[] TYPES = new String[] { TYPE_PRIMARY_KEY, TYPE_INT_UNIQUE, TYPE_TEXT_NOT_NULL,
|
||||
TYPE_TEXT_NOT_NULL };
|
||||
public static final String[] TYPES = new String[]{TYPE_PRIMARY_KEY, TYPE_INT_UNIQUE, TYPE_TEXT_NOT_NULL,
|
||||
TYPE_TEXT_NOT_NULL};
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -532,9 +533,9 @@ public interface TweetStore {
|
|||
|
||||
public static final String COUNT = "count";
|
||||
|
||||
public static final String[] MATRIX_COLUMNS = new String[] { ID, COUNT };
|
||||
public static final String[] MATRIX_COLUMNS = new String[]{ID, COUNT};
|
||||
|
||||
public static final String[] COLUMNS = new String[] { _ID, ID, COUNT };
|
||||
public static final String[] COLUMNS = new String[]{_ID, ID, COUNT};
|
||||
}
|
||||
|
||||
public static interface Permissions extends BaseColumns {
|
||||
|
@ -547,9 +548,9 @@ public interface TweetStore {
|
|||
|
||||
public static final String PACKAGE_NAME = "package_name";
|
||||
|
||||
public static final String[] MATRIX_COLUMNS = new String[] { PACKAGE_NAME, PERMISSION };
|
||||
public static final String[] MATRIX_COLUMNS = new String[]{PACKAGE_NAME, PERMISSION};
|
||||
|
||||
public static final String[] COLUMNS = new String[] { _ID, PACKAGE_NAME, PERMISSION };
|
||||
public static final String[] COLUMNS = new String[]{_ID, PACKAGE_NAME, PERMISSION};
|
||||
}
|
||||
|
||||
public static interface Preferences extends BaseColumns {
|
||||
|
@ -578,9 +579,9 @@ public interface TweetStore {
|
|||
|
||||
public static final String TYPE = "type";
|
||||
|
||||
public static final String[] MATRIX_COLUMNS = new String[] { KEY, VALUE, TYPE };
|
||||
public static final String[] MATRIX_COLUMNS = new String[]{KEY, VALUE, TYPE};
|
||||
|
||||
public static final String[] COLUMNS = new String[] { _ID, KEY, VALUE, TYPE };
|
||||
public static final String[] COLUMNS = new String[]{_ID, KEY, VALUE, TYPE};
|
||||
}
|
||||
|
||||
public static interface Statuses extends BaseColumns {
|
||||
|
@ -715,18 +716,18 @@ public interface TweetStore {
|
|||
|
||||
public static final String DEFAULT_SORT_ORDER = SORT_ORDER_TIMESTAMP_DESC;
|
||||
|
||||
public static final String[] COLUMNS = new String[] { _ID, ACCOUNT_ID, STATUS_ID, USER_ID, STATUS_TIMESTAMP,
|
||||
public static final String[] COLUMNS = new String[]{_ID, ACCOUNT_ID, STATUS_ID, USER_ID, STATUS_TIMESTAMP,
|
||||
TEXT_HTML, TEXT_PLAIN, TEXT_UNESCAPED, USER_NAME, USER_SCREEN_NAME, USER_PROFILE_IMAGE_URL,
|
||||
IN_REPLY_TO_STATUS_ID, IN_REPLY_TO_USER_ID, IN_REPLY_TO_USER_NAME, IN_REPLY_TO_USER_SCREEN_NAME,
|
||||
SOURCE, LOCATION, RETWEET_COUNT, FAVORITE_COUNT, RETWEET_ID, RETWEET_TIMESTAMP, RETWEETED_BY_USER_ID,
|
||||
RETWEETED_BY_USER_NAME, RETWEETED_BY_USER_SCREEN_NAME, MY_RETWEET_ID, IS_RETWEET, IS_FAVORITE,
|
||||
IS_PROTECTED, IS_VERIFIED, IS_FOLLOWING, IS_GAP, IS_POSSIBLY_SENSITIVE, MEDIAS, FIRST_MEDIA, MENTIONS };
|
||||
IS_PROTECTED, IS_VERIFIED, IS_FOLLOWING, IS_GAP, IS_POSSIBLY_SENSITIVE, MEDIAS, FIRST_MEDIA, MENTIONS};
|
||||
|
||||
public static final String[] TYPES = new String[] { TYPE_PRIMARY_KEY, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
|
||||
public static final String[] TYPES = new String[]{TYPE_PRIMARY_KEY, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT,
|
||||
TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_INT, TYPE_INT, TYPE_INT,
|
||||
TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_INT, TYPE_TEXT,
|
||||
TYPE_TEXT, TYPE_INT, TYPE_BOOLEAN, TYPE_BOOLEAN, TYPE_BOOLEAN, TYPE_BOOLEAN, TYPE_BOOLEAN,
|
||||
TYPE_BOOLEAN, TYPE_BOOLEAN, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT };
|
||||
TYPE_BOOLEAN, TYPE_BOOLEAN, TYPE_TEXT, TYPE_TEXT, TYPE_TEXT};
|
||||
|
||||
}
|
||||
|
||||
|
@ -748,10 +749,10 @@ public interface TweetStore {
|
|||
|
||||
public static final String POSITION = "position";
|
||||
|
||||
public static final String[] COLUMNS = new String[] { _ID, NAME, ICON, TYPE, ARGUMENTS, EXTRAS, POSITION };
|
||||
public static final String[] COLUMNS = new String[]{_ID, NAME, ICON, TYPE, ARGUMENTS, EXTRAS, POSITION};
|
||||
|
||||
public static final String[] TYPES = new String[] { TYPE_PRIMARY_KEY, TYPE_TEXT_NOT_NULL, TYPE_TEXT, TYPE_TEXT,
|
||||
TYPE_TEXT, TYPE_TEXT, TYPE_INT };
|
||||
public static final String[] TYPES = new String[]{TYPE_PRIMARY_KEY, TYPE_TEXT_NOT_NULL, TYPE_TEXT, TYPE_TEXT,
|
||||
TYPE_TEXT, TYPE_TEXT, TYPE_INT};
|
||||
|
||||
public static final String DEFAULT_SORT_ORDER = POSITION + " ASC";
|
||||
}
|
||||
|
@ -768,9 +769,9 @@ public interface TweetStore {
|
|||
|
||||
public static final String COUNT = "count";
|
||||
|
||||
public static final String[] MATRIX_COLUMNS = new String[] { TAB_POSITION, TAB_TYPE, COUNT };
|
||||
public static final String[] MATRIX_COLUMNS = new String[]{TAB_POSITION, TAB_TYPE, COUNT};
|
||||
|
||||
public static final String[] COLUMNS = new String[] { _ID, TAB_POSITION, TAB_TYPE, COUNT };
|
||||
public static final String[] COLUMNS = new String[]{_ID, TAB_POSITION, TAB_TYPE, COUNT};
|
||||
|
||||
public static interface ByType extends UnreadCounts {
|
||||
|
||||
|
|
|
@ -19,8 +19,6 @@
|
|||
|
||||
package org.mariotaku.twidere.util;
|
||||
|
||||
import static org.mariotaku.twidere.util.HtmlEscapeHelper.toPlainText;
|
||||
|
||||
import android.content.ContentValues;
|
||||
|
||||
import org.json.JSONException;
|
||||
|
@ -44,6 +42,9 @@ import org.mariotaku.twidere.provider.TweetStore.Drafts;
|
|||
import org.mariotaku.twidere.provider.TweetStore.Filters;
|
||||
import org.mariotaku.twidere.provider.TweetStore.Statuses;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import twitter4j.DirectMessage;
|
||||
import twitter4j.GeoLocation;
|
||||
import twitter4j.Status;
|
||||
|
@ -54,13 +55,13 @@ import twitter4j.User;
|
|||
import twitter4j.auth.AccessToken;
|
||||
import twitter4j.conf.Configuration;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import static org.mariotaku.twidere.util.HtmlEscapeHelper.toPlainText;
|
||||
|
||||
public final class ContentValuesCreator implements TwidereConstants {
|
||||
|
||||
public static ContentValues makeAccountContentValuesBasic(final Configuration conf, final String basicUsername,
|
||||
final String basicPassword, final User user, final int color, final String apiUrlFormat) {
|
||||
final String basicPassword, final User user, final int color, final String apiUrlFormat,
|
||||
final boolean noVersionSuffix) {
|
||||
if (user == null || user.getId() <= 0) return null;
|
||||
final ContentValues values = new ContentValues();
|
||||
if (basicUsername == null || basicPassword == null) return null;
|
||||
|
@ -75,12 +76,13 @@ public final class ContentValuesCreator implements TwidereConstants {
|
|||
values.put(Accounts.COLOR, color);
|
||||
values.put(Accounts.IS_ACTIVATED, 1);
|
||||
values.put(Accounts.API_URL_FORMAT, apiUrlFormat);
|
||||
values.put(Accounts.NO_VERSION_SUFFIX, noVersionSuffix);
|
||||
return values;
|
||||
}
|
||||
|
||||
public static ContentValues makeAccountContentValuesOAuth(final Configuration conf, final AccessToken accessToken,
|
||||
final User user, final int authType, final int color, final String apiUrlFormat,
|
||||
final boolean sameOAuthSigningUrl) {
|
||||
final boolean sameOAuthSigningUrl, final boolean noVersionSuffix) {
|
||||
if (user == null || user.getId() <= 0 || accessToken == null || user.getId() != accessToken.getUserId())
|
||||
return null;
|
||||
final ContentValues values = new ContentValues();
|
||||
|
@ -98,11 +100,12 @@ public final class ContentValuesCreator implements TwidereConstants {
|
|||
values.put(Accounts.IS_ACTIVATED, 1);
|
||||
values.put(Accounts.API_URL_FORMAT, apiUrlFormat);
|
||||
values.put(Accounts.SAME_OAUTH_SIGNING_URL, sameOAuthSigningUrl);
|
||||
values.put(Accounts.NO_VERSION_SUFFIX, noVersionSuffix);
|
||||
return values;
|
||||
}
|
||||
|
||||
public static ContentValues makeAccountContentValuesTWIP(final Configuration conf, final User user,
|
||||
final int color, final String apiUrlFormat) {
|
||||
final int color, final String apiUrlFormat, final boolean noVersionSuffix) {
|
||||
if (user == null || user.getId() <= 0) return null;
|
||||
final ContentValues values = new ContentValues();
|
||||
values.put(Accounts.AUTH_TYPE, Accounts.AUTH_TYPE_TWIP_O_MODE);
|
||||
|
@ -114,6 +117,7 @@ public final class ContentValuesCreator implements TwidereConstants {
|
|||
values.put(Accounts.COLOR, color);
|
||||
values.put(Accounts.IS_ACTIVATED, 1);
|
||||
values.put(Accounts.API_URL_FORMAT, apiUrlFormat);
|
||||
values.put(Accounts.NO_VERSION_SUFFIX, noVersionSuffix);
|
||||
return values;
|
||||
}
|
||||
|
||||
|
@ -208,10 +212,10 @@ public final class ContentValuesCreator implements TwidereConstants {
|
|||
final ContentValues values = new ContentValues();
|
||||
values.put(Drafts.ACTION_TYPE, Drafts.ACTION_SEND_DIRECT_MESSAGE);
|
||||
values.put(Drafts.TEXT, text);
|
||||
values.put(Drafts.ACCOUNT_IDS, ArrayUtils.toString(new long[] { accountId }, ',', false));
|
||||
values.put(Drafts.ACCOUNT_IDS, ArrayUtils.toString(new long[]{accountId}, ',', false));
|
||||
values.put(Drafts.TIMESTAMP, System.currentTimeMillis());
|
||||
if (imageUri != null) {
|
||||
final ParcelableMediaUpdate[] medias = { new ParcelableMediaUpdate(imageUri, 0) };
|
||||
final ParcelableMediaUpdate[] medias = {new ParcelableMediaUpdate(imageUri, 0)};
|
||||
values.put(Drafts.MEDIAS, JSONSerializer.toJSONArrayString(medias));
|
||||
}
|
||||
final JSONObject extras = new JSONObject();
|
||||
|
@ -224,7 +228,7 @@ public final class ContentValuesCreator implements TwidereConstants {
|
|||
return values;
|
||||
}
|
||||
|
||||
public static ContentValues makeFilterdUserContentValues(final ParcelableStatus status) {
|
||||
public static ContentValues makeFilteredUserContentValues(final ParcelableStatus status) {
|
||||
if (status == null) return null;
|
||||
final ContentValues values = new ContentValues();
|
||||
values.put(Filters.Users.USER_ID, status.user_id);
|
||||
|
@ -233,7 +237,7 @@ public final class ContentValuesCreator implements TwidereConstants {
|
|||
return values;
|
||||
}
|
||||
|
||||
public static ContentValues makeFilterdUserContentValues(final ParcelableUser user) {
|
||||
public static ContentValues makeFilteredUserContentValues(final ParcelableUser user) {
|
||||
if (user == null) return null;
|
||||
final ContentValues values = new ContentValues();
|
||||
values.put(Filters.Users.USER_ID, user.id);
|
||||
|
@ -242,7 +246,7 @@ public final class ContentValuesCreator implements TwidereConstants {
|
|||
return values;
|
||||
}
|
||||
|
||||
public static ContentValues makeFilterdUserContentValues(final ParcelableUserMention user) {
|
||||
public static ContentValues makeFilteredUserContentValues(final ParcelableUserMention user) {
|
||||
if (user == null) return null;
|
||||
final ContentValues values = new ContentValues();
|
||||
values.put(Filters.Users.USER_ID, user.id);
|
||||
|
@ -258,17 +262,17 @@ public final class ContentValuesCreator implements TwidereConstants {
|
|||
values.put(Statuses.STATUS_ID, orig.getId());
|
||||
values.put(Statuses.STATUS_TIMESTAMP, orig.getCreatedAt().getTime());
|
||||
values.put(Statuses.MY_RETWEET_ID, orig.getCurrentUserRetweet());
|
||||
final boolean is_retweet = orig.isRetweet();
|
||||
final boolean isRetweet = orig.isRetweet();
|
||||
final Status status;
|
||||
final Status retweeted_status = is_retweet ? orig.getRetweetedStatus() : null;
|
||||
if (retweeted_status != null) {
|
||||
final User retweet_user = orig.getUser();
|
||||
values.put(Statuses.RETWEET_ID, retweeted_status.getId());
|
||||
values.put(Statuses.RETWEET_TIMESTAMP, retweeted_status.getCreatedAt().getTime());
|
||||
values.put(Statuses.RETWEETED_BY_USER_ID, retweet_user.getId());
|
||||
values.put(Statuses.RETWEETED_BY_USER_NAME, retweet_user.getName());
|
||||
values.put(Statuses.RETWEETED_BY_USER_SCREEN_NAME, retweet_user.getScreenName());
|
||||
status = retweeted_status;
|
||||
final Status retweetedStatus = isRetweet ? orig.getRetweetedStatus() : null;
|
||||
if (retweetedStatus != null) {
|
||||
final User retweetUser = orig.getUser();
|
||||
values.put(Statuses.RETWEET_ID, retweetedStatus.getId());
|
||||
values.put(Statuses.RETWEET_TIMESTAMP, retweetedStatus.getCreatedAt().getTime());
|
||||
values.put(Statuses.RETWEETED_BY_USER_ID, retweetUser.getId());
|
||||
values.put(Statuses.RETWEETED_BY_USER_NAME, retweetUser.getName());
|
||||
values.put(Statuses.RETWEETED_BY_USER_SCREEN_NAME, retweetUser.getScreenName());
|
||||
status = retweetedStatus;
|
||||
} else {
|
||||
status = orig;
|
||||
}
|
||||
|
@ -300,7 +304,7 @@ public final class ContentValuesCreator implements TwidereConstants {
|
|||
if (location != null) {
|
||||
values.put(Statuses.LOCATION, location.getLatitude() + "," + location.getLongitude());
|
||||
}
|
||||
values.put(Statuses.IS_RETWEET, is_retweet);
|
||||
values.put(Statuses.IS_RETWEET, isRetweet);
|
||||
values.put(Statuses.IS_FAVORITE, status.isFavorited());
|
||||
final ParcelableMedia[] medias = ParcelableMedia.fromEntities(status);
|
||||
if (medias != null) {
|
||||
|
@ -334,10 +338,10 @@ public final class ContentValuesCreator implements TwidereConstants {
|
|||
return values;
|
||||
}
|
||||
|
||||
public static ContentValues[] makeTrendsContentValues(final List<Trends> trends_list) {
|
||||
if (trends_list == null) return new ContentValues[0];
|
||||
final List<ContentValues> result_list = new ArrayList<ContentValues>();
|
||||
for (final Trends trends : trends_list) {
|
||||
public static ContentValues[] makeTrendsContentValues(final List<Trends> trendsList) {
|
||||
if (trendsList == null) return new ContentValues[0];
|
||||
final List<ContentValues> resultList = new ArrayList<>();
|
||||
for (final Trends trends : trendsList) {
|
||||
if (trends == null) {
|
||||
continue;
|
||||
}
|
||||
|
@ -346,10 +350,10 @@ public final class ContentValuesCreator implements TwidereConstants {
|
|||
final ContentValues values = new ContentValues();
|
||||
values.put(CachedTrends.NAME, trend.getName());
|
||||
values.put(CachedTrends.TIMESTAMP, timestamp);
|
||||
result_list.add(values);
|
||||
resultList.add(values);
|
||||
}
|
||||
}
|
||||
return result_list.toArray(new ContentValues[result_list.size()]);
|
||||
return resultList.toArray(new ContentValues[resultList.size()]);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -52,7 +52,6 @@ import java.util.TreeSet;
|
|||
import de.keyboardsurfer.android.widget.crouton.Crouton;
|
||||
import de.keyboardsurfer.android.widget.crouton.CroutonStyle;
|
||||
|
||||
import static org.mariotaku.twidere.util.ContentValuesCreator.makeFilterdUserContentValues;
|
||||
import static org.mariotaku.twidere.util.Utils.getAccountScreenNames;
|
||||
import static org.mariotaku.twidere.util.content.ContentResolverUtils.bulkDelete;
|
||||
import static org.mariotaku.twidere.util.content.ContentResolverUtils.bulkInsert;
|
||||
|
@ -145,11 +144,11 @@ public class MultiSelectEventHandler implements Constants, ActionMode.Callback,
|
|||
if (object instanceof ParcelableStatus) {
|
||||
final ParcelableStatus status = (ParcelableStatus) object;
|
||||
userIds.add(status.user_id);
|
||||
valuesList.add(makeFilterdUserContentValues(status));
|
||||
valuesList.add(ContentValuesCreator.makeFilteredUserContentValues(status));
|
||||
} else if (object instanceof ParcelableUser) {
|
||||
final ParcelableUser user = (ParcelableUser) object;
|
||||
userIds.add(user.id);
|
||||
valuesList.add(makeFilterdUserContentValues(user));
|
||||
valuesList.add(ContentValuesCreator.makeFilteredUserContentValues(user));
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
package org.mariotaku.twidere.util;
|
||||
|
||||
public class SpannableStringBuilder {
|
||||
|
||||
}
|
|
@ -35,10 +35,14 @@ import android.support.annotation.NonNull;
|
|||
import android.text.TextPaint;
|
||||
import android.text.TextUtils;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.ContextMenu.ContextMenuInfo;
|
||||
import android.view.ContextThemeWrapper;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
|
||||
import org.mariotaku.menucomponent.widget.MenuBar.MenuBarMenuInfo;
|
||||
import org.mariotaku.refreshnow.widget.RefreshNowConfig;
|
||||
import org.mariotaku.refreshnow.widget.RefreshNowProgressIndicator.IndicatorConfig;
|
||||
import org.mariotaku.twidere.Constants;
|
||||
|
@ -114,6 +118,25 @@ public class ThemeUtils implements Constants {
|
|||
d.setAlpha(getUserThemeBackgroundAlpha(context));
|
||||
}
|
||||
|
||||
public static void applyColorFilterToMenuIcon(Menu menu, int color, int popupColor, PorterDuff.Mode mode, int... excludedGroups) {
|
||||
for (int i = 0, j = menu.size(); i < j; i++) {
|
||||
final MenuItem item = menu.getItem(i);
|
||||
final Drawable icon = item.getIcon();
|
||||
final ContextMenuInfo info = item.getMenuInfo();
|
||||
if (ArrayUtils.contains(excludedGroups, item.getGroupId())) {
|
||||
icon.mutate().clearColorFilter();
|
||||
} else if (info instanceof MenuBarMenuInfo) {
|
||||
final boolean inPopup = ((MenuBarMenuInfo) info).isInPopup();
|
||||
icon.mutate().setColorFilter(inPopup ? popupColor : color, mode);
|
||||
} else {
|
||||
icon.mutate().setColorFilter(color, mode);
|
||||
}
|
||||
if (item.hasSubMenu()) {
|
||||
applyColorFilterToMenuIcon(item.getSubMenu(), color, popupColor, mode, excludedGroups);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static IndicatorConfig buildRefreshIndicatorConfig(final Context context) {
|
||||
final IndicatorConfig.Builder builder = new IndicatorConfig.Builder(context);
|
||||
final Resources res = context.getResources();
|
||||
|
|
|
@ -1493,7 +1493,8 @@ public final class Utils implements Constants, TwitterConstants {
|
|||
|
||||
public static String getApiUrl(final String pattern, final String domain, final String appendPath) {
|
||||
final String urlBase = getApiBaseUrl(pattern, domain);
|
||||
if (urlBase == null || appendPath == null) return urlBase;
|
||||
if (urlBase == null) return null;
|
||||
if (appendPath == null) return urlBase.endsWith("/") ? urlBase : urlBase + "/";
|
||||
final StringBuilder sb = new StringBuilder(urlBase);
|
||||
if (urlBase.endsWith("/")) {
|
||||
sb.append(appendPath.startsWith("/") ? appendPath.substring(1) : appendPath);
|
||||
|
@ -2250,9 +2251,10 @@ public final class Utils implements Constants, TwitterConstants {
|
|||
final String prefConsumerSecret = prefs.getString(KEY_CONSUMER_SECRET, TWITTER_CONSUMER_SECRET);
|
||||
final ConfigurationBuilder cb = new ConfigurationBuilder();
|
||||
if (!isEmpty(account.api_url_format)) {
|
||||
cb.setRestBaseURL(getApiUrl(account.api_url_format, "api", "/1.1/"));
|
||||
final String versionSuffix = account.no_version_suffix ? null : "/1.1/";
|
||||
cb.setRestBaseURL(getApiUrl(account.api_url_format, "api", versionSuffix));
|
||||
cb.setOAuthBaseURL(getApiUrl(account.api_url_format, "api", "/oauth/"));
|
||||
cb.setUploadBaseURL(getApiUrl(account.api_url_format, "upload", "/1.1/"));
|
||||
cb.setUploadBaseURL(getApiUrl(account.api_url_format, "upload", versionSuffix));
|
||||
if (!account.same_oauth_signing_url) {
|
||||
cb.setSigningRestBaseURL(DEFAULT_SIGNING_REST_BASE_URL);
|
||||
cb.setSigningOAuthBaseURL(DEFAULT_SIGNING_OAUTH_BASE_URL);
|
||||
|
@ -2291,7 +2293,7 @@ public final class Utils implements Constants, TwitterConstants {
|
|||
|
||||
final String where = Where.equals(new Column(Accounts.ACCOUNT_ID), accountId).getSQL();
|
||||
final Cursor c = ContentResolverUtils.query(context.getContentResolver(), Accounts.CONTENT_URI,
|
||||
Accounts.COLUMNS, where.toString(), null, null);
|
||||
Accounts.COLUMNS, where, null, null);
|
||||
if (c == null) return null;
|
||||
try {
|
||||
if (!c.moveToFirst()) return null;
|
||||
|
@ -2416,7 +2418,7 @@ public final class Utils implements Constants, TwitterConstants {
|
|||
// versions
|
||||
final String where = Where.equals(new Column(Accounts.ACCOUNT_ID), accountId).getSQL();
|
||||
final Cursor c = ContentResolverUtils.query(context.getContentResolver(), Accounts.CONTENT_URI,
|
||||
Accounts.COLUMNS, where.toString(), null, null);
|
||||
Accounts.COLUMNS, where, null, null);
|
||||
if (c == null) return null;
|
||||
try {
|
||||
if (!c.moveToFirst()) return null;
|
||||
|
@ -2793,22 +2795,22 @@ public final class Utils implements Constants, TwitterConstants {
|
|||
// SCREENLAYOUT_LAYOUTDIR_RTL;
|
||||
}
|
||||
|
||||
public static boolean isSameAccount(final Context context, final long account_id, final long user_id) {
|
||||
if (context == null || account_id <= 0 || user_id <= 0) return false;
|
||||
return account_id == user_id;
|
||||
public static boolean isSameAccount(final Context context, final long accountId, final long userId) {
|
||||
if (context == null || accountId <= 0 || userId <= 0) return false;
|
||||
return accountId == userId;
|
||||
}
|
||||
|
||||
public static boolean isSameAccount(final Context context, final long account_id, final String screen_name) {
|
||||
if (context == null || account_id <= 0 || screen_name == null) return false;
|
||||
return screen_name.equalsIgnoreCase(getAccountScreenName(context, account_id));
|
||||
public static boolean isSameAccount(final Context context, final long accountId, final String screenName) {
|
||||
if (context == null || accountId <= 0 || screenName == null) return false;
|
||||
return screenName.equalsIgnoreCase(getAccountScreenName(context, accountId));
|
||||
}
|
||||
|
||||
public static boolean isUserLoggedIn(final Context context, final long account_id) {
|
||||
public static boolean isUserLoggedIn(final Context context, final long accountId) {
|
||||
if (context == null) return false;
|
||||
final long[] ids = getAccountIds(context);
|
||||
if (ids == null) return false;
|
||||
for (final long id : ids) {
|
||||
if (id == account_id) return true;
|
||||
if (id == accountId) return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -3483,11 +3485,11 @@ public final class Utils implements Constants, TwitterConstants {
|
|||
addIntentToMenuForExtension(context, menu, MENU_GROUP_STATUS_EXTENSION, INTENT_ACTION_EXTENSION_OPEN_STATUS,
|
||||
EXTRA_STATUS, EXTRA_STATUS_JSON, status);
|
||||
final MenuItem shareItem = menu.findItem(R.id.share_submenu);
|
||||
final Menu shareSubmenu = shareItem != null && shareItem.hasSubMenu() ? shareItem.getSubMenu() : null;
|
||||
if (shareSubmenu != null) {
|
||||
final Menu shareSubMenu = shareItem != null && shareItem.hasSubMenu() ? shareItem.getSubMenu() : null;
|
||||
if (shareSubMenu != null) {
|
||||
final Intent shareIntent = createStatusShareIntent(context, status);
|
||||
shareSubmenu.removeGroup(MENU_GROUP_STATUS_SHARE);
|
||||
addIntentToMenu(context, shareSubmenu, shareIntent, MENU_GROUP_STATUS_SHARE);
|
||||
shareSubMenu.removeGroup(MENU_GROUP_STATUS_SHARE);
|
||||
addIntentToMenu(context, shareSubMenu, shareIntent, MENU_GROUP_STATUS_SHARE);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3813,15 +3815,13 @@ public final class Utils implements Constants, TwitterConstants {
|
|||
}
|
||||
|
||||
private static boolean isExtensionUseJSON(final ResolveInfo info) {
|
||||
if (info == null || info.activityInfo == null) return true;
|
||||
if (info == null || info.activityInfo == null) return false;
|
||||
final ActivityInfo activityInfo = info.activityInfo;
|
||||
if (activityInfo.metaData != null && activityInfo.metaData.containsKey(METADATA_KEY_EXTENSION_USE_JSON))
|
||||
return activityInfo.metaData.getBoolean(METADATA_KEY_EXTENSION_USE_JSON);
|
||||
final ApplicationInfo appInfo = activityInfo.applicationInfo;
|
||||
if (appInfo == null) return true;
|
||||
if (appInfo.metaData != null && appInfo.metaData.containsKey(METADATA_KEY_EXTENSION_USE_JSON))
|
||||
return appInfo.metaData.getBoolean(METADATA_KEY_EXTENSION_USE_JSON);
|
||||
return true;
|
||||
if (appInfo == null) return false;
|
||||
return appInfo.metaData != null && appInfo.metaData.getBoolean(METADATA_KEY_EXTENSION_USE_JSON, false);
|
||||
}
|
||||
|
||||
private static void parseEntities(final HtmlBuilder builder, final EntitySupport entities) {
|
||||
|
@ -3879,7 +3879,7 @@ public final class Utils implements Constants, TwitterConstants {
|
|||
/**
|
||||
* Get most contrasting color
|
||||
*
|
||||
* @param color
|
||||
* @param color Input color, alpha channel will be disposed.
|
||||
* @return {@link Color#WHITE} or {@link Color#BLACK}
|
||||
* @see <a href='http://24ways.org/2010/calculating-color-contrast/'>Calculating Color Contrast</a>
|
||||
*/
|
||||
|
|
|
@ -1,26 +1,46 @@
|
|||
package org.mariotaku.twidere.view;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.PorterDuff.Mode;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.MenuInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.MenuItem.OnMenuItemClickListener;
|
||||
|
||||
import org.mariotaku.menucomponent.widget.MenuBar;
|
||||
import org.mariotaku.twidere.menu.TwidereMenuInflater;
|
||||
import org.mariotaku.menucomponent.widget.MenuBar.MenuBarListener;
|
||||
import org.mariotaku.twidere.Constants;
|
||||
import org.mariotaku.twidere.util.ThemeUtils;
|
||||
|
||||
/**
|
||||
* Created by mariotaku on 14-7-29.
|
||||
*/
|
||||
public class TwidereMenuBar extends MenuBar {
|
||||
public class TwidereMenuBar extends MenuBar implements MenuBarListener, Constants {
|
||||
private OnMenuItemClickListener mListener;
|
||||
|
||||
public TwidereMenuBar(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
public TwidereMenuBar(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
setMenuBarListener(this);
|
||||
}
|
||||
|
||||
public void setOnMenuItemClickListener(OnMenuItemClickListener listener) {
|
||||
mListener = listener;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MenuInflater getMenuInflater() {
|
||||
return new TwidereMenuInflater(getContext());
|
||||
public void onPreShowMenu(Menu menu) {
|
||||
final int color = ThemeUtils.getTextColorPrimary(getItemViewContext());
|
||||
final int popupColor = ThemeUtils.getTextColorPrimary(getPopupContext());
|
||||
ThemeUtils.applyColorFilterToMenuIcon(menu, color, popupColor, Mode.SRC_ATOP,
|
||||
MENU_GROUP_STATUS_SHARE, MENU_GROUP_STATUS_EXTENSION);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onMenuItemClick(MenuItem item) {
|
||||
return mListener != null && mListener.onMenuItemClick(item);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<org.mariotaku.twidere.view.HomeActionButton
|
||||
android:id="@+id/actions_button_bottom"
|
||||
android:id="@+id/actions_button"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="@dimen/float_action_button_size"
|
||||
android:layout_height="@dimen/float_action_button_size"
|
||||
|
|
|
@ -3,11 +3,11 @@
|
|||
|
||||
<ProgressBar
|
||||
android:id="@android:id/progress"
|
||||
style="?android:attr/progressBarStyleLarge"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
style="?android:attr/progressBarStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:layout_margin="@dimen/element_spacing_small"
|
||||
android:layout_margin="@dimen/element_spacing_normal"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<ImageView
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<LinearLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/advanced_api_config"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
@ -16,6 +17,15 @@
|
|||
android:text="@string/same_oauth_signing_url"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"/>
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/no_version_suffix"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="@dimen/element_spacing_normal"
|
||||
android:paddingTop="@dimen/element_spacing_normal"
|
||||
android:text="@string/no_version_suffix"
|
||||
android:textAppearance="?android:attr/textAppearanceSmall"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<org.mariotaku.twidere.view.HomeActionButtonCompat
|
||||
android:id="@+id/actions_button_bottom"
|
||||
android:id="@+id/actions_button"
|
||||
style="?android:buttonStyle"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="@dimen/float_action_button_size"
|
||||
|
|
|
@ -645,5 +645,6 @@
|
|||
<string name="excluded">Excluded</string>
|
||||
<string name="exclude_this_host">Exclude this host</string>
|
||||
<string name="api_url_format_help">[DOMAIN]: Twitter API domain.\nExample: https://[DOMAIN].twitter.com/ will be replaced to https://api.twitter.com/.</string>
|
||||
<string name="no_version_suffix">No version suffix</string>
|
||||
|
||||
</resources>
|
Loading…
Reference in New Issue