mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-21 17:12:45 +02:00
rich text composer placeholder text implemented using the same logic of the normal composer
This commit is contained in:
@@ -37,6 +37,7 @@ typedef NS_ENUM(NSUInteger, RoomInputToolbarViewSendMode)
|
||||
|
||||
@property (nonatomic, strong) NSString *eventSenderDisplayName;
|
||||
@property (nonatomic, assign) RoomInputToolbarViewSendMode sendMode;
|
||||
@property (nonatomic, assign) BOOL isEncryptionEnabled;
|
||||
- (void)setVoiceMessageToolbarView:(UIView *)voiceMessageToolbarView;
|
||||
- (CGFloat)toolbarHeight;
|
||||
|
||||
@@ -80,7 +81,7 @@ typedef NS_ENUM(NSUInteger, RoomInputToolbarViewSendMode)
|
||||
`RoomInputToolbarView` instance is a view used to handle all kinds of available inputs
|
||||
for a room (message composer, attachments selection...).
|
||||
*/
|
||||
@interface RoomInputToolbarView : MXKRoomInputToolbarView
|
||||
@interface RoomInputToolbarView : MXKRoomInputToolbarView<RoomInputToolbarViewProtocol>
|
||||
|
||||
/**
|
||||
The delegate notified when inputs are ready.
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
|
||||
#import "ThemeService.h"
|
||||
#import "GeneratedInterface-Swift.h"
|
||||
#import "GBDeviceInfo_iOS.h"
|
||||
|
||||
static const CGFloat kContextBarHeight = 24;
|
||||
static const CGFloat kActionMenuAttachButtonSpringVelocity = 7;
|
||||
@@ -30,7 +29,7 @@ static const NSTimeInterval kActionMenuAttachButtonAnimationDuration = .4;
|
||||
static const NSTimeInterval kActionMenuContentAlphaAnimationDuration = .2;
|
||||
static const NSTimeInterval kActionMenuComposerHeightAnimationDuration = .3;
|
||||
|
||||
@interface RoomInputToolbarView() <UITextViewDelegate, RoomInputToolbarTextViewDelegate, RoomInputToolbarViewProtocol>
|
||||
@interface RoomInputToolbarView() <UITextViewDelegate, RoomInputToolbarTextViewDelegate>
|
||||
|
||||
@property (nonatomic, weak) IBOutlet UIView *mainToolbarView;
|
||||
|
||||
@@ -281,69 +280,6 @@ static const NSTimeInterval kActionMenuComposerHeightAnimationDuration = .3;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)updatePlaceholder
|
||||
{
|
||||
// Consider the default placeholder
|
||||
|
||||
NSString *placeholder;
|
||||
|
||||
// Check the device screen size before using large placeholder
|
||||
BOOL shouldDisplayLargePlaceholder = [GBDeviceInfo deviceInfo].family == GBDeviceFamilyiPad || [GBDeviceInfo deviceInfo].displayInfo.display >= GBDeviceDisplay5p8Inch;
|
||||
|
||||
if (!shouldDisplayLargePlaceholder)
|
||||
{
|
||||
switch (_sendMode)
|
||||
{
|
||||
case RoomInputToolbarViewSendModeReply:
|
||||
placeholder = [VectorL10n roomMessageReplyToShortPlaceholder];
|
||||
break;
|
||||
|
||||
case RoomInputToolbarViewSendModeCreateDM:
|
||||
placeholder = [VectorL10n roomFirstMessagePlaceholder];
|
||||
break;
|
||||
|
||||
default:
|
||||
placeholder = [VectorL10n roomMessageShortPlaceholder];
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_isEncryptionEnabled)
|
||||
{
|
||||
switch (_sendMode)
|
||||
{
|
||||
case RoomInputToolbarViewSendModeReply:
|
||||
placeholder = [VectorL10n encryptedRoomMessageReplyToPlaceholder];
|
||||
break;
|
||||
|
||||
default:
|
||||
placeholder = [VectorL10n encryptedRoomMessagePlaceholder];
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (_sendMode)
|
||||
{
|
||||
case RoomInputToolbarViewSendModeReply:
|
||||
placeholder = [VectorL10n roomMessageReplyToPlaceholder];
|
||||
break;
|
||||
|
||||
case RoomInputToolbarViewSendModeCreateDM:
|
||||
placeholder = [VectorL10n roomFirstMessagePlaceholder];
|
||||
break;
|
||||
|
||||
default:
|
||||
placeholder = [VectorL10n roomMessagePlaceholder];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
self.placeholder = placeholder;
|
||||
}
|
||||
|
||||
- (void)setPlaceholder:(NSString *)inPlaceholder
|
||||
{
|
||||
[super setPlaceholder:inPlaceholder];
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
import Foundation
|
||||
import UIKit
|
||||
import GBDeviceInfo
|
||||
|
||||
extension RoomInputToolbarView {
|
||||
open override func sendCurrentMessage() {
|
||||
@@ -28,15 +29,66 @@ extension RoomInputToolbarView {
|
||||
self.becomeFirstResponder()
|
||||
temp.removeFromSuperview()
|
||||
}
|
||||
|
||||
|
||||
// Send message if any.
|
||||
if let messageToSend = self.attributedTextMessage, messageToSend.length > 0 {
|
||||
self.delegate.roomInputToolbarView(self, sendAttributedTextMessage: messageToSend)
|
||||
}
|
||||
|
||||
|
||||
// Reset message, disable view animation during the update to prevent placeholder distorsion.
|
||||
UIView.setAnimationsEnabled(false)
|
||||
self.attributedTextMessage = nil
|
||||
UIView.setAnimationsEnabled(true)
|
||||
}
|
||||
}
|
||||
|
||||
@objc extension RoomInputToolbarView {
|
||||
func updatePlaceholder() {
|
||||
updatePlaceholderText()
|
||||
}
|
||||
}
|
||||
|
||||
extension RoomInputToolbarViewProtocol where Self: MXKRoomInputToolbarView {
|
||||
func updatePlaceholderText() {
|
||||
// Consider the default placeholder
|
||||
|
||||
let placeholder: String
|
||||
|
||||
// Check the device screen size before using large placeholder
|
||||
let shouldDisplayLargePlaceholder = GBDeviceInfo.deviceInfo().family == .familyiPad || GBDeviceInfo.deviceInfo().displayInfo.display.rawValue >= GBDeviceDisplay.display5p8Inch.rawValue
|
||||
|
||||
if !shouldDisplayLargePlaceholder {
|
||||
switch sendMode {
|
||||
case .reply:
|
||||
placeholder = VectorL10n.roomMessageReplyToShortPlaceholder
|
||||
case .createDM:
|
||||
placeholder = VectorL10n.roomFirstMessagePlaceholder
|
||||
|
||||
default:
|
||||
placeholder = VectorL10n.roomMessageShortPlaceholder
|
||||
}
|
||||
} else {
|
||||
if isEncryptionEnabled {
|
||||
switch sendMode {
|
||||
case .reply:
|
||||
placeholder = VectorL10n.encryptedRoomMessageReplyToPlaceholder
|
||||
|
||||
default:
|
||||
placeholder = VectorL10n.encryptedRoomMessagePlaceholder
|
||||
}
|
||||
} else {
|
||||
switch sendMode {
|
||||
case .reply:
|
||||
placeholder = VectorL10n.roomMessageReplyToPlaceholder
|
||||
|
||||
case .createDM:
|
||||
placeholder = VectorL10n.roomFirstMessagePlaceholder
|
||||
default:
|
||||
placeholder = VectorL10n.roomMessagePlaceholder
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
self.placeholder = placeholder
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user