Threema 4 年 前
コミット
6977e24aae

+ 2 - 2
app/build.gradle

@@ -20,7 +20,7 @@ if (getGradle().getStartParameter().getTaskRequests().toString().contains("Hms")
 }
 
 // version codes
-def app_version = "4.66"
+def app_version = "4.67"
 def beta_suffix = "" // with leading dash
 
 /**
@@ -99,7 +99,7 @@ android {
         vectorDrawables.useSupportLibrary = true
         applicationId "ch.threema.app"
         testApplicationId 'ch.threema.app.test'
-        versionCode 720
+        versionCode 721
         versionName "${app_version}${beta_suffix}"
         resValue "string", "app_name", "Threema"
         // package name used for sync adapter - needs to match mime types below

+ 8 - 2
app/src/main/java/ch/threema/app/activities/SendMediaActivity.java

@@ -171,6 +171,7 @@ public class SendMediaActivity extends ThreemaToolbarActivity implements
 	private VideoEditView videoEditView;
 	private MenuItem settingsItem;
 	private MediaFilterQuery lastMediaFilter;
+	private TextView recipientText;
 
 	@Override
 	protected void onCreate(Bundle savedInstanceState) {
@@ -307,6 +308,8 @@ public class SendMediaActivity extends ThreemaToolbarActivity implements
 			}
 		});
 
+		this.recipientText = findViewById(R.id.recipient_text);
+
 		this.cameraButton = findViewById(R.id.camera_button);
 		this.cameraButton.setOnClickListener(v -> launchCamera());
 
@@ -450,7 +453,7 @@ public class SendMediaActivity extends ThreemaToolbarActivity implements
 
 		String recipients = getIntent().getStringExtra(ThreemaApplication.INTENT_DATA_TEXT);
 		if (!TestUtil.empty(recipients)) {
-			this.captionEditText.setHint(getString(R.string.send_to, recipients));
+			this.captionEditText.setHint(R.string.add_caption_hint);
 			this.captionEditText.addTextChangedListener(new TextWatcher() {
 				@Override
 				public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
@@ -461,10 +464,13 @@ public class SendMediaActivity extends ThreemaToolbarActivity implements
 				@Override
 				public void afterTextChanged(Editable s) {
 					if (s == null || s.length() == 0) {
-						captionEditText.setHint(getString(R.string.send_to, recipients));
+						captionEditText.setHint(R.string.add_caption_hint);
 					}
 				}
 			});
+			this.recipientText.setText(getString(R.string.send_to, recipients));
+		} else {
+			findViewById(R.id.recipient_container).setVisibility(View.GONE);
 		}
 
 		SendButton sendButton = findViewById(R.id.send_button);

+ 21 - 2
app/src/main/java/ch/threema/app/camera/VideoEditView.java

@@ -58,10 +58,13 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
 
 import androidx.annotation.MainThread;
 import androidx.annotation.NonNull;
 import androidx.annotation.UiThread;
+import androidx.core.view.ViewCompat;
 import androidx.lifecycle.DefaultLifecycleObserver;
 import androidx.lifecycle.LifecycleOwner;
 import ch.threema.app.R;
@@ -97,7 +100,8 @@ public class VideoEditView extends FrameLayout implements DefaultLifecycleObserv
 	private MediaSource videoSource;
 	private TextView startTimeTextView, endTimeTextView, sizeTextView;
 	private Thread thumbnailThread;
-	private Handler progressHandler = new Handler();
+	private final Handler progressHandler = new Handler();
+	private final List<Rect> exclusionRects = new ArrayList<>();
 
 	public VideoEditView(Context context) {
 		this(context, null);
@@ -194,6 +198,22 @@ public class VideoEditView extends FrameLayout implements DefaultLifecycleObserv
 		});
 	}
 
+	@SuppressLint("DrawAllocation")
+	@Override
+	protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
+		super.onLayout(changed, left, top, right, bottom);
+
+		final int timelineMarginTop = this.timelineGridLayout.getTop();
+		final int timelineMarginBottom = this.timelineGridLayout.getBottom();
+		final int timelineMarginLeft = this.timelineGridLayout.getLeft();
+		final int timelineMarginRight = this.timelineGridLayout.getRight();
+
+		exclusionRects.add(new Rect(0, timelineMarginTop - arrowHeight, timelineMarginLeft + touchTargetWidth, timelineMarginBottom + arrowHeight));
+		exclusionRects.add(new Rect(timelineMarginRight - touchTargetWidth, timelineMarginTop - arrowHeight, right, timelineMarginBottom + arrowHeight));
+
+		ViewCompat.setSystemGestureExclusionRects(this, exclusionRects);
+	}
+
 	@Override
 	protected void dispatchDraw(Canvas canvas) {
 		super.dispatchDraw(canvas);
@@ -615,7 +635,6 @@ public class VideoEditView extends FrameLayout implements DefaultLifecycleObserv
 		return 0;
 	}
 
-
 	@Override
 	public void onDestroy(@NonNull LifecycleOwner owner) {
 		if (thumbnailThread != null && thumbnailThread.isAlive()) {

+ 2 - 2
app/src/main/java/ch/threema/app/fragments/ComposeMessageFragment.java

@@ -1085,8 +1085,8 @@ public class ComposeMessageFragment extends Fragment implements
 							menu.add(CONTEXT_MENU_GROUP, CONTEXT_MENU_ITALIC, 201, R.string.italic);
 							menu.add(CONTEXT_MENU_GROUP, CONTEXT_MENU_STRIKETHRU, 203, R.string.strikethrough);
 						}
-					} catch (StringIndexOutOfBoundsException e) {
-						// do not add menus
+					} catch (Exception e) {
+						// do not add menus if an error occurs
 					}
 				}
 			}

+ 1 - 1
app/src/main/res/drawable/shape_mediaviewer_caption_background.xml

@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
-	<solid android:color="#77000000"/>
+	<solid android:color="@color/mediaviewer_caption_background_color"/>
 	<corners android:radius="@dimen/mediaviewer_caption_background_radius"/>
 </shape>

+ 27 - 0
app/src/main/res/layout/activity_send_media.xml

@@ -69,6 +69,33 @@
 
 		</FrameLayout>
 
+		<FrameLayout
+			android:id="@+id/recipient_container"
+			android:layout_width="wrap_content"
+			android:layout_height="wrap_content"
+			android:layout_above="@+id/bottom_panel"
+			android:layout_marginLeft="8dp"
+			android:layout_marginRight="8dp"
+			android:layout_marginBottom="8dp"
+			android:layout_alignParentRight="true"
+			android:background="@drawable/shape_mediaviewer_caption_background"
+			android:paddingBottom="4dp"
+			android:paddingLeft="8dp"
+			android:paddingRight="8dp"
+			android:paddingTop="4dp">
+
+			<TextView
+				android:id="@+id/recipient_text"
+				android:layout_width="wrap_content"
+				android:layout_height="wrap_content"
+				android:layout_gravity="center_horizontal"
+				android:textColor="@android:color/white"
+				android:maxLines="1"
+				android:ellipsize="end"
+				android:textSize="12sp"/>
+
+		</FrameLayout>
+
 		<FrameLayout
 			android:id="@+id/bottom_panel"
 			android:layout_width="match_parent"

+ 7 - 1
app/src/main/res/values-ja/strings.xml

@@ -1108,7 +1108,7 @@ https://myid.threema.ch/revoke に入力することで ID を削除すること
     <string name="ballot_window_show">投票バーを表示</string>
     <string name="tooltip_voip_other_party_video_on">相手がビデオ通話を開始しました。ここをタップすると、あなたのカメラもオンになります。</string>
     <string name="tooltip_voip_other_party_video_disabled">相手が現在のアプリのバージョンを使用していない、またはビデオ通話を許可しません。</string>
-	<string name="biometrics_not_enrolled">生体認証は登録されていません。</string>
+    <string name="biometrics_not_enrolled">生体認証は登録されていません。</string>
     <string name="biometrics_not_avilable">このシステムでは生体認証は利用できません。</string>
     <string name="biometrics_no_permission">生体認証またはハードウェアにアクセスするための許可がありません。</string>
     <string name="verification_settings_desc">3つの点は、連絡先の検証レベルを表しています。</string>
@@ -1183,8 +1183,14 @@ https://myid.threema.ch/revoke に入力することで ID を削除すること
     <string name="set_backup_path_intro">バックアップの保存場所を選んでください</string>
     <string name="group_join_request">グループ参加要求</string>
     <string name="group_join_request_for">%sに対するグループ参加要求</string>
+    <string name="group_link_default_name">無名のリンク</string>
+    <string name="group_link_share">グループリンクを共有</string>
     <string name="group_request_incoming_dialog_title">%sからの要求</string>
+    <string name="accept">受け入れる</string>
+    <string name="reject">拒否する</string>
     <string name="group_link_none">リンクがまだ生成されていません</string>
+    <string name="group_request_send_title">グループ参加リクエストを送信</string>
+    <string name="group_requests_all_title">全てのグループリクエスト</string>
     <string name="group_qr_code_title">グループQRコード</string>
     <string name="tap_here_for_more">詳しい情報はこちら</string>
     <string name="app_store_error_code">App storeエラーコード: %d</string>

+ 2 - 2
app/src/main/res/values-zh-rCN/strings.xml

@@ -1206,8 +1206,8 @@ Threema ID。您将不会出现在朋友的联系人列表中。您确定要
     <string name="transcoder_unsupported_audio_format">由于缺少系统支持,音频无法转码。</string>
     <string name="transcoder_unknown_audio_error">发生未知的音频转码错误。</string>
     <string name="video_size_explain">就算设置为未压缩,体积非常大的视频都有可能被压缩。</string>
-    <string name="status_create_notes">*在此会话中只有您一个人*\n将此会话作为保存文本、媒体和文件的安全笔记本。</string>
-    <string name="status_create_notes_off">*在此会话中不再只有您一个人*\n新消息将被发送到所有成员。</string>
+    <string name="status_create_notes">*在此会话中只有您一个人能访问*\n将此会话作为保存文本、媒体和文件的安全笔记本。</string>
+    <string name="status_create_notes_off">*在此会话中不再只有您一个人能访问*\n新消息将被发送到所有群组成员。</string>
     <string name="note_group_howto">提示:如果您不添加任何群组成员,发送到这个群组的信息将保留在本地。这样能方便您安全地存储笔记、媒体和文件,或将文件转移到桌面。</string>
     <string name="mark_unread">标记为未读</string>
     <string name="mark_read_short">标记为已读</string>

+ 2 - 2
app/src/main/res/values-zh-rTW/strings.xml

@@ -1199,8 +1199,8 @@ Threema 支援的所有表情符號。</string>
     <string name="transcoder_unsupported_audio_format">由於缺少系統支援,音訊無法轉碼。</string>
     <string name="transcoder_unknown_audio_error">發生未知的音訊轉碼錯誤。</string>
     <string name="video_size_explain">就算設定為未壓縮,體積非常大的影片都有可能被壓縮。</string>
-    <string name="status_create_notes">*在此對話中只有您一個人*\n將此對話作為儲存文字、媒體和檔案的安全筆記本。</string>
-    <string name="status_create_notes_off">*在此對話中不再只有您一個人*\n新訊息將被傳送至所有成員。</string>
+    <string name="status_create_notes">*在此對話中只有您一個人能存取*\n將此對話作為儲存文字、媒體和檔案的安全筆記本。</string>
+    <string name="status_create_notes_off">*在此對話中不再只有您一個人能存取*\n新訊息將被傳送至所有群組成員。</string>
     <string name="note_group_howto">提示:如果您不新增任何群組成員,傳送至這個群組的訊息將保留在本地。這樣能方便您安全地儲存筆記、媒體和檔案,或將檔案轉移至桌面。</string>
     <string name="mark_unread">標示為未讀</string>
     <string name="mark_read_short">標示為已讀</string>

+ 1 - 0
app/src/main/res/values/colors.xml

@@ -194,6 +194,7 @@
 	<color name="imagepaint_overlay_select_color">#FFFFFFFF</color>
 	<color name="gallery_background">#ff1a1a1a</color>
 	<color name="status_bar_detail">#3000</color>
+	<color name="mediaviewer_caption_background_color">#77000000</color>
 
 	<!--**********************************************************************************************************-->
 	<!-- material colors for reference -->