Commit 3fecce96 authored by DrKLO's avatar DrKLO

Implemented own ActionBar and Fragments, swipe back navigation,...

Implemented own ActionBar and Fragments, swipe back navigation, https://github.com/DrKLO/Telegram/issues/424
parent 644fc7cc
...@@ -82,7 +82,7 @@ android { ...@@ -82,7 +82,7 @@ android {
defaultConfig { defaultConfig {
minSdkVersion 8 minSdkVersion 8
targetSdkVersion 19 targetSdkVersion 19
versionCode 233 versionCode 234
versionName "1.4.14" versionName "1.4.15"
} }
} }
...@@ -95,19 +95,6 @@ ...@@ -95,19 +95,6 @@
<data android:mimeType="vnd.android.cursor.item/vnd.org.telegram.messenger.android.profile"/> <data android:mimeType="vnd.android.cursor.item/vnd.org.telegram.messenger.android.profile"/>
</intent-filter> </intent-filter>
</activity> </activity>
<activity
android:name="org.telegram.ui.LoginActivity"
android:windowSoftInputMode="adjustResize"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait">
</activity>
<activity
android:name="org.telegram.ui.CountrySelectActivity"
android:windowSoftInputMode="adjustResize"
android:theme="@style/Theme.TMessages"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait">
</activity>
<activity <activity
android:name="org.telegram.ui.IntroActivity" android:name="org.telegram.ui.IntroActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize" android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
......
...@@ -456,6 +456,19 @@ public class LocaleController { ...@@ -456,6 +456,19 @@ public class LocaleController {
} }
} }
public static String formatStringSimple(String string, Object... args) {
try {
if (getInstance().currentLocale != null) {
return String.format(getInstance().currentLocale, string, args);
} else {
return String.format(string, args);
}
} catch (Exception e) {
FileLog.e("tmessages", e);
return "LOC_ERR: " + string;
}
}
public void onDeviceConfigurationChange(Configuration newConfig) { public void onDeviceConfigurationChange(Configuration newConfig) {
if (changingConfiguration) { if (changingConfiguration) {
return; return;
......
...@@ -564,9 +564,11 @@ public class MessagesStorage { ...@@ -564,9 +564,11 @@ public class MessagesStorage {
} }
ids += uid; ids += uid;
} }
int totalCount = 0;
SQLiteCursor cursor = database.queryFinalized(String.format(Locale.US, "SELECT uid, read_state, out FROM messages WHERE mid IN(%s)", ids)); SQLiteCursor cursor = database.queryFinalized(String.format(Locale.US, "SELECT uid, read_state, out FROM messages WHERE mid IN(%s)", ids));
while (cursor.next()) { while (cursor.next()) {
int out = cursor.intValue(2); int out = cursor.intValue(2);
totalCount++;
if (out != 0) { if (out != 0) {
continue; continue;
} }
...@@ -588,6 +590,10 @@ public class MessagesStorage { ...@@ -588,6 +590,10 @@ public class MessagesStorage {
} }
cursor.dispose(); cursor.dispose();
if (totalCount != messages.size()) {
FileLog.e("tmessages", "messages read mismatch!");
}
cursor = database.queryFinalized(String.format(Locale.US, "SELECT did, unread_count FROM dialogs WHERE did IN(%s)", dialogsToReload)); cursor = database.queryFinalized(String.format(Locale.US, "SELECT did, unread_count FROM dialogs WHERE did IN(%s)", dialogsToReload));
while (cursor.next()) { while (cursor.next()) {
long did = cursor.longValue(0); long did = cursor.longValue(0);
......
...@@ -205,7 +205,7 @@ public class Utilities { ...@@ -205,7 +205,7 @@ public class Utilities {
} }
public static int dp(int value) { public static int dp(int value) {
return (int)(density * value); return (int)(Math.max(1, density * value));
} }
public static int dpf(float value) { public static int dpf(float value) {
......
...@@ -24,7 +24,6 @@ import android.graphics.Bitmap; ...@@ -24,7 +24,6 @@ import android.graphics.Bitmap;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Handler; import android.os.Handler;
import android.os.PowerManager; import android.os.PowerManager;
import android.view.ViewConfiguration;
import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil; import com.google.android.gms.common.GooglePlayServicesUtil;
...@@ -41,10 +40,7 @@ import org.telegram.messenger.NativeLoader; ...@@ -41,10 +40,7 @@ import org.telegram.messenger.NativeLoader;
import org.telegram.messenger.ScreenReceiver; import org.telegram.messenger.ScreenReceiver;
import org.telegram.messenger.UserConfig; import org.telegram.messenger.UserConfig;
import org.telegram.messenger.Utilities; import org.telegram.messenger.Utilities;
import org.telegram.ui.Views.BaseFragment;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
...@@ -64,8 +60,6 @@ public class ApplicationLoader extends Application { ...@@ -64,8 +60,6 @@ public class ApplicationLoader extends Application {
private static volatile boolean applicationInited = false; private static volatile boolean applicationInited = false;
public static volatile boolean isScreenOn = false; public static volatile boolean isScreenOn = false;
public static ArrayList<BaseFragment> fragmentsStack = new ArrayList<BaseFragment>();
public static void postInitApplication() { public static void postInitApplication() {
if (applicationInited) { if (applicationInited) {
return; return;
...@@ -149,17 +143,6 @@ public class ApplicationLoader extends Application { ...@@ -149,17 +143,6 @@ public class ApplicationLoader extends Application {
java.lang.System.setProperty("java.net.preferIPv4Stack", "true"); java.lang.System.setProperty("java.net.preferIPv4Stack", "true");
java.lang.System.setProperty("java.net.preferIPv6Addresses", "false"); java.lang.System.setProperty("java.net.preferIPv6Addresses", "false");
try {
ViewConfiguration config = ViewConfiguration.get(this);
Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
if(menuKeyField != null) {
menuKeyField.setAccessible(true);
menuKeyField.setBoolean(config, false);
}
} catch (Exception e) {
e.printStackTrace();
}
startPushService(); startPushService();
} }
......
...@@ -30,7 +30,6 @@ import org.telegram.messenger.R; ...@@ -30,7 +30,6 @@ import org.telegram.messenger.R;
import org.telegram.messenger.Utilities; import org.telegram.messenger.Utilities;
import org.telegram.objects.MessageObject; import org.telegram.objects.MessageObject;
import org.telegram.ui.Views.ImageReceiver; import org.telegram.ui.Views.ImageReceiver;
import org.telegram.ui.Views.OnSwipeTouchListener;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
...@@ -41,8 +40,6 @@ public class ChatBaseCell extends BaseCell { ...@@ -41,8 +40,6 @@ public class ChatBaseCell extends BaseCell {
public abstract void didPressedCancelSendButton(ChatBaseCell cell); public abstract void didPressedCancelSendButton(ChatBaseCell cell);
public abstract void didLongPressed(ChatBaseCell cell); public abstract void didLongPressed(ChatBaseCell cell);
public abstract boolean canPerformActions(); public abstract boolean canPerformActions();
public boolean onSwipeLeft();
public boolean onSwipeRight();
} }
public boolean isChat = false; public boolean isChat = false;
...@@ -118,7 +115,6 @@ public class ChatBaseCell extends BaseCell { ...@@ -118,7 +115,6 @@ public class ChatBaseCell extends BaseCell {
private int pressCount = 0; private int pressCount = 0;
private CheckForLongPress pendingCheckForLongPress = null; private CheckForLongPress pendingCheckForLongPress = null;
private CheckForTap pendingCheckForTap = null; private CheckForTap pendingCheckForTap = null;
private OnSwipeTouchListener onSwipeTouchListener;
private final class CheckForTap implements Runnable { private final class CheckForTap implements Runnable {
public void run() { public void run() {
...@@ -153,23 +149,6 @@ public class ChatBaseCell extends BaseCell { ...@@ -153,23 +149,6 @@ public class ChatBaseCell extends BaseCell {
media = isMedia; media = isMedia;
avatarImage = new ImageReceiver(); avatarImage = new ImageReceiver();
avatarImage.parentView = new WeakReference<View>(this); avatarImage.parentView = new WeakReference<View>(this);
onSwipeTouchListener = new OnSwipeTouchListener() {
public void onSwipeRight() {
if (delegate != null && delegate.onSwipeRight()) {
MotionEvent event = MotionEvent.obtain(0, 0, MotionEvent.ACTION_CANCEL, 0, 0, 0);
onTouchEvent(event);
event.recycle();
}
}
public void onSwipeLeft() {
if (delegate != null && delegate.onSwipeLeft()) {
MotionEvent event = MotionEvent.obtain(0, 0, MotionEvent.ACTION_CANCEL, 0, 0, 0);
onTouchEvent(event);
event.recycle();
}
}
};
} }
@Override @Override
...@@ -384,10 +363,6 @@ public class ChatBaseCell extends BaseCell { ...@@ -384,10 +363,6 @@ public class ChatBaseCell extends BaseCell {
} }
} }
protected void checkSwipes(MotionEvent event) {
onSwipeTouchListener.onTouch(this, event);
}
@Override @Override
public boolean onTouchEvent(MotionEvent event) { public boolean onTouchEvent(MotionEvent event) {
boolean result = false; boolean result = false;
......
...@@ -135,7 +135,6 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD ...@@ -135,7 +135,6 @@ public class ChatMediaCell extends ChatBaseCell implements MediaController.FileD
boolean result = false; boolean result = false;
int side = Utilities.dp(44); int side = Utilities.dp(44);
checkSwipes(event);
if (event.getAction() == MotionEvent.ACTION_DOWN) { if (event.getAction() == MotionEvent.ACTION_DOWN) {
if (delegate == null || delegate.canPerformActions()) { if (delegate == null || delegate.canPerformActions()) {
if (buttonState != -1 && x >= buttonX && x <= buttonX + side && y >= buttonY && y <= buttonY + side) { if (buttonState != -1 && x >= buttonX && x <= buttonX + side && y >= buttonY && y <= buttonY + side) {
......
...@@ -482,7 +482,7 @@ public class DialogCell extends BaseCell { ...@@ -482,7 +482,7 @@ public class DialogCell extends BaseCell {
messageString = Emoji.replaceEmoji(Html.fromHtml(String.format("<font color=#316f9f>%s:</font> <font color=#316f9f>%s</font>", name, message.messageText)), messagePaint.getFontMetricsInt(), Utilities.dp(20)); messageString = Emoji.replaceEmoji(Html.fromHtml(String.format("<font color=#316f9f>%s:</font> <font color=#316f9f>%s</font>", name, message.messageText)), messagePaint.getFontMetricsInt(), Utilities.dp(20));
} else { } else {
if (message.messageOwner.message != null) { if (message.messageOwner.message != null) {
messageString = Emoji.replaceEmoji(Html.fromHtml(String.format("<font color=#316f9f>%s:</font> <font color=#808080>%s</font>", name, message.messageOwner.message.replace("\n", " "))), messagePaint.getFontMetricsInt(), Utilities.dp(20)); messageString = Emoji.replaceEmoji(Html.fromHtml(String.format("<font color=#316f9f>%s:</font> <font color=#808080>%s</font>", name, message.messageOwner.message.replace("\n", " ").replace("<", "&lt;").replace(">", "&gt;"))), messagePaint.getFontMetricsInt(), Utilities.dp(20));
} }
} }
} else { } else {
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -11,13 +11,10 @@ package org.telegram.ui; ...@@ -11,13 +11,10 @@ package org.telegram.ui;
import android.app.Activity; import android.app.Activity;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.inputmethod.EditorInfo; import android.view.inputmethod.EditorInfo;
import android.widget.Button; import android.widget.Button;
import android.widget.EditText; import android.widget.EditText;
...@@ -28,7 +25,7 @@ import org.telegram.messenger.TLRPC; ...@@ -28,7 +25,7 @@ import org.telegram.messenger.TLRPC;
import org.telegram.messenger.MessagesController; import org.telegram.messenger.MessagesController;
import org.telegram.messenger.R; import org.telegram.messenger.R;
import org.telegram.messenger.Utilities; import org.telegram.messenger.Utilities;
import org.telegram.ui.Views.BaseFragment; import org.telegram.ui.Views.ActionBar.BaseFragment;
public class ChatProfileChangeNameActivity extends BaseFragment { public class ChatProfileChangeNameActivity extends BaseFragment {
private EditText firstNameField; private EditText firstNameField;
...@@ -36,8 +33,8 @@ public class ChatProfileChangeNameActivity extends BaseFragment { ...@@ -36,8 +33,8 @@ public class ChatProfileChangeNameActivity extends BaseFragment {
private int chat_id; private int chat_id;
private View doneButton; private View doneButton;
public ChatProfileChangeNameActivity() { public ChatProfileChangeNameActivity(Bundle args) {
animationType = 1; super(args);
} }
@Override @Override
...@@ -48,18 +45,32 @@ public class ChatProfileChangeNameActivity extends BaseFragment { ...@@ -48,18 +45,32 @@ public class ChatProfileChangeNameActivity extends BaseFragment {
} }
@Override @Override
public void onFragmentDestroy() { public View createView(LayoutInflater inflater, ViewGroup container) {
super.onFragmentDestroy(); if (fragmentView == null) {
} actionBarLayer.setCustomView(R.layout.settings_do_action_layout);
@Override Button cancelButton = (Button)actionBarLayer.findViewById(R.id.cancel_button);
public void onCreate(Bundle savedInstanceState) { cancelButton.setOnClickListener(new View.OnClickListener() {
super.onCreate(savedInstanceState); @Override
} public void onClick(View view) {
finishFragment();
}
});
doneButton = actionBarLayer.findViewById(R.id.done_button);
doneButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (firstNameField.getText().length() != 0) {
saveName();
finishFragment();
}
}
});
cancelButton.setText(LocaleController.getString("Cancel", R.string.Cancel));
TextView textView = (TextView)doneButton.findViewById(R.id.done_button_text);
textView.setText(LocaleController.getString("Done", R.string.Done));
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (fragmentView == null) {
fragmentView = inflater.inflate(R.layout.chat_profile_change_name_layout, container, false); fragmentView = inflater.inflate(R.layout.chat_profile_change_name_layout, container, false);
TLRPC.Chat currentChat = MessagesController.getInstance().chats.get(chat_id); TLRPC.Chat currentChat = MessagesController.getInstance().chats.get(chat_id);
...@@ -90,54 +101,8 @@ public class ChatProfileChangeNameActivity extends BaseFragment { ...@@ -90,54 +101,8 @@ public class ChatProfileChangeNameActivity extends BaseFragment {
return fragmentView; return fragmentView;
} }
@Override
public boolean canApplyUpdateStatus() {
return false;
}
@Override
public void applySelfActionBar() {
if (parentActivity == null) {
return;
}
ActionBar actionBar = parentActivity.getSupportActionBar();
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayHomeAsUpEnabled(false);
actionBar.setCustomView(R.layout.settings_do_action_layout);
Button cancelButton = (Button)actionBar.getCustomView().findViewById(R.id.cancel_button);
cancelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finishFragment();
}
});
doneButton = actionBar.getCustomView().findViewById(R.id.done_button);
doneButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (firstNameField.getText().length() != 0) {
saveName();
finishFragment();
}
}
});
cancelButton.setText(LocaleController.getString("Cancel", R.string.Cancel));
TextView textView = (TextView)doneButton.findViewById(R.id.done_button_text);
textView.setText(LocaleController.getString("Done", R.string.Done));
}
@Override @Override
public void onResume() { public void onResume() {
super.onResume();
if (getActivity() == null) {
return;
}
((LaunchActivity)parentActivity).updateActionBar();
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE);
boolean animations = preferences.getBoolean("view_animations", true); boolean animations = preferences.getBoolean("view_animations", true);
if (!animations) { if (!animations) {
...@@ -147,31 +112,9 @@ public class ChatProfileChangeNameActivity extends BaseFragment { ...@@ -147,31 +112,9 @@ public class ChatProfileChangeNameActivity extends BaseFragment {
} }
@Override @Override
public Animation onCreateAnimation(int transit, boolean enter, int nextAnim) { public void onOpenAnimationEnd() {
if (nextAnim != 0) { firstNameField.requestFocus();
Animation anim = AnimationUtils.loadAnimation(getActivity(), nextAnim); Utilities.showKeyboard(firstNameField);
anim.setAnimationListener(new Animation.AnimationListener() {
public void onAnimationStart(Animation animation) {
ChatProfileChangeNameActivity.this.onAnimationStart();
}
public void onAnimationRepeat(Animation animation) {
}
public void onAnimationEnd(Animation animation) {
ChatProfileChangeNameActivity.this.onAnimationEnd();
firstNameField.requestFocus();
Utilities.showKeyboard(firstNameField);
}
});
return anim;
} else {
return super.onCreateAnimation(transit, enter, nextAnim);
}
} }
private void saveName() { private void saveName() {
......
...@@ -12,29 +12,25 @@ import android.app.Activity; ...@@ -12,29 +12,25 @@ import android.app.Activity;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.graphics.Typeface; import android.graphics.Typeface;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.inputmethod.EditorInfo; import android.view.inputmethod.EditorInfo;
import android.widget.Button; import android.widget.Button;
import android.widget.EditText; import android.widget.EditText;
import android.widget.TextView; import android.widget.TextView;
import org.telegram.PhoneFormat.PhoneFormat; import org.telegram.PhoneFormat.PhoneFormat;
import org.telegram.messenger.ContactsController;
import org.telegram.messenger.LocaleController; import org.telegram.messenger.LocaleController;
import org.telegram.messenger.TLRPC; import org.telegram.messenger.TLRPC;
import org.telegram.messenger.ConnectionsManager;
import org.telegram.messenger.ContactsController;
import org.telegram.messenger.MessagesController; import org.telegram.messenger.MessagesController;
import org.telegram.messenger.NotificationCenter; import org.telegram.messenger.NotificationCenter;
import org.telegram.messenger.R; import org.telegram.messenger.R;
import org.telegram.messenger.Utilities; import org.telegram.messenger.Utilities;
import org.telegram.ui.Views.BackupImageView; import org.telegram.ui.Views.BackupImageView;
import org.telegram.ui.Views.BaseFragment; import org.telegram.ui.Views.ActionBar.BaseFragment;
public class ContactAddActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate { public class ContactAddActivity extends BaseFragment implements NotificationCenter.NotificationCenterDelegate {
private int user_id; private int user_id;
...@@ -46,14 +42,17 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent ...@@ -46,14 +42,17 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent
private TextView onlineText; private TextView onlineText;
private TextView phoneText; private TextView phoneText;
public ContactAddActivity(Bundle args) {
super(args);
}
@Override @Override
public boolean onFragmentCreate() { public boolean onFragmentCreate() {
super.onFragmentCreate();
NotificationCenter.getInstance().addObserver(this, MessagesController.updateInterfaces); NotificationCenter.getInstance().addObserver(this, MessagesController.updateInterfaces);
user_id = getArguments().getInt("user_id", 0); user_id = getArguments().getInt("user_id", 0);
phone = getArguments().getString("phone"); phone = getArguments().getString("phone");
TLRPC.User user = MessagesController.getInstance().users.get(user_id); TLRPC.User user = MessagesController.getInstance().users.get(user_id);
return user != null; return user != null && super.onFragmentCreate();
} }
@Override @Override
...@@ -63,8 +62,35 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent ...@@ -63,8 +62,35 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent
} }
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { public View createView(LayoutInflater inflater, ViewGroup container) {
if (fragmentView == null) { if (fragmentView == null) {
actionBarLayer.setCustomView(R.layout.settings_do_action_layout);
Button cancelButton = (Button)actionBarLayer.findViewById(R.id.cancel_button);
cancelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finishFragment();
}
});
doneButton = actionBarLayer.findViewById(R.id.done_button);
doneButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (firstNameField.getText().length() != 0) {
TLRPC.User user = MessagesController.getInstance().users.get(user_id);
user.first_name = firstNameField.getText().toString();
user.last_name = lastNameField.getText().toString();
ContactsController.getInstance().addContact(user);
finishFragment();
NotificationCenter.getInstance().postNotificationName(MessagesController.updateInterfaces, MessagesController.UPDATE_MASK_NAME);
}
}
});
cancelButton.setText(LocaleController.getString("Cancel", R.string.Cancel));
TextView textView = (TextView)doneButton.findViewById(R.id.done_button_text);
textView.setText(LocaleController.getString("Done", R.string.Done));
fragmentView = inflater.inflate(R.layout.contact_add_layout, container, false); fragmentView = inflater.inflate(R.layout.contact_add_layout, container, false);
TLRPC.User user = MessagesController.getInstance().users.get(user_id); TLRPC.User user = MessagesController.getInstance().users.get(user_id);
...@@ -149,68 +175,8 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent ...@@ -149,68 +175,8 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent
} }
} }
@Override
public boolean canApplyUpdateStatus() {
return false;
}
@Override
public void applySelfActionBar() {
if (parentActivity == null) {
return;
}
ActionBar actionBar = parentActivity.getSupportActionBar();
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayHomeAsUpEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
TextView title = (TextView)parentActivity.findViewById(R.id.action_bar_title);
if (title == null) {
final int subtitleId = parentActivity.getResources().getIdentifier("action_bar_title", "id", "android");
title = (TextView)parentActivity.findViewById(subtitleId);
}
if (title != null) {
title.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
title.setCompoundDrawablePadding(0);
}
actionBar.setCustomView(R.layout.settings_do_action_layout);
Button cancelButton = (Button)actionBar.getCustomView().findViewById(R.id.cancel_button);
cancelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finishFragment();
}
});
doneButton = actionBar.getCustomView().findViewById(R.id.done_button);
doneButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (firstNameField.getText().length() != 0) {
TLRPC.User user = MessagesController.getInstance().users.get(user_id);
user.first_name = firstNameField.getText().toString();
user.last_name = lastNameField.getText().toString();
ContactsController.getInstance().addContact(user);
finishFragment();
NotificationCenter.getInstance().postNotificationName(MessagesController.updateInterfaces, MessagesController.UPDATE_MASK_NAME);
}
}
});
cancelButton.setText(LocaleController.getString("Cancel", R.string.Cancel));
TextView textView = (TextView)doneButton.findViewById(R.id.done_button_text);
textView.setText(LocaleController.getString("Done", R.string.Done));
}
@Override @Override
public void onResume() { public void onResume() {
super.onResume();
if (getActivity() == null) {
return;
}
((LaunchActivity)parentActivity).updateActionBar();
SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE); SharedPreferences preferences = ApplicationLoader.applicationContext.getSharedPreferences("mainconfig", Activity.MODE_PRIVATE);
boolean animations = preferences.getBoolean("view_animations", true); boolean animations = preferences.getBoolean("view_animations", true);
if (!animations) { if (!animations) {
...@@ -220,30 +186,8 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent ...@@ -220,30 +186,8 @@ public class ContactAddActivity extends BaseFragment implements NotificationCent
} }
@Override @Override
public Animation onCreateAnimation(int transit, boolean enter, int nextAnim) { public void onOpenAnimationEnd() {
if (nextAnim != 0) { firstNameField.requestFocus();
Animation anim = AnimationUtils.loadAnimation(getActivity(), nextAnim); Utilities.showKeyboard(firstNameField);
anim.setAnimationListener(new Animation.AnimationListener() {
public void onAnimationStart(Animation animation) {
ContactAddActivity.this.onAnimationStart();
}
public void onAnimationRepeat(Animation animation) {
}
public void onAnimationEnd(Animation animation) {
ContactAddActivity.this.onAnimationEnd();
firstNameField.requestFocus();
Utilities.showKeyboard(firstNameField);
}
});
return anim;
} else {
return super.onCreateAnimation(transit, enter, nextAnim);
}
} }
} }
...@@ -10,10 +10,8 @@ package org.telegram.ui; ...@@ -10,10 +10,8 @@ package org.telegram.ui;
import android.content.Context; import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.text.Html; import android.text.Html;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.Surface; import android.view.Surface;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
...@@ -27,12 +25,17 @@ import org.telegram.messenger.TLRPC; ...@@ -27,12 +25,17 @@ import org.telegram.messenger.TLRPC;
import org.telegram.messenger.MessagesController; import org.telegram.messenger.MessagesController;
import org.telegram.messenger.R; import org.telegram.messenger.R;
import org.telegram.messenger.Utilities; import org.telegram.messenger.Utilities;
import org.telegram.ui.Views.BaseFragment; import org.telegram.ui.Views.ActionBar.ActionBarLayer;
import org.telegram.ui.Views.ActionBar.BaseFragment;
import org.telegram.ui.Views.IdenticonView; import org.telegram.ui.Views.IdenticonView;
public class IdenticonActivity extends BaseFragment { public class IdenticonActivity extends BaseFragment {
private int chat_id; private int chat_id;
public IdenticonActivity(Bundle args) {
super(args);
}
@Override @Override
public boolean onFragmentCreate() { public boolean onFragmentCreate() {
chat_id = getArguments().getInt("chat_id"); chat_id = getArguments().getInt("chat_id");
...@@ -40,19 +43,21 @@ public class IdenticonActivity extends BaseFragment { ...@@ -40,19 +43,21 @@ public class IdenticonActivity extends BaseFragment {
} }
@Override @Override
public void onFragmentDestroy() { public View createView(LayoutInflater inflater, ViewGroup container) {
super.onFragmentDestroy(); if (fragmentView == null) {
} actionBarLayer.setDisplayHomeAsUpEnabled(true);
actionBarLayer.setTitle(LocaleController.getString("EncryptionKey", R.string.EncryptionKey));
actionBarLayer.setTitleIcon(R.drawable.ic_lock_white, Utilities.dp(4));
@Override actionBarLayer.setActionBarMenuOnItemClick(new ActionBarLayer.ActionBarMenuOnItemClick() {
public void onCreate(Bundle savedInstanceState) { @Override
super.onCreate(savedInstanceState); public void onItemClick(int id) {
setHasOptionsMenu(true); if (id == -1) {
} finishFragment();
}
}
});
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (fragmentView == null) {
fragmentView = inflater.inflate(R.layout.identicon_layout, container, false); fragmentView = inflater.inflate(R.layout.identicon_layout, container, false);
IdenticonView identiconView = (IdenticonView) fragmentView.findViewById(R.id.identicon_view); IdenticonView identiconView = (IdenticonView) fragmentView.findViewById(R.id.identicon_view);
TextView textView = (TextView)fragmentView.findViewById(R.id.identicon_text); TextView textView = (TextView)fragmentView.findViewById(R.id.identicon_text);
...@@ -71,32 +76,6 @@ public class IdenticonActivity extends BaseFragment { ...@@ -71,32 +76,6 @@ public class IdenticonActivity extends BaseFragment {
return fragmentView; return fragmentView;
} }
@Override
public void applySelfActionBar() {
if (parentActivity == null) {
return;
}
ActionBar actionBar = parentActivity.getSupportActionBar();
actionBar.setDisplayShowTitleEnabled(true);
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayUseLogoEnabled(false);
actionBar.setDisplayShowCustomEnabled(false);
actionBar.setSubtitle(null);
actionBar.setCustomView(null);
actionBar.setTitle(LocaleController.getString("EncryptionKey", R.string.EncryptionKey));
TextView title = (TextView)parentActivity.findViewById(R.id.action_bar_title);
if (title == null) {
final int subtitleId = parentActivity.getResources().getIdentifier("action_bar_title", "id", "android");
title = (TextView)parentActivity.findViewById(subtitleId);
}
if (title != null) {
title.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_lock_white, 0, 0, 0);
title.setCompoundDrawablePadding(Utilities.dp(4));
}
}
@Override @Override
public void onConfigurationChanged(android.content.res.Configuration newConfig) { public void onConfigurationChanged(android.content.res.Configuration newConfig) {
super.onConfigurationChanged(newConfig); super.onConfigurationChanged(newConfig);
...@@ -105,62 +84,29 @@ public class IdenticonActivity extends BaseFragment { ...@@ -105,62 +84,29 @@ public class IdenticonActivity extends BaseFragment {
@Override @Override
public void onResume() { public void onResume() {
super.onResume();
if (isFinish) {
return;
}
if (getActivity() == null) {
return;
}
((LaunchActivity)parentActivity).showActionBar();
((LaunchActivity)parentActivity).updateActionBar();
fixLayout(); fixLayout();
} }
private void fixLayout() { private void fixLayout() {
final View v = getView(); ViewTreeObserver obs = fragmentView.getViewTreeObserver();
if (v != null) { obs.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
ViewTreeObserver obs = v.getViewTreeObserver(); @Override
obs.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { public boolean onPreDraw() {
@Override LinearLayout layout = (LinearLayout)fragmentView;
public boolean onPreDraw() { WindowManager manager = (WindowManager)ApplicationLoader.applicationContext.getSystemService(Context.WINDOW_SERVICE);
LinearLayout layout = (LinearLayout)fragmentView; int rotation = manager.getDefaultDisplay().getRotation();
WindowManager manager = (WindowManager)parentActivity.getSystemService(Context.WINDOW_SERVICE);
int rotation = manager.getDefaultDisplay().getRotation(); if (rotation == Surface.ROTATION_270 || rotation == Surface.ROTATION_90) {
layout.setOrientation(LinearLayout.HORIZONTAL);
if (rotation == Surface.ROTATION_270 || rotation == Surface.ROTATION_90) { } else {
layout.setOrientation(LinearLayout.HORIZONTAL); layout.setOrientation(LinearLayout.VERTICAL);
} else {
layout.setOrientation(LinearLayout.VERTICAL);
}
v.setPadding(v.getPaddingLeft(), 0, v.getPaddingRight(), v.getPaddingBottom());
v.getViewTreeObserver().removeOnPreDrawListener(this);
TextView title = (TextView)parentActivity.findViewById(R.id.action_bar_title);
if (title == null) {
final int subtitleId = ApplicationLoader.applicationContext.getResources().getIdentifier("action_bar_title", "id", "android");
title = (TextView)parentActivity.findViewById(subtitleId);
}
if (title != null) {
title.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_lock_white, 0, 0, 0);
title.setCompoundDrawablePadding(Utilities.dp(4));
}
return false;
} }
});
}
}
@Override fragmentView.setPadding(fragmentView.getPaddingLeft(), 0, fragmentView.getPaddingRight(), fragmentView.getPaddingBottom());
public boolean onOptionsItemSelected(MenuItem item) { fragmentView.getViewTreeObserver().removeOnPreDrawListener(this);
int itemId = item.getItemId();
switch (itemId) { return false;
case android.R.id.home: }
finishFragment(); });
break;
}
return true;
} }
} }
...@@ -194,7 +194,8 @@ public class IntroActivity extends ActionBarActivity { ...@@ -194,7 +194,8 @@ public class IntroActivity extends ActionBarActivity {
return; return;
} }
startPressed = true; startPressed = true;
Intent intent2 = new Intent(IntroActivity.this, LoginActivity.class); Intent intent2 = new Intent(IntroActivity.this, LaunchActivity.class);
intent2.putExtra("fromIntro", true);
startActivity(intent2); startActivity(intent2);
finish(); finish();
} }
......
...@@ -9,9 +9,7 @@ ...@@ -9,9 +9,7 @@
package org.telegram.ui; package org.telegram.ui;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.text.Editable; import android.text.Editable;
import android.text.TextWatcher; import android.text.TextWatcher;
...@@ -33,6 +31,7 @@ import org.telegram.messenger.FileLog; ...@@ -33,6 +31,7 @@ import org.telegram.messenger.FileLog;
import org.telegram.messenger.R; import org.telegram.messenger.R;
import org.telegram.messenger.RPCRequest; import org.telegram.messenger.RPCRequest;
import org.telegram.messenger.Utilities; import org.telegram.messenger.Utilities;
import org.telegram.ui.Views.ActionBar.BaseFragment;
import org.telegram.ui.Views.SlideView; import org.telegram.ui.Views.SlideView;
import java.io.BufferedReader; import java.io.BufferedReader;
...@@ -82,9 +81,16 @@ public class LoginActivityPhoneView extends SlideView implements AdapterView.OnI ...@@ -82,9 +81,16 @@ public class LoginActivityPhoneView extends SlideView implements AdapterView.OnI
countryButton.setOnClickListener(new OnClickListener() { countryButton.setOnClickListener(new OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
ActionBarActivity activity = (ActionBarActivity)delegate; BaseFragment activity = (BaseFragment)delegate;
Intent intent = new Intent(activity, CountrySelectActivity.class); CountrySelectActivity fragment = new CountrySelectActivity();
activity.startActivityForResult(intent, 1); fragment.setCountrySelectActivityDelegate(new CountrySelectActivity.CountrySelectActivityDelegate() {
@Override
public void didSelectCountry(String name) {
selectCountry(name);
phoneField.requestFocus();
}
});
activity.presentFragment(fragment);
} }
}); });
......
...@@ -23,6 +23,7 @@ import org.telegram.messenger.UserConfig; ...@@ -23,6 +23,7 @@ import org.telegram.messenger.UserConfig;
import org.telegram.messenger.Utilities; import org.telegram.messenger.Utilities;
import org.telegram.ui.LaunchActivity; import org.telegram.ui.LaunchActivity;
import org.telegram.ui.PhotoCropActivity; import org.telegram.ui.PhotoCropActivity;
import org.telegram.ui.Views.ActionBar.BaseFragment;
import java.io.File; import java.io.File;
...@@ -58,7 +59,7 @@ public class AvatarUpdater implements NotificationCenter.NotificationCenterDeleg ...@@ -58,7 +59,7 @@ public class AvatarUpdater implements NotificationCenter.NotificationCenterDeleg
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(image)); takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(image));
currentPicturePath = image.getAbsolutePath(); currentPicturePath = image.getAbsolutePath();
} }
parentFragment.parentActivity.startActivityForResult(takePictureIntent, 13); parentFragment.getParentActivity().startActivityForResult(takePictureIntent, 13);
} catch (Exception e) { } catch (Exception e) {
FileLog.e("tmessages", e); FileLog.e("tmessages", e);
} }
...@@ -68,7 +69,7 @@ public class AvatarUpdater implements NotificationCenter.NotificationCenterDeleg ...@@ -68,7 +69,7 @@ public class AvatarUpdater implements NotificationCenter.NotificationCenterDeleg
try { try {
Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
photoPickerIntent.setType("image/*"); photoPickerIntent.setType("image/*");
parentFragment.parentActivity.startActivityForResult(photoPickerIntent, 14); parentFragment.getParentActivity().startActivityForResult(photoPickerIntent, 14);
} catch (Exception e) { } catch (Exception e) {
FileLog.e("tmessages", e); FileLog.e("tmessages", e);
} }
...@@ -76,23 +77,19 @@ public class AvatarUpdater implements NotificationCenter.NotificationCenterDeleg ...@@ -76,23 +77,19 @@ public class AvatarUpdater implements NotificationCenter.NotificationCenterDeleg
private void startCrop(String path, Uri uri) { private void startCrop(String path, Uri uri) {
try { try {
LaunchActivity activity = (LaunchActivity)parentFragment.parentActivity; LaunchActivity activity = (LaunchActivity)parentFragment.getParentActivity();
if (activity == null) {
activity = (LaunchActivity)parentFragment.getActivity();
}
if (activity == null) { if (activity == null) {
return; return;
} }
Bundle params = new Bundle(); Bundle args = new Bundle();
if (path != null) { if (path != null) {
params.putString("photoPath", path); args.putString("photoPath", path);
} else if (uri != null) { } else if (uri != null) {
params.putParcelable("photoUri", uri); args.putParcelable("photoUri", uri);
} }
PhotoCropActivity photoCropActivity = new PhotoCropActivity(); PhotoCropActivity photoCropActivity = new PhotoCropActivity(args);
photoCropActivity.delegate = this; photoCropActivity.setDelegate(this);
photoCropActivity.setArguments(params); activity.presentFragment(photoCropActivity);
activity.presentFragment(photoCropActivity, "crop", false);
} catch (Exception e) { } catch (Exception e) {
FileLog.e("tmessages", e); FileLog.e("tmessages", e);
Bitmap bitmap = FileLoader.loadBitmap(path, uri, 800, 800); Bitmap bitmap = FileLoader.loadBitmap(path, uri, 800, 800);
......
...@@ -24,6 +24,7 @@ import org.telegram.messenger.Utilities; ...@@ -24,6 +24,7 @@ import org.telegram.messenger.Utilities;
public class BackupImageView extends ImageView { public class BackupImageView extends ImageView {
boolean makeRequest = true; boolean makeRequest = true;
public String currentPath; public String currentPath;
public boolean processDetach = true;
private boolean isPlaceholder; private boolean isPlaceholder;
private boolean ignoreLayout = true; private boolean ignoreLayout = true;
...@@ -179,7 +180,9 @@ public class BackupImageView extends ImageView { ...@@ -179,7 +180,9 @@ public class BackupImageView extends ImageView {
@Override @Override
protected void onDetachedFromWindow() { protected void onDetachedFromWindow() {
super.onDetachedFromWindow(); super.onDetachedFromWindow();
recycleBitmap(null); if (processDetach) {
recycleBitmap(null);
}
} }
@Override @Override
......
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="150" />
</set>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment