adds user from retweets and quotes to add filter menu

improved rtl support
This commit is contained in:
Mariotaku Lee 2015-05-05 13:46:29 +08:00
parent bd759dd3fb
commit 507f9c6188
95 changed files with 357 additions and 217 deletions

View File

@ -86,7 +86,7 @@ dependencies {
compile 'com.squareup.okhttp:okhttp:2.3.0'
compile 'pl.droidsonroids.gif:android-gif-drawable:1.1.6'
compile 'com.github.johnpersano:supertoasts:1.3.4.1@aar'
compile 'com.github.mariotaku:MessageBubbleView:1.0'
compile 'com.github.mariotaku:MessageBubbleView:1.2'
compile 'com.github.mariotaku:DragSortListView:0.6.1'
compile 'com.github.mariotaku:SlidingMenu:1.3'
compile 'com.github.uucky:ColorPicker-Android:0.9.4'

View File

@ -92,19 +92,6 @@ public class SettingsActivity extends BasePreferenceActivity {
return mAdapter = new HeaderAdapter(this);
}
@Override
public void onBackPressed() {
if (mTwidereActionModeForChildListener.finishExisting()) {
return;
}
if (isTopSettings() && shouldNotifyChange()) {
final RestartConfirmDialogFragment df = new RestartConfirmDialogFragment();
df.show(getFragmentManager().beginTransaction(), "restart_confirm");
return;
}
super.onBackPressed();
}
@Override
public int getThemeColor() {
return ThemeUtils.getUserAccentColor(this);
@ -163,7 +150,7 @@ public class SettingsActivity extends BasePreferenceActivity {
pm.setComponentEnabledSetting(main2, PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
Toast.makeText(this, R.string.icon_restored_message, Toast.LENGTH_SHORT).show();
onBackPressed();
finish();
return;
}
super.onHeaderClick(header, position);
@ -209,12 +196,6 @@ public class SettingsActivity extends BasePreferenceActivity {
@Override
public boolean onOptionsItemSelected(final MenuItem item) {
switch (item.getItemId()) {
case MENU_HOME: {
if (!isFinishing()) {
onBackPressed();
}
return true;
}
case MENU_IMPORT_SETTINGS: {
final Intent intent = new Intent(this, DataImportActivity.class);
startActivity(intent);
@ -256,7 +237,7 @@ public class SettingsActivity extends BasePreferenceActivity {
public boolean handleKeyboardShortcutSingle(@NonNull KeyboardShortcutsHandler handler, int keyCode, @NonNull KeyEvent event) {
final String action = handler.getKeyAction(CONTEXT_TAG_NAVIGATION, keyCode, event);
if (ACTION_NAVIGATION_BACK.equals(action)) {
onBackPressed();
navigateUp();
return true;
}
return super.handleKeyboardShortcutSingle(handler, keyCode, event);
@ -272,7 +253,8 @@ public class SettingsActivity extends BasePreferenceActivity {
// supportRequestWindowFeature(WindowCompat.FEATURE_ACTION_BAR);
super.onCreate(savedInstanceState);
setSupportActionBar((Toolbar) findViewById(R.id.action_bar));
final Toolbar toolbar = (Toolbar) findViewById(R.id.action_bar);
setSupportActionBar(toolbar);
mTwidereActionModeForChildListener = new TwidereActionModeForChildListener(this, this, false);
final NativeActionModeAwareLayout layout = (NativeActionModeAwareLayout) findViewById(android.R.id.content);
@ -285,6 +267,14 @@ public class SettingsActivity extends BasePreferenceActivity {
final View windowOverlay = findViewById(R.id.window_overlay);
ViewSupport.setBackground(windowOverlay, ThemeUtils.getNormalWindowContentOverlay(this, getCurrentThemeResourceId()));
setIntent(getIntent().addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT));
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
navigateUp();
}
});
final ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.setDisplayHomeAsUpEnabled(true);
@ -313,6 +303,14 @@ public class SettingsActivity extends BasePreferenceActivity {
}
}
@Override
public AppCompatDelegate getDelegate() {
if (mDelegate == null) {
mDelegate = ThemedAppCompatDelegateFactory.create(this, this);
}
return mDelegate;
}
private void setShouldNotifyChange(boolean notify) {
mShouldNotifyChange = notify;
}
@ -321,12 +319,16 @@ public class SettingsActivity extends BasePreferenceActivity {
return mShouldNotifyChange;
}
@Override
public AppCompatDelegate getDelegate() {
if (mDelegate == null) {
mDelegate = ThemedAppCompatDelegateFactory.create(this, this);
private void navigateUp() {
if (mTwidereActionModeForChildListener.finishExisting()) {
return;
}
return mDelegate;
if (isTopSettings() && shouldNotifyChange()) {
final RestartConfirmDialogFragment df = new RestartConfirmDialogFragment();
df.show(getFragmentManager().beginTransaction(), "restart_confirm");
return;
}
onBackPressed();
}
public static class RestartConfirmDialogFragment extends DialogFragment implements DialogInterface.OnClickListener {

View File

@ -44,6 +44,8 @@ import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import com.rengwuxian.materialedittext.MaterialEditText;
import org.mariotaku.twidere.R;
import org.mariotaku.twidere.adapter.AccountsSpinnerAdapter;
import org.mariotaku.twidere.adapter.ArrayAdapter;
@ -80,9 +82,8 @@ public class CustomTabEditorActivity extends BaseSupportDialogActivity implement
private View mAccountContainer, mSecondaryFieldContainer, mExtraConfigurationsContainer;
private Spinner mTabIconSpinner, mAccountSpinner;
private EditText mEditTabName;
private MaterialEditText mEditTabName;
private TextView mSecondaryFieldLabel;
private TextView mTabTypeName;
private LinearLayout mExtraConfigurationsContent;
private long mTabId;
@ -195,8 +196,7 @@ public class CustomTabEditorActivity extends BaseSupportDialogActivity implement
mAccountContainer = findViewById(R.id.account_container);
mSecondaryFieldContainer = findViewById(R.id.secondary_field_container);
mExtraConfigurationsContainer = findViewById(R.id.extra_configurations_container);
mTabTypeName = (TextView) findViewById(R.id.tab_type_name);
mEditTabName = (EditText) findViewById(R.id.tab_name);
mEditTabName = (MaterialEditText) findViewById(R.id.tab_name);
mSecondaryFieldLabel = (TextView) findViewById(R.id.secondary_field_label);
mTabIconSpinner = (Spinner) findViewById(R.id.tab_icon_spinner);
mAccountSpinner = (Spinner) findViewById(R.id.account_spinner);
@ -280,7 +280,7 @@ public class CustomTabEditorActivity extends BaseSupportDialogActivity implement
mTabId = intent.getLongExtra(EXTRA_ID, -1);
setTitle(isEditMode() ? R.string.edit_tab : R.string.add_tab);
setContentView(R.layout.activity_custom_tab_editor);
mTabTypeName.setText(getTabTypeName(this, type));
mEditTabName.setFloatingLabelText(getTabTypeName(this, type));
mTabIconsAdapter = new CustomTabIconsAdapter(this);
mTabIconsAdapter.setData(getIconMap());
mAccountsAdapter = new AccountsSpinnerAdapter(this);

View File

@ -29,7 +29,6 @@ import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import com.twitter.Extractor;
@ -45,15 +44,12 @@ import org.mariotaku.twidere.util.ParseUtils;
import org.mariotaku.twidere.util.SharedPreferencesWrapper;
import org.mariotaku.twidere.util.ThemeUtils;
import org.mariotaku.twidere.util.UserColorNameManager;
import org.mariotaku.twidere.util.content.ContentResolverUtils;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Set;
import static org.mariotaku.twidere.util.ContentValuesCreator.createFilteredUser;
import static org.mariotaku.twidere.util.content.ContentResolverUtils.bulkDelete;
import static org.mariotaku.twidere.util.content.ContentResolverUtils.bulkInsert;
public class AddStatusFilterDialogFragment extends BaseSupportDialogFragment implements OnMultiChoiceClickListener,
OnClickListener {
@ -68,26 +64,26 @@ public class AddStatusFilterDialogFragment extends BaseSupportDialogFragment imp
final Set<Long> user_ids = new HashSet<>();
final Set<String> keywords = new HashSet<>();
final Set<String> sources = new HashSet<>();
final ArrayList<ContentValues> user_values = new ArrayList<>();
final ArrayList<ContentValues> keyword_values = new ArrayList<>();
final ArrayList<ContentValues> source_values = new ArrayList<>();
final ArrayList<ContentValues> userValues = new ArrayList<>();
final ArrayList<ContentValues> keywordValues = new ArrayList<>();
final ArrayList<ContentValues> sourceValues = new ArrayList<>();
for (final FilterItemInfo info : mCheckedFilterItems) {
final Object value = info.value;
if (value instanceof ParcelableUserMention) {
final ParcelableUserMention mention = (ParcelableUserMention) value;
user_ids.add(mention.id);
user_values.add(createFilteredUser(mention));
} else if (value instanceof ParcelableStatus) {
final ParcelableStatus status = (ParcelableStatus) value;
user_ids.add(status.user_id);
user_values.add(ContentValuesCreator.createFilteredUser(status));
userValues.add(ContentValuesCreator.createFilteredUser(mention));
} else if (value instanceof UserItem) {
final UserItem item = (UserItem) value;
user_ids.add(item.id);
userValues.add(createFilteredUser(item));
} else if (info.type == FilterItemInfo.FILTER_TYPE_KEYWORD) {
if (value != null) {
final String keyword = ParseUtils.parseString(value);
keywords.add(keyword);
final ContentValues values = new ContentValues();
values.put(Filters.Keywords.VALUE, "#" + keyword);
keyword_values.add(values);
keywordValues.add(values);
}
} else if (info.type == FilterItemInfo.FILTER_TYPE_SOURCE) {
if (value != null) {
@ -95,17 +91,17 @@ public class AddStatusFilterDialogFragment extends BaseSupportDialogFragment imp
sources.add(source);
final ContentValues values = new ContentValues();
values.put(Filters.Sources.VALUE, source);
source_values.add(values);
sourceValues.add(values);
}
}
}
final ContentResolver resolver = getContentResolver();
bulkDelete(resolver, Filters.Users.CONTENT_URI, Filters.Users.USER_ID, user_ids, null, false);
bulkDelete(resolver, Filters.Keywords.CONTENT_URI, Filters.Keywords.VALUE, keywords, null, true);
bulkDelete(resolver, Filters.Sources.CONTENT_URI, Filters.Sources.VALUE, sources, null, true);
bulkInsert(resolver, Filters.Users.CONTENT_URI, user_values);
bulkInsert(resolver, Filters.Keywords.CONTENT_URI, keyword_values);
bulkInsert(resolver, Filters.Sources.CONTENT_URI, source_values);
ContentResolverUtils.bulkDelete(resolver, Filters.Users.CONTENT_URI, Filters.Users.USER_ID, user_ids, null, false);
ContentResolverUtils.bulkDelete(resolver, Filters.Keywords.CONTENT_URI, Filters.Keywords.VALUE, keywords, null, true);
ContentResolverUtils.bulkDelete(resolver, Filters.Sources.CONTENT_URI, Filters.Sources.VALUE, sources, null, true);
ContentResolverUtils.bulkInsert(resolver, Filters.Users.CONTENT_URI, userValues);
ContentResolverUtils.bulkInsert(resolver, Filters.Keywords.CONTENT_URI, keywordValues);
ContentResolverUtils.bulkInsert(resolver, Filters.Sources.CONTENT_URI, sourceValues);
}
@Override
@ -124,17 +120,23 @@ public class AddStatusFilterDialogFragment extends BaseSupportDialogFragment imp
final AlertDialog.Builder builder = new AlertDialog.Builder(wrapped);
mFilterItems = getFilterItemsInfo();
final String[] entries = new String[mFilterItems.length];
final UserColorNameManager manager = UserColorNameManager.getInstance(getActivity());
final SharedPreferencesWrapper prefs = SharedPreferencesWrapper.getInstance(getActivity(),
SharedPreferencesWrapper.SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE,
SharedPreferenceConstants.class);
assert prefs != null;
final boolean nameFirst = prefs.getBoolean(KEY_NAME_FIRST);
for (int i = 0, j = entries.length; i < j; i++) {
final FilterItemInfo info = mFilterItems[i];
switch (info.type) {
case FilterItemInfo.FILTER_TYPE_USER:
entries[i] = getString(R.string.user_filter_name, getName(info.value));
entries[i] = getString(R.string.user_filter_name, getName(manager, info.value, nameFirst));
break;
case FilterItemInfo.FILTER_TYPE_KEYWORD:
entries[i] = getString(R.string.keyword_filter_name, getName(info.value));
entries[i] = getString(R.string.keyword_filter_name, getName(manager, info.value, nameFirst));
break;
case FilterItemInfo.FILTER_TYPE_SOURCE:
entries[i] = getString(R.string.source_filter_name, getName(info.value));
entries[i] = getString(R.string.source_filter_name, getName(manager, info.value, nameFirst));
break;
}
}
@ -150,7 +152,16 @@ public class AddStatusFilterDialogFragment extends BaseSupportDialogFragment imp
if (args == null || !args.containsKey(EXTRA_STATUS)) return new FilterItemInfo[0];
final ParcelableStatus status = args.getParcelable(EXTRA_STATUS);
final ArrayList<FilterItemInfo> list = new ArrayList<>();
list.add(new FilterItemInfo(FilterItemInfo.FILTER_TYPE_USER, status));
if (status.is_retweet) {
list.add(new FilterItemInfo(FilterItemInfo.FILTER_TYPE_USER, new UserItem(status.retweeted_by_user_id,
status.retweeted_by_user_name, status.retweeted_by_user_screen_name)));
}
if (status.is_quote) {
list.add(new FilterItemInfo(FilterItemInfo.FILTER_TYPE_USER, new UserItem(status.quoted_by_user_id,
status.quoted_by_user_name, status.quoted_by_user_screen_name)));
}
list.add(new FilterItemInfo(FilterItemInfo.FILTER_TYPE_USER, new UserItem(status.user_id,
status.user_name, status.user_screen_name)));
final ParcelableUserMention[] mentions = status.mentions;
if (mentions != null) {
for (final ParcelableUserMention mention : mentions) {
@ -169,25 +180,27 @@ public class AddStatusFilterDialogFragment extends BaseSupportDialogFragment imp
return list.toArray(new FilterItemInfo[list.size()]);
}
private String getName(final Object value) {
final FragmentActivity activity = getActivity();
final UserColorNameManager manager = UserColorNameManager.getInstance(activity);
final SharedPreferencesWrapper prefs = SharedPreferencesWrapper.getInstance(activity,
SharedPreferencesWrapper.SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE,
SharedPreferenceConstants.class);
final boolean nameFirst = prefs.getBoolean(KEY_NAME_FIRST);
private String getName(final UserColorNameManager manager, final Object value, boolean nameFirst) {
if (value instanceof ParcelableUserMention) {
final ParcelableUserMention mention = (ParcelableUserMention) value;
return manager.getDisplayName(mention.id, mention.name, mention.screen_name, nameFirst,
true);
} else if (value instanceof ParcelableStatus) {
final ParcelableStatus status = (ParcelableStatus) value;
return manager.getDisplayName(status.user_id, status.user_name, status.user_screen_name,
nameFirst, true);
} else if (value instanceof UserItem) {
final UserItem item = (UserItem) value;
return manager.getDisplayName(item.id, item.name, item.screen_name, nameFirst, true);
} else
return ParseUtils.parseString(value);
}
private static ContentValues createFilteredUser(UserItem item) {
if (item == null) return null;
final ContentValues values = new ContentValues();
values.put(Filters.Users.USER_ID, item.id);
values.put(Filters.Users.NAME, item.name);
values.put(Filters.Users.SCREEN_NAME, item.screen_name);
return values;
}
public static AddStatusFilterDialogFragment show(final FragmentManager fm, final ParcelableStatus status) {
final Bundle args = new Bundle();
args.putParcelable(EXTRA_STATUS, status);
@ -240,4 +253,15 @@ public class AddStatusFilterDialogFragment extends BaseSupportDialogFragment imp
}
private static class UserItem {
private final long id;
private final String name, screen_name;
public UserItem(long id, String name, String screen_name) {
this.id = id;
this.name = name;
this.screen_name = screen_name;
}
}
}

View File

@ -1009,28 +1009,30 @@ public class StatusFragment extends BaseSupportFragment implements LoaderCallbac
final ArrayList<ParcelableStatus> list = new ArrayList<>();
try {
ParcelableStatus status = params[0];
final long account_id = status.account_id;
if (Utils.isOfficialKeyAccount(context, account_id)) {
final Twitter twitter = Utils.getTwitterInstance(context, account_id, true);
final long accountId = status.account_id;
if (Utils.isOfficialKeyAccount(context, accountId)) {
final Twitter twitter = Utils.getTwitterInstance(context, accountId, true);
while (status.in_reply_to_status_id > 0 && !isCancelled()) {
status = Utils.findStatusInDatabases(context, account_id, status.in_reply_to_status_id);
final ParcelableStatus cached = Utils.findStatusInDatabases(context, accountId, status.in_reply_to_status_id);
if (cached == null) break;
status = cached;
publishProgress(status);
list.add(0, status);
}
final Paging paging = new Paging();
paging.setMaxId(status.id);
final List<ParcelableStatus> conversations = new ArrayList<>();
for (twitter4j.Status conversationItem : twitter.showConversation(status.id, paging)) {
if (conversationItem.getId() < status.id) {
final ParcelableStatus pStatus = new ParcelableStatus(conversationItem, account_id, false);
publishProgress(pStatus);
conversations.add(pStatus);
for (twitter4j.Status item : twitter.showConversation(status.id, paging)) {
if (item.getId() < status.id) {
final ParcelableStatus conversation = new ParcelableStatus(item, accountId, false);
publishProgress(conversation);
conversations.add(conversation);
}
}
list.addAll(0, conversations);
} else {
while (status.in_reply_to_status_id > 0 && !isCancelled()) {
status = Utils.findStatus(context, account_id, status.in_reply_to_status_id);
status = Utils.findStatus(context, accountId, status.in_reply_to_status_id);
publishProgress(status);
list.add(0, status);
}

View File

@ -284,7 +284,7 @@ public class UserFragment extends BaseSupportFragment implements OnClickListener
if (relationship.isTargetFollowingSource()) {
drawableRes = R.drawable.ic_follow_incoming;
} else {
drawableRes = R.drawable.ic_follow_requested;
drawableRes = R.drawable.ic_follow_pending;
}
} else {
mFollowButton.setText(R.string.follow);

View File

@ -199,22 +199,26 @@ public class ThemeUtils implements Constants {
public static void applyWindowBackground(Context context, Window window, int theme, String option, int alpha) {
if (isWindowFloating(context, theme)) return;
final int normalTheme = getThemeResource(theme);
if (VALUE_THEME_BACKGROUND_TRANSPARENT.equals(option)) {
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER);
window.setBackgroundDrawable(getWindowBackgroundFromThemeApplyAlpha(context, theme, alpha));
window.setBackgroundDrawable(getWindowBackgroundFromThemeApplyAlpha(context, normalTheme, alpha));
} else if (VALUE_THEME_BACKGROUND_SOLID.equals(option)) {
window.setBackgroundDrawable(new ColorDrawable(isDarkTheme(theme) ? Color.BLACK : Color.WHITE));
window.setBackgroundDrawable(new ColorDrawable(isDarkTheme(normalTheme) ? Color.BLACK : Color.WHITE));
} else {
window.setBackgroundDrawable(getWindowBackgroundFromTheme(context, normalTheme));
}
}
public static void applyWindowBackground(Context context, View window, int theme, String option, int alpha) {
if (isWindowFloating(context, theme)) return;
final int normalTheme = getThemeResource(theme);
if (VALUE_THEME_BACKGROUND_TRANSPARENT.equals(option)) {
ViewSupport.setBackground(window, getWindowBackgroundFromThemeApplyAlpha(context, theme, alpha));
ViewSupport.setBackground(window, getWindowBackgroundFromThemeApplyAlpha(context, normalTheme, alpha));
} else if (VALUE_THEME_BACKGROUND_SOLID.equals(option)) {
ViewSupport.setBackground(window, new ColorDrawable(isDarkTheme(theme) ? Color.BLACK : Color.WHITE));
ViewSupport.setBackground(window, new ColorDrawable(isDarkTheme(normalTheme) ? Color.BLACK : Color.WHITE));
} else {
ViewSupport.setBackground(window, getWindowBackground(context));
ViewSupport.setBackground(window, getWindowBackgroundFromTheme(context, normalTheme));
}
}

View File

@ -1183,13 +1183,14 @@ public final class Utils implements Constants, TwitterConstants {
return new ParcelableStatus(status, accountId, false);
}
public static ParcelableStatus findStatusInDatabases(final Context context, final long account_id,
final long status_id) {
@Nullable
public static ParcelableStatus findStatusInDatabases(final Context context, final long accountId,
final long statusId) {
if (context == null) return null;
final ContentResolver resolver = context.getContentResolver();
ParcelableStatus status = null;
final String where = Statuses.ACCOUNT_ID + " = " + account_id + " AND " + Statuses.STATUS_ID + " = "
+ status_id;
final String where = Statuses.ACCOUNT_ID + " = " + accountId + " AND " + Statuses.STATUS_ID + " = "
+ statusId;
for (final Uri uri : STATUSES_URIS) {
final Cursor cur = ContentResolverUtils.query(resolver, uri, Statuses.COLUMNS, where, null, null);
if (cur == null) {

View File

@ -409,6 +409,11 @@ public class TabPagerIndicator extends RecyclerView implements PagerIndicator, C
final int widthMeasureSpec = MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY);
child.measure(widthMeasureSpec, heightMeasureSpec);
}
@Override
protected boolean isLayoutRTL() {
return false;
}
}
public void updateAppearance() {

Binary file not shown.

After

Width:  |  Height:  |  Size: 798 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 646 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 399 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 581 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 618 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 472 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 800 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 414 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 753 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 550 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 948 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 651 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 413 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 716 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 295 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 117 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 693 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 291 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 204 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 109 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 487 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 697 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 492 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 966 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 308 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 117 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 876 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 699 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 420 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 413 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 915 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 505 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 514 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,27 @@
<?xml version="1.0" encoding="utf-8"?><!--
~ Twidere - Twitter client for Android
~
~ Copyright (C) 2012-2015 Mariotaku Lee <mariotaku.lee@gmail.com>
~
~ This program is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 3 of the License, or
~ (at your option) any later version.
~
~ This program is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_header_title"
style="?android:attr/listSeparatorTextViewStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/element_spacing_xsmall"
android:paddingEnd="0dp"
android:paddingStart="@dimen/element_spacing_small"
android:paddingTop="@dimen/element_spacing_xsmall" />

View File

@ -17,76 +17,72 @@
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="?actionBarSize"
android:baselineAligned="false"
android:divider="?android:dividerHorizontal"
android:dividerPadding="@dimen/element_spacing_normal"
android:gravity="center_vertical"
android:orientation="horizontal"
android:showDividers="middle">
android:baselineAligned="false">
<LinearLayout
android:layout_width="0dp"
<RelativeLayout
android:id="@+id/account_selector_button"
style="?actionButtonStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal">
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:clickable="true"
android:padding="@dimen/element_spacing_msmall">
<RelativeLayout
android:id="@+id/account_selector_button"
style="?actionButtonStyle"
<org.mariotaku.twidere.view.SquareShapedImageView
android:id="@+id/account_profile_image"
style="?profileImageStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:clickable="true"
android:padding="@dimen/element_spacing_msmall">
android:layout_gravity="center"
app:sivBackgroundColor="?android:colorBackground"
app:sivBorder="true"
app:sivBorderWidth="@dimen/line_width_compose_account_profile_image" />
<org.mariotaku.twidere.view.SquareShapedImageView
android:id="@+id/account_profile_image"
style="?profileImageStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center"
app:sivBackgroundColor="?android:colorBackground"
app:sivBorder="true"
app:sivBorderWidth="@dimen/line_width_compose_account_profile_image" />
<org.mariotaku.twidere.view.BadgeView
android:id="@+id/accounts_count"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignBottom="@id/account_profile_image"
android:layout_alignEnd="@id/account_profile_image"
android:layout_alignLeft="@id/account_profile_image"
android:layout_alignRight="@id/account_profile_image"
android:layout_alignStart="@id/account_profile_image"
android:layout_alignTop="@id/account_profile_image"
android:layout_gravity="center"
android:textColor="?android:colorForeground" />
</RelativeLayout>
<HorizontalScrollView
<org.mariotaku.twidere.view.BadgeView
android:id="@+id/accounts_count"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:layout_alignBottom="@id/account_profile_image"
android:layout_alignEnd="@id/account_profile_image"
android:layout_alignLeft="@id/account_profile_image"
android:layout_alignRight="@id/account_profile_image"
android:layout_alignStart="@id/account_profile_image"
android:layout_alignTop="@id/account_profile_image"
android:layout_gravity="center"
android:textColor="?android:colorForeground" />
<android.support.v7.widget.ActionMenuView
android:id="@+id/menu_bar"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center"
android:background="@null" />
</HorizontalScrollView>
</LinearLayout>
</RelativeLayout>
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_toEndOf="@+id/account_selector_button"
android:layout_toLeftOf="@+id/send"
android:layout_toRightOf="@+id/account_selector_button"
android:layout_toStartOf="@+id/send">
<android.support.v7.widget.ActionMenuView
android:id="@+id/menu_bar"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center"
android:background="@null" />
</HorizontalScrollView>
<LinearLayout
android:id="@+id/send"
style="?actionButtonStyle"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="0"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:contentDescription="@string/send"
android:gravity="center"
android:orientation="horizontal"
@ -117,4 +113,4 @@
android:src="@drawable/ic_action_send" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>

View File

@ -18,6 +18,7 @@
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
@ -50,31 +51,15 @@
android:padding="@dimen/element_spacing_normal"
tools:listitem="@layout/spinner_item_custom_tab_icon" />
<LinearLayout
<com.rengwuxian.materialedittext.MaterialEditText
android:id="@+id/tab_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="@dimen/element_spacing_normal">
<TextView
android:id="@+id/tab_type_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingEnd="0dp"
android:paddingLeft="@dimen/element_spacing_normal"
android:paddingRight="0dp"
android:paddingStart="@dimen/element_spacing_normal"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceSmall" />
<EditText
android:id="@+id/tab_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/name"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
android:layout_margin="@dimen/element_spacing_normal"
android:hint="@string/name"
android:singleLine="true"
android:textAppearance="?android:attr/textAppearanceMedium"
app:met_floatingLabelAlwaysShown="true" />
</LinearLayout>
<LinearLayout

View File

@ -39,8 +39,9 @@
android:layout_toRightOf="@+id/profile_image"
android:clickable="true"
app:bubbleColor="?colorAccent"
android:layoutDirection="rtl"
app:caretHeight="8dp"
app:caretPosition="topLeft"
app:caretPosition="topStart"
app:caretWidth="8dp"
app:cornerRadius="2dp">

View File

@ -31,7 +31,7 @@
android:clickable="true"
app:bubbleColor="?messageBubbleColor"
app:caretHeight="8dp"
app:caretPosition="bottomRight"
app:caretPosition="bottomEnd"
app:caretWidth="8dp"
app:cornerRadius="2dp">

View File

@ -102,7 +102,7 @@
android:layout_toStartOf="@+id/send"
app:bubbleColor="?messageBubbleColor"
app:caretHeight="8dp"
app:caretPosition="topRight"
app:caretPosition="topEnd"
app:caretWidth="8dp"
app:cornerRadius="2dp">

View File

@ -75,10 +75,8 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingEnd="0dp"
android:paddingLeft="@dimen/element_spacing_normal"
android:paddingRight="0dp"
android:paddingStart="@dimen/element_spacing_normal"
android:layout_marginLeft="@dimen/element_spacing_normal"
android:layout_marginStart="@dimen/element_spacing_normal"
android:paddingTop="@dimen/element_spacing_normal"
android:text="@string/profile_image"
android:textAllCaps="true"
@ -151,10 +149,8 @@
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingEnd="0dp"
android:paddingLeft="@dimen/element_spacing_normal"
android:paddingRight="0dp"
android:paddingStart="@dimen/element_spacing_normal"
android:layout_marginLeft="@dimen/element_spacing_normal"
android:layout_marginStart="@dimen/element_spacing_normal"
android:paddingTop="@dimen/element_spacing_normal"
android:text="@string/profile_banner"
android:textAllCaps="true"

View File

@ -1,21 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:layout_height="?actionBarSize"
tools:layout_width="match_parent">
<org.mariotaku.twidere.view.TwidereToolbar
android:id="@+id/action_bar"
style="?attr/toolbarStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="match_parent"
app:contentInsetEnd="0dp"
app:contentInsetStart="0dp"
app:navigationContentDescription="@string/abc_action_bar_up_description">
app:contentInsetStart="0dp">
<org.mariotaku.twidere.view.TabPagerIndicator
android:id="@+id/main_tabs"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
app:tabDisplayOption="icon"
app:tabExpandEnabled="true"
app:tabHorizontalPadding="@dimen/element_spacing_normal" />
@ -25,7 +26,7 @@
android:id="@+id/action_context_bar"
style="?attr/actionModeStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:theme="?attr/actionBarTheme"
android:visibility="gone" />
</merge>

View File

@ -21,7 +21,7 @@
<view xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
class="org.mariotaku.twidere.view.TabPagerIndicator$ItemLayout"
android:layout_width="wrap_content"
android:layout_width="0dp"
android:layout_height="match_parent"
android:background="?selectableItemBackground"
tools:layout_height="?actionBarSize">

View File

@ -16,34 +16,14 @@
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<!--
~ Twidere - Twitter client for Android
~
~ Copyright (C) 2012-2014 Mariotaku Lee <mariotaku.lee@gmail.com>
~
~ This program is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 3 of the License, or
~ (at your option) any later version.
~
~ This program is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/list_header_title"
style="?android:attr/listSeparatorTextViewStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/element_spacing_xsmall"
android:paddingEnd="0dp"
android:paddingLeft="@dimen/element_spacing_small"
android:paddingRight="0dp"
android:paddingStart="@dimen/element_spacing_small"
android:paddingTop="@dimen/element_spacing_xsmall" />
android:paddingTop="@dimen/element_spacing_xsmall"
tools:ignore="RtlHardcoded" />

View File

@ -1,21 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:title="@string/notifications">
<org.mariotaku.twidere.preference.NotificationContentPreference
android:key="content_to_notify"
android:title="@string/content_to_notify"/>
android:title="@string/content_to_notify" />
<org.mariotaku.twidere.preference.RingtonePreference
<RingtonePreference
android:key="notification_ringtone"
android:title="@string/notification_ringtone"/>
android:ringtoneType="notification"
android:showDefault="true"
android:showSilent="true"
android:title="@string/notification_ringtone" />
<org.mariotaku.twidere.preference.ColorPickerPreference
android:key="notification_light_color"
android:title="@string/notification_light_color"
app:defaultColor="@color/branding_color"/>
app:defaultColor="@color/branding_color" />
<PreferenceCategory
android:key="cat_notifications_type"
@ -26,21 +28,21 @@
app:dependencyKey="home_timeline_notification"
app:dependencyValueDefault="false"
app:dependencyValues="@array/dependency_values_true"
app:notificationType="none"/>
app:notificationType="none" />
<org.mariotaku.twidere.preference.NotificationTypePreference
android:key="notification_type_mentions"
android:title="@string/mentions"
app:dependencyKey="mentions_notification"
app:dependencyValueDefault="false"
app:dependencyValues="@array/dependency_values_true"
app:notificationType="vibration|light"/>
app:notificationType="vibration|light" />
<org.mariotaku.twidere.preference.NotificationTypePreference
android:key="notification_type_direct_messages"
android:title="@string/direct_messages"
app:dependencyKey="direct_messages_notification"
app:dependencyValueDefault="false"
app:dependencyValues="@array/dependency_values_true"
app:notificationType="ringtone|vibration|light"/>
app:notificationType="ringtone|vibration|light" />
</PreferenceCategory>
<PreferenceCategory
android:key="cat_other_settings"
@ -49,7 +51,7 @@
android:defaultValue="false"
android:key="notification_following_only"
android:summary="@string/following_only_summary"
android:title="@string/following_only"/>
android:title="@string/following_only" />
</PreferenceCategory>
</PreferenceScreen>

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<!-- Generator: Sketch 3.3.1 (12005) - http://www.bohemiancoding.com/sketch -->
<title>Artboard 1</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="Artboard-1" sketch:type="MSArtboardGroup" fill="#FFFFFF">
<g id="follow-bi-directionally" sketch:type="MSLayerGroup" transform="translate(7.250000, 8.500000)">
<g id="Group" sketch:type="MSShapeGroup">
<path d="M12.17175,5.34925 L12.17175,0.19575 C15.37575,3.01775 18.34725,5.63475 21.3935,8.31775 C18.3355,11.00875 15.383,13.60675 12.198,16.40925 L12.198,11.32625 L0.0605,11.32625 L0.0605,5.34925 C4.031,5.34925 8.00825,5.34925 12.17175,5.34925 L12.17175,5.34925 Z" id="Shape"></path>
<path d="M21.335,13.5555 L21.335,18.70575 L33.45425,18.70575 L33.45425,24.6775 L21.33125,24.6775 L21.33125,29.8035 C18.13075,26.98675 15.18125,24.39125 12.10825,21.687 C15.13575,19.01875 18.086,16.41875 21.335,13.5555 L21.335,13.5555 Z" id="Shape"></path>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<!-- Generator: Sketch 3.3.1 (12005) - http://www.bohemiancoding.com/sketch -->
<title>Artboard 1</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="Artboard-1" sketch:type="MSArtboardGroup" fill="#FFFFFF">
<g id="blocked" sketch:type="MSLayerGroup" transform="translate(7.000000, 7.000000)">
<g id="Group" sketch:type="MSShapeGroup">
<path d="M0.324,17.00275 C0.32025,7.83675 7.88325,0.28525 17.02825,0.32375 C26.22025,0.3625 33.75425,7.93675 33.67575,17.05975 C33.59675,26.232 26.18725,33.63025 17.034,33.67625 C7.89325,33.72225 0.328,26.17325 0.324,17.00275 L0.324,17.00275 Z M27.5765,24.97725 C31.8975,19.8075 31.01475,11.489 25.68825,6.89025 C20.04875,2.0215 12.129,3.363 9.08875,6.49125 C15.2315,12.6335 21.3735,18.775 27.5765,24.97725 L27.5765,24.97725 Z M6.406,9.02725 C2.0495,14.38775 3.03475,22.7505 8.51175,27.282 C14.192,31.982 22.02075,30.549 24.89025,27.51875 C18.74725,21.3735 12.60675,15.23075 6.406,9.02725 L6.406,9.02725 Z" id="Shape"></path>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<!-- Generator: Sketch 3.3.1 (12005) - http://www.bohemiancoding.com/sketch -->
<title>Artboard</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="Artboard" sketch:type="MSArtboardGroup" fill="#FFFFFF">
<g id="following-me" sketch:type="MSLayerGroup" transform="translate(24.500000, 24.000000) scale(-1, 1) translate(-24.500000, -24.000000) translate(8.000000, 13.500000)">
<g id="Group" sketch:type="MSShapeGroup">
<path d="M32.8755,10.55225 C28.814,14.00275 24.895,17.332 20.79975,20.81125 L20.79975,14.38675 L0.21125,14.38675 L0.21125,6.832 L20.6745,6.832 L20.6745,0.18875 C24.87525,3.75675 28.81025,7.09925 32.8755,10.55225 L32.8755,10.55225 Z" id="Shape"></path>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<!-- Generator: Sketch 3.3.1 (12005) - http://www.bohemiancoding.com/sketch -->
<title>Artboard 1</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="Artboard-1" sketch:type="MSArtboardGroup" fill="#FFFFFF">
<g id="stranger" sketch:type="MSLayerGroup" transform="translate(8.000000, 8.000000)">
<g id="Group" sketch:type="MSShapeGroup">
<path d="M31.9387509,19.5440003 L19.4712502,19.5440003 L19.4712502,31.9242493 L12.456,31.9242493 L12.456,19.5440003 L0.07575,19.544 L0.07575,12.456 L12.456,12.456 L12.456,0.07575 L19.47125,0.07575 L19.4712502,12.456 L31.93875,12.456 L31.9387509,19.5440003 Z" id="Shape"></path>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<!-- Generator: Sketch 3.3.1 (12005) - http://www.bohemiancoding.com/sketch -->
<title>Artboard</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="Artboard" sketch:type="MSArtboardGroup" fill="#FFFFFF">
<g id="following-me" sketch:type="MSLayerGroup" transform="translate(8.000000, 13.500000)">
<g id="Group" sketch:type="MSShapeGroup">
<path d="M32.8755,10.55225 C28.814,14.00275 24.895,17.332 20.79975,20.81125 L20.79975,14.38675 L0.21125,14.38675 L0.21125,6.832 L20.6745,6.832 L20.6745,0.18875 C24.87525,3.75675 28.81025,7.09925 32.8755,10.55225 L32.8755,10.55225 Z" id="Shape"></path>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<!-- Generator: Sketch 3.3.1 (12005) - http://www.bohemiancoding.com/sketch -->
<title>Artboard 1</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="Artboard-1" sketch:type="MSArtboardGroup" fill="#FFFFFF">
<g id="requesting" sketch:type="MSLayerGroup" transform="translate(7.250000, 7.250000)">
<g id="Group" sketch:type="MSShapeGroup">
<path d="M16.72575,0.097 C25.88625,0.074 33.46675,7.662 33.403,16.791 C33.339,25.961 25.91725,33.373 16.76875,33.40325 C7.60925,33.43325 0.038,25.852 0.09675,16.709 C0.15575,7.534 7.5775,0.11975 16.72575,0.097 L16.72575,0.097 Z M30.0715,16.778 C30.09175,9.3785 24.1845,3.4465 16.778,3.4285 C9.37575,3.41075 3.44425,9.31725 3.4285,16.722 C3.41275,24.1265 9.31525,30.054 16.722,30.0715 C24.125,30.089 30.051,24.18775 30.0715,16.778 L30.0715,16.778 Z" id="Shape"></path>
<path d="M17.5415,8.511 C17.5415,10.10425 17.5415001,16.7500366 17.5415001,16.7500366 C17.5415001,16.7500366 23.60825,20.76775 25.05275,21.62475 C24.63975,22.29 24.25875,22.90375 23.80775,23.6305 C20.978,21.9295 15.10425,18.111 15.10225,17.86325 C15.0785,14.7955 15.08675,11.727 15.08675,8.511 L17.5415,8.511 Z" id="Shape"></path>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">
<!-- Generator: Sketch 3.3.1 (12005) - http://www.bohemiancoding.com/sketch -->
<title>Artboard 1</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">
<g id="Artboard-1" sketch:type="MSArtboardGroup" stroke-width="1.5" stroke="#FFFFFF" fill="#FDC02F">
<g id="lock" sketch:type="MSLayerGroup" transform="translate(3.750000, 2.062500)">
<g id="Group" sketch:type="MSShapeGroup">
<path d="M4.62825,10.6689375 C4.62825,10.505375 4.62675,10.38325 4.6285,10.26125 C4.64525,9.106125 4.599625,7.946 4.6915625,6.7968125 C4.953625,3.522625 7.6290625,0.6669375 10.8781875,0.1205625 C15.043,-0.5798125 18.85075,1.99175 19.7105,6.106875 C19.822375,6.6424375 19.851125,7.2009375 19.865,7.7501875 C19.8891875,8.7065625 19.8716875,9.6639375 19.8716875,10.662375 C20.369375,10.662375 20.84575,10.6561875 21.3219375,10.6635625 C22.734875,10.6854375 23.8629375,11.4691875 24.27425,12.7424375 C24.374875,13.054 24.430875,13.3943125 24.4318125,13.721625 C24.442625,17.4183125 24.4443125,21.115125 24.4361875,24.811875 C24.4323125,26.537875 23.114,27.87275 21.393625,27.87525 C15.30175,27.8841875 9.2099375,27.88375 3.118125,27.875625 C1.393625,27.873375 0.06825,26.544875 0.064,24.8238125 C0.054875,21.127125 0.0554375,17.4303125 0.0636875,13.7335625 C0.0675,12.0375625 1.3130625,10.7495 3.010125,10.67275 C3.5378125,10.6488125 4.0675,10.6689375 4.62825,10.6689375 L4.62825,10.6689375 L4.62825,10.6689375 Z M16.9548125,10.642375 C16.9643125,10.5655625 16.9759375,10.5154375 16.9759375,10.4651875 C16.9768125,9.5173125 16.9841875,8.5693125 16.973875,7.6215625 C16.96375,6.6959375 16.71625,5.8378125 16.216375,5.051625 C15.154,3.380875 13.04725,2.537875 11.1301875,3.0259375 C9.122625,3.5370625 7.6531875,5.2513125 7.5568125,7.2601875 C7.5054375,8.33075 7.53175,9.405 7.5244375,10.477625 C7.524125,10.526875 7.538375,10.57625 7.548375,10.6424375 C10.683125,10.642375 13.803125,10.642375 16.9548125,10.642375 L16.9548125,10.642375 L16.9548125,10.642375 Z M12.256125,22.080625 C13.9380625,22.0766875 15.2993125,20.718 15.3009375,19.041625 C15.302375,17.3558125 13.9235,15.9895625 12.2283125,15.99725 C10.5549375,16.004875 9.188375,17.383875 9.1994375,19.05375 C9.2105,20.7331875 10.575125,22.0845625 12.256125,22.080625 L12.256125,22.080625 L12.256125,22.080625 Z" id="Shape"></path>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB