summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/callcomposer
diff options
context:
space:
mode:
Diffstat (limited to 'java/com/android/dialer/callcomposer')
-rw-r--r--java/com/android/dialer/callcomposer/CallComposerActivity.java162
-rw-r--r--java/com/android/dialer/callcomposer/CallComposerFragment.java3
-rw-r--r--java/com/android/dialer/callcomposer/CameraComposerFragment.java1
-rw-r--r--java/com/android/dialer/callcomposer/MessageComposerFragment.java18
-rw-r--r--java/com/android/dialer/callcomposer/res/layout/call_composer_activity.xml41
-rw-r--r--java/com/android/dialer/callcomposer/res/layout/fragment_camera_composer.xml3
-rw-r--r--java/com/android/dialer/callcomposer/res/layout/fragment_gallery_composer.xml3
-rw-r--r--java/com/android/dialer/callcomposer/res/layout/fragment_message_composer.xml9
-rw-r--r--java/com/android/dialer/callcomposer/res/values/dimens.xml2
-rw-r--r--java/com/android/dialer/callcomposer/util/CopyAndResizeImageTask.java4
10 files changed, 137 insertions, 109 deletions
diff --git a/java/com/android/dialer/callcomposer/CallComposerActivity.java b/java/com/android/dialer/callcomposer/CallComposerActivity.java
index 9fb6c38f4..3c0beb101 100644
--- a/java/com/android/dialer/callcomposer/CallComposerActivity.java
+++ b/java/com/android/dialer/callcomposer/CallComposerActivity.java
@@ -41,13 +41,13 @@ import android.view.View.OnClickListener;
import android.view.View.OnLayoutChangeListener;
import android.view.ViewAnimationUtils;
import android.view.ViewGroup;
+import android.view.WindowManager.LayoutParams;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.QuickContactBadge;
import android.widget.RelativeLayout;
import android.widget.TextView;
-import android.widget.Toolbar;
import com.android.contacts.common.ContactPhotoManager;
import com.android.dialer.callcomposer.CallComposerFragment.CallComposerListener;
import com.android.dialer.callcomposer.nano.CallComposerContact;
@@ -70,6 +70,7 @@ import com.android.dialer.multimedia.MultimediaData;
import com.android.dialer.protos.ProtoParsers;
import com.android.dialer.telecom.TelecomUtil;
import com.android.dialer.util.ViewUtil;
+import com.android.dialer.widget.DialerToolbar;
import com.google.protobuf.nano.InvalidProtocolBufferNanoException;
import java.io.File;
@@ -110,7 +111,7 @@ public class CallComposerActivity extends AppCompatActivity
private TextView numberView;
private QuickContactBadge contactPhoto;
private RelativeLayout contactContainer;
- private Toolbar toolbar;
+ private DialerToolbar toolbar;
private View sendAndCall;
private TextView sendAndCallText;
@@ -151,7 +152,7 @@ public class CallComposerActivity extends AppCompatActivity
pager = (ViewPager) findViewById(R.id.call_composer_view_pager);
background = (FrameLayout) findViewById(R.id.background);
windowContainer = (LinearLayout) findViewById(R.id.call_composer_container);
- toolbar = (Toolbar) findViewById(R.id.toolbar);
+ toolbar = (DialerToolbar) findViewById(R.id.toolbar);
sendAndCall = findViewById(R.id.send_and_call_button);
sendAndCallText = (TextView) findViewById(R.id.send_and_call_text);
@@ -163,10 +164,6 @@ public class CallComposerActivity extends AppCompatActivity
pager.setAdapter(adapter);
pager.addOnPageChangeListener(this);
- setActionBar(toolbar);
- toolbar.setNavigationIcon(R.drawable.quantum_ic_close_white_24);
- toolbar.setNavigationOnClickListener(v -> finish());
-
background.addOnLayoutChangeListener(this);
cameraIcon.setOnClickListener(this);
galleryIcon.setOnClickListener(this);
@@ -183,6 +180,11 @@ public class CallComposerActivity extends AppCompatActivity
onPageSelected(currentIndex);
}
+ int adjustMode =
+ isLandscapeLayout()
+ ? LayoutParams.SOFT_INPUT_ADJUST_PAN
+ : LayoutParams.SOFT_INPUT_ADJUST_RESIZE;
+ getWindow().setSoftInputMode(adjustMode);
// Since we can't animate the views until they are ready to be drawn, we use this listener to
// track that and animate the call compose UI as soon as it's ready.
ViewUtil.doOnPreDraw(
@@ -262,79 +264,83 @@ public class CallComposerActivity extends AppCompatActivity
} else if (view == messageIcon) {
pager.setCurrentItem(CallComposerPagerAdapter.INDEX_MESSAGE, true /* animate */);
} else if (view == sendAndCall) {
- if (!sessionReady()) {
- LogUtil.i(
- "CallComposerActivity.onClick", "sendAndCall pressed, but the session isn't ready");
- Logger.get(this)
- .logImpression(
- DialerImpression.Type
- .CALL_COMPOSER_ACTIVITY_SEND_AND_CALL_PRESSED_WHEN_SESSION_NOT_READY);
- return;
- }
- sendAndCall.setEnabled(false);
- CallComposerFragment fragment =
- (CallComposerFragment) adapter.instantiateItem(pager, currentIndex);
- MultimediaData.Builder builder = MultimediaData.builder();
-
- if (fragment instanceof MessageComposerFragment) {
- MessageComposerFragment messageComposerFragment = (MessageComposerFragment) fragment;
- builder.setText(messageComposerFragment.getMessage());
- placeRCSCall(builder);
- }
- if (fragment instanceof GalleryComposerFragment) {
- GalleryComposerFragment galleryComposerFragment = (GalleryComposerFragment) fragment;
- // If the current data is not a copy, make one.
- if (!galleryComposerFragment.selectedDataIsCopy()) {
- new CopyAndResizeImageTask(
- CallComposerActivity.this,
- galleryComposerFragment.getGalleryData().getFileUri(),
- new Callback() {
- @Override
- public void onCopySuccessful(File file, String mimeType) {
- Uri shareableUri =
- FileProvider.getUriForFile(
- CallComposerActivity.this,
- Constants.get().getFileProviderAuthority(),
- file);
-
- builder.setImage(grantUriPermission(shareableUri), mimeType);
- placeRCSCall(builder);
- }
-
- @Override
- public void onCopyFailed(Throwable throwable) {
- // TODO(b/34279096) - gracefully handle message failure
- LogUtil.e("CallComposerActivity.onCopyFailed", "copy Failed", throwable);
- }
- })
- .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
- } else {
- Uri shareableUri =
- FileProvider.getUriForFile(
- this,
- Constants.get().getFileProviderAuthority(),
- new File(galleryComposerFragment.getGalleryData().getFilePath()));
-
- builder.setImage(
- grantUriPermission(shareableUri),
- galleryComposerFragment.getGalleryData().getMimeType());
-
- placeRCSCall(builder);
- }
- }
- if (fragment instanceof CameraComposerFragment) {
- CameraComposerFragment cameraComposerFragment = (CameraComposerFragment) fragment;
- cameraComposerFragment.getCameraUriWhenReady(
- uri -> {
- builder.setImage(grantUriPermission(uri), cameraComposerFragment.getMimeType());
- placeRCSCall(builder);
- });
- }
+ sendAndCall();
} else {
Assert.fail();
}
}
+ @Override
+ public void sendAndCall() {
+ if (!sessionReady()) {
+ LogUtil.i("CallComposerActivity.onClick", "sendAndCall pressed, but the session isn't ready");
+ Logger.get(this)
+ .logImpression(
+ DialerImpression.Type
+ .CALL_COMPOSER_ACTIVITY_SEND_AND_CALL_PRESSED_WHEN_SESSION_NOT_READY);
+ return;
+ }
+ sendAndCall.setEnabled(false);
+ CallComposerFragment fragment =
+ (CallComposerFragment) adapter.instantiateItem(pager, currentIndex);
+ MultimediaData.Builder builder = MultimediaData.builder();
+
+ if (fragment instanceof MessageComposerFragment) {
+ MessageComposerFragment messageComposerFragment = (MessageComposerFragment) fragment;
+ builder.setText(messageComposerFragment.getMessage());
+ placeRCSCall(builder);
+ }
+ if (fragment instanceof GalleryComposerFragment) {
+ GalleryComposerFragment galleryComposerFragment = (GalleryComposerFragment) fragment;
+ // If the current data is not a copy, make one.
+ if (!galleryComposerFragment.selectedDataIsCopy()) {
+ new CopyAndResizeImageTask(
+ CallComposerActivity.this,
+ galleryComposerFragment.getGalleryData().getFileUri(),
+ new Callback() {
+ @Override
+ public void onCopySuccessful(File file, String mimeType) {
+ Uri shareableUri =
+ FileProvider.getUriForFile(
+ CallComposerActivity.this,
+ Constants.get().getFileProviderAuthority(),
+ file);
+
+ builder.setImage(grantUriPermission(shareableUri), mimeType);
+ placeRCSCall(builder);
+ }
+
+ @Override
+ public void onCopyFailed(Throwable throwable) {
+ // TODO(b/34279096) - gracefully handle message failure
+ LogUtil.e("CallComposerActivity.onCopyFailed", "copy Failed", throwable);
+ }
+ })
+ .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+ } else {
+ Uri shareableUri =
+ FileProvider.getUriForFile(
+ this,
+ Constants.get().getFileProviderAuthority(),
+ new File(galleryComposerFragment.getGalleryData().getFilePath()));
+
+ builder.setImage(
+ grantUriPermission(shareableUri),
+ galleryComposerFragment.getGalleryData().getMimeType());
+
+ placeRCSCall(builder);
+ }
+ }
+ if (fragment instanceof CameraComposerFragment) {
+ CameraComposerFragment cameraComposerFragment = (CameraComposerFragment) fragment;
+ cameraComposerFragment.getCameraUriWhenReady(
+ uri -> {
+ builder.setImage(grantUriPermission(uri), cameraComposerFragment.getMimeType());
+ placeRCSCall(builder);
+ });
+ }
+ }
+
private boolean sessionReady() {
Session session = getEnrichedCallManager().getSession(sessionId);
if (session == null) {
@@ -482,7 +488,7 @@ public class CallComposerActivity extends AppCompatActivity
contact.contactType);
nameView.setText(contact.nameOrNumber);
- getActionBar().setTitle(contact.nameOrNumber);
+ toolbar.setTitle(contact.nameOrNumber);
if (!TextUtils.isEmpty(contact.numberLabel) && !TextUtils.isEmpty(contact.displayNumber)) {
numberView.setVisibility(View.VISIBLE);
String secondaryInfo =
@@ -577,11 +583,11 @@ public class CallComposerActivity extends AppCompatActivity
inFullscreenMode = fullscreen;
ViewGroup.LayoutParams layoutParams = pager.getLayoutParams();
if (isLandscapeLayout()) {
- layoutParams.height = background.getHeight() - messageIcon.getHeight();
+ layoutParams.height = background.getHeight();
toolbar.setVisibility(View.INVISIBLE);
contactContainer.setVisibility(View.GONE);
} else if (fullscreen || getResources().getBoolean(R.bool.show_toolbar)) {
- layoutParams.height = background.getHeight() - toolbar.getHeight() - messageIcon.getHeight();
+ layoutParams.height = background.getHeight() - toolbar.getHeight();
toolbar.setVisibility(View.VISIBLE);
contactContainer.setVisibility(View.GONE);
} else {
diff --git a/java/com/android/dialer/callcomposer/CallComposerFragment.java b/java/com/android/dialer/callcomposer/CallComposerFragment.java
index ee1eb462a..b60657189 100644
--- a/java/com/android/dialer/callcomposer/CallComposerFragment.java
+++ b/java/com/android/dialer/callcomposer/CallComposerFragment.java
@@ -62,5 +62,8 @@ public abstract class CallComposerFragment extends Fragment {
/** True if the layout is in landscape mode. */
boolean isLandscapeLayout();
+
+ /** Tell the listener that call composition is done and we should start the call. */
+ void sendAndCall();
}
}
diff --git a/java/com/android/dialer/callcomposer/CameraComposerFragment.java b/java/com/android/dialer/callcomposer/CameraComposerFragment.java
index 01f7f6087..ceefc068e 100644
--- a/java/com/android/dialer/callcomposer/CameraComposerFragment.java
+++ b/java/com/android/dialer/callcomposer/CameraComposerFragment.java
@@ -331,6 +331,7 @@ public class CameraComposerFragment extends CallComposerFragment
if (cameraUri != null) {
previewImageView.setImageURI(cameraUri);
previewImageView.setVisibility(View.VISIBLE);
+ previewImageView.setScaleX(cameraDirection == CameraInfo.CAMERA_FACING_FRONT ? -1 : 1);
} else {
previewImageView.setVisibility(View.GONE);
}
diff --git a/java/com/android/dialer/callcomposer/MessageComposerFragment.java b/java/com/android/dialer/callcomposer/MessageComposerFragment.java
index d8100033f..2a342bb08 100644
--- a/java/com/android/dialer/callcomposer/MessageComposerFragment.java
+++ b/java/com/android/dialer/callcomposer/MessageComposerFragment.java
@@ -22,6 +22,7 @@ import android.text.Editable;
import android.text.InputFilter;
import android.text.TextUtils;
import android.text.TextWatcher;
+import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
@@ -31,10 +32,15 @@ import android.view.View.OnTouchListener;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.TextView;
+import android.widget.TextView.OnEditorActionListener;
/** Fragment used to compose call with message fragment. */
public class MessageComposerFragment extends CallComposerFragment
- implements OnClickListener, TextWatcher, OnTouchListener, OnLongClickListener {
+ implements OnClickListener,
+ TextWatcher,
+ OnTouchListener,
+ OnLongClickListener,
+ OnEditorActionListener {
private static final String CHAR_LIMIT_KEY = "char_limit";
public static final int NO_CHAR_LIMIT = -1;
@@ -70,6 +76,7 @@ public class MessageComposerFragment extends CallComposerFragment
customMessage.setOnTouchListener(this);
customMessage.setOnLongClickListener(this);
customMessage.addTextChangedListener(this);
+ customMessage.setOnEditorActionListener(this);
if (charLimit != NO_CHAR_LIMIT) {
TextView remainingChar = (TextView) view.findViewById(R.id.remaining_characters);
remainingChar.setText("" + charLimit);
@@ -144,4 +151,13 @@ public class MessageComposerFragment extends CallComposerFragment
public void clearComposer() {
customMessage.getText().clear();
}
+
+ @Override
+ public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+ if (getMessage() == null) {
+ return false;
+ }
+ getListener().sendAndCall();
+ return true;
+ }
}
diff --git a/java/com/android/dialer/callcomposer/res/layout/call_composer_activity.xml b/java/com/android/dialer/callcomposer/res/layout/call_composer_activity.xml
index f687f0b5c..c3f1102d1 100644
--- a/java/com/android/dialer/callcomposer/res/layout/call_composer_activity.xml
+++ b/java/com/android/dialer/callcomposer/res/layout/call_composer_activity.xml
@@ -74,12 +74,14 @@
android:id="@+id/call_composer_view_pager"
android:layout_width="match_parent"
android:layout_height="@dimen/call_composer_view_pager_height"/>
+ </LinearLayout>
- <FrameLayout
+ <FrameLayout
android:layout_width="match_parent"
- android:layout_height="wrap_content">
+ android:layout_height="wrap_content"
+ android:layout_gravity="bottom">
- <LinearLayout
+ <LinearLayout
android:id="@+id/media_actions"
android:layout_width="match_parent"
android:layout_height="@dimen/call_composer_media_bar_height"
@@ -88,7 +90,7 @@
android:background="@color/dialer_secondary_color"
android:clickable="true">
- <ImageView
+ <ImageView
android:id="@+id/call_composer_camera"
android:layout_width="@dimen/call_composer_media_actions_width"
android:layout_height="match_parent"
@@ -96,7 +98,7 @@
android:src="@drawable/quantum_ic_camera_alt_white_24"
android:background="?android:attr/selectableItemBackgroundBorderless"/>
- <ImageView
+ <ImageView
android:id="@+id/call_composer_photo"
android:layout_width="@dimen/call_composer_media_actions_width"
android:layout_height="match_parent"
@@ -104,22 +106,22 @@
android:src="@drawable/quantum_ic_photo_white_24"
android:background="?android:attr/selectableItemBackgroundBorderless"/>
- <ImageView
+ <ImageView
android:id="@+id/call_composer_message"
android:layout_width="@dimen/call_composer_media_actions_width"
android:layout_height="match_parent"
android:scaleType="center"
- android:src="@drawable/ic_message_24dp"
+ android:src="@drawable/quantum_ic_message_white_24"
android:background="?android:attr/selectableItemBackgroundBorderless"/>
- </LinearLayout>
+ </LinearLayout>
- <FrameLayout
+ <FrameLayout
android:id="@+id/send_and_call_button"
android:layout_width="match_parent"
android:layout_height="@dimen/call_composer_media_bar_height"
android:visibility="invisible"
android:background="@color/compose_and_call_background">
- <TextView
+ <TextView
android:id="@+id/send_and_call_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -131,18 +133,11 @@
android:textSize="@dimen/send_and_call_text_size"
android:fontFamily="sans-serif-medium"
android:textColor="@color/background_dialer_white"/>
- </FrameLayout>
</FrameLayout>
- </LinearLayout>
+ </FrameLayout>
- <Toolbar
- android:id="@+id/toolbar"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:minHeight="?attr/actionBarSize"
- android:visibility="invisible"
- android:titleTextAppearance="@style/toolbar_title_text"
- android:subtitleTextAppearance="@style/toolbar_subtitle_text"
- android:navigationIcon="@drawable/quantum_ic_close_white_24"
- android:background="@color/dialer_theme_color"/>
-</FrameLayout> \ No newline at end of file
+ <com.android.dialer.widget.DialerToolbar
+ android:id="@+id/toolbar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"/>
+</FrameLayout>
diff --git a/java/com/android/dialer/callcomposer/res/layout/fragment_camera_composer.xml b/java/com/android/dialer/callcomposer/res/layout/fragment_camera_composer.xml
index 200a3dce7..f1db48e5b 100644
--- a/java/com/android/dialer/callcomposer/res/layout/fragment_camera_composer.xml
+++ b/java/com/android/dialer/callcomposer/res/layout/fragment_camera_composer.xml
@@ -17,7 +17,8 @@
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
- android:layout_width="match_parent">
+ android:layout_width="match_parent"
+ android:paddingBottom="@dimen/call_composer_media_bar_height">
<include
android:layout_width="match_parent"
diff --git a/java/com/android/dialer/callcomposer/res/layout/fragment_gallery_composer.xml b/java/com/android/dialer/callcomposer/res/layout/fragment_gallery_composer.xml
index a4bd4df03..6cd6418a4 100644
--- a/java/com/android/dialer/callcomposer/res/layout/fragment_gallery_composer.xml
+++ b/java/com/android/dialer/callcomposer/res/layout/fragment_gallery_composer.xml
@@ -18,7 +18,8 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="@color/background_dialer_white">
+ android:background="@color/background_dialer_white"
+ android:paddingBottom="@dimen/call_composer_media_bar_height">
<GridView
android:id="@+id/gallery_grid_view"
diff --git a/java/com/android/dialer/callcomposer/res/layout/fragment_message_composer.xml b/java/com/android/dialer/callcomposer/res/layout/fragment_message_composer.xml
index 577887be9..77c7a58d1 100644
--- a/java/com/android/dialer/callcomposer/res/layout/fragment_message_composer.xml
+++ b/java/com/android/dialer/callcomposer/res/layout/fragment_message_composer.xml
@@ -59,7 +59,10 @@
android:id="@+id/custom_message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:padding="@dimen/message_composer_item_padding"
+ android:paddingTop="@dimen/message_composer_item_padding"
+ android:paddingStart="@dimen/message_composer_item_padding"
+ android:paddingEnd="@dimen/message_composer_item_padding"
+ android:paddingBottom="64dp"
android:textSize="@dimen/message_compose_item_text_size"
android:hint="@string/message_composer_custom_message_hint"
android:textColor="@color/dialer_primary_text_color"
@@ -67,13 +70,15 @@
android:background="@color/background_dialer_white"
android:textCursorDrawable="@drawable/searchedittext_custom_cursor"
android:layout_toStartOf="@+id/remaining_characters"
- android:imeOptions="flagNoExtractUi"/>
+ android:inputType="textShortMessage"
+ android:imeOptions="flagNoExtractUi|actionSend"/>
<TextView
android:id="@+id/remaining_characters"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/message_composer_item_padding"
+ android:paddingBottom="@dimen/call_composer_media_bar_height"
android:layout_alignParentEnd="true"
android:layout_centerVertical="true"
android:textSize="@dimen/message_compose_remaining_char_text_size"
diff --git a/java/com/android/dialer/callcomposer/res/values/dimens.xml b/java/com/android/dialer/callcomposer/res/values/dimens.xml
index 5571170b2..d55540077 100644
--- a/java/com/android/dialer/callcomposer/res/values/dimens.xml
+++ b/java/com/android/dialer/callcomposer/res/values/dimens.xml
@@ -15,7 +15,7 @@
~ limitations under the License
-->
<resources>
- <dimen name="call_composer_view_pager_height">258dp</dimen>
+ <dimen name="call_composer_view_pager_height">306dp</dimen>
<!-- Contact bar -->
<dimen name="call_composer_contact_photo_border_thickness">2dp</dimen>
diff --git a/java/com/android/dialer/callcomposer/util/CopyAndResizeImageTask.java b/java/com/android/dialer/callcomposer/util/CopyAndResizeImageTask.java
index be08555f9..81511d274 100644
--- a/java/com/android/dialer/callcomposer/util/CopyAndResizeImageTask.java
+++ b/java/com/android/dialer/callcomposer/util/CopyAndResizeImageTask.java
@@ -36,7 +36,7 @@ import java.io.OutputStream;
/** Task for copying and resizing images to be shared with RCS process. */
@TargetApi(VERSION_CODES.M)
public class CopyAndResizeImageTask extends FallibleAsyncTask<Void, Void, File> {
- public static final int MAX_OUTPUT_RESOLUTION = 1024;
+ public static final int MAX_OUTPUT_RESOLUTION = 640;
private static final String MIME_TYPE = "image/jpeg";
private final Context context;
@@ -59,7 +59,7 @@ public class CopyAndResizeImageTask extends FallibleAsyncTask<Void, Void, File>
File outputFile = DialerUtils.createShareableFile(context);
try (OutputStream outputStream = new FileOutputStream(outputFile)) {
// Encode images to jpeg as it is better for camera pictures which we expect to be sending
- bitmap.compress(CompressFormat.JPEG, 90, outputStream);
+ bitmap.compress(CompressFormat.JPEG, 80, outputStream);
return outputFile;
}
}