Files
bundesmessenger-ios/Riot/Modules/Common/Recents/RecentsViewController.h
T
JanNiklas Grabowski b298dedc22 chore: update from foss 1.11.19 (MESSENGER-6656)
Merge commit 'f823ab9aae70e8d15ed7cc079210dd9bbbb6c8e1' into feature/foss_update_1_11_19

* commit 'f823ab9aae70e8d15ed7cc079210dd9bbbb6c8e1':
  finish version++
  version++
  comments
  update submodule
  remove obsolete tests
  removed unused code
  update submodule
  fix
  Libolm removal
  update license macro
  update license
  Prepare for new sprint

# Conflicts:
#	Config/AppVersion.xcconfig
#	IDETemplateMacros.plist
#	LICENSE
#	README.md
#	Riot/Categories/MXSession+Riot.m
#	Riot/Managers/EncryptionKeyManager/EncryptionKeyManager.swift
#	Riot/Managers/KeyValueStorage/Extensions/Keychain.swift
#	Riot/Managers/KeyValueStorage/KeyValueStore.swift
#	Riot/Managers/KeyValueStorage/KeychainStore.swift
#	Riot/Managers/KeyValueStorage/MemoryStore.swift
#	Riot/Managers/PushNotification/PushNotificationService.m
#	Riot/Managers/Settings/RiotSettings.swift
#	Riot/Managers/Settings/Shared/RiotSharedSettings.swift
#	Riot/Modules/Analytics/AnalyticsUIElement.swift
#	Riot/Modules/Application/AppCoordinator.swift
#	Riot/Modules/Application/LegacyAppDelegate.h
#	Riot/Modules/Application/LegacyAppDelegate.m
#	Riot/Modules/Authentication/Legacy/AuthenticationViewController.h
#	Riot/Modules/Authentication/Legacy/AuthenticationViewController.m
#	Riot/Modules/Authentication/Legacy/Views/AuthInputsView.h
#	Riot/Modules/Authentication/Legacy/Views/AuthInputsView.m
#	Riot/Modules/Common/Recents/DataSources/RecentsDataSource.m
#	Riot/Modules/Common/Recents/RecentsViewController.m
#	Riot/Modules/Common/WebViewController/WebViewViewController.m
#	Riot/Modules/Contacts/Details/ContactDetailsViewController.m
#	Riot/Modules/Contacts/Views/ContactTableViewCell.m
#	Riot/Modules/Favorites/FavouritesViewController.h
#	Riot/Modules/Favorites/FavouritesViewController.m
#	Riot/Modules/GlobalSearch/UnifiedSearchViewController.m
#	Riot/Modules/People/PeopleViewController.h
#	Riot/Modules/People/PeopleViewController.m
#	Riot/Modules/Room/ContextualMenu/ReactionsMenu/ReactionsMenuViewModel.swift
#	Riot/Modules/Room/DataSources/RoomDataSource.m
#	Riot/Modules/Room/Files/RoomFilesViewController.m
#	Riot/Modules/Room/Members/Detail/RoomMemberDetailsViewController.m
#	Riot/Modules/Room/Members/RoomParticipantsViewController.m
#	Riot/Modules/Room/RoomViewController.m
#	Riot/Modules/Room/Settings/RoomSettingsViewController.m
#	Riot/Modules/Room/TimelineCells/RoomCreationIntro/RoomCreationIntroCell.swift
#	Riot/Modules/Room/TimelineCells/RoomCreationIntro/RoomCreationIntroCellContentView.swift
#	Riot/Modules/Room/TimelineCells/RoomCreationIntro/RoomCreationIntroViewData.swift
#	Riot/Modules/Room/TimelineCells/RoomTimelineCellIdentifier.h
#	Riot/Modules/Rooms/RoomsViewController.h
#	Riot/Modules/Rooms/ShowDirectory/Cells/Network/DirectoryNetworkTableHeaderFooterView.swift
#	Riot/Modules/Rooms/ShowDirectory/Cells/Room/DirectoryRoomTableViewCell.swift
#	Riot/Modules/Rooms/ShowDirectory/PublicRoomsDirectoryViewModel.swift
#	Riot/Modules/Secrets/Recover/RecoverWithKey/SecretsRecoveryWithKeyCoordinator.swift
#	Riot/Modules/Secrets/Recover/RecoverWithKey/SecretsRecoveryWithKeyViewController.swift
#	Riot/Modules/Secrets/Recover/RecoverWithPassphrase/SecretsRecoveryWithPassphraseCoordinator.swift
#	Riot/Modules/Secrets/Recover/RecoverWithPassphrase/SecretsRecoveryWithPassphraseViewController.swift
#	Riot/Modules/Secrets/Recover/SecretsRecoveryCoordinator.swift
#	Riot/Modules/SecureBackup/Setup/Intro/SecureBackupSetupIntroViewController.swift
#	Riot/Modules/SecureBackup/Setup/Intro/SecureBackupSetupIntroViewModel.swift
#	Riot/Modules/SecureBackup/Setup/Intro/SecureBackupSetupIntroViewModelType.swift
#	Riot/Modules/SetPinCode/PinCodePreferences.swift
#	Riot/Modules/SetPinCode/SetupBiometrics/BiometricsAuthenticationPresenter.swift
#	Riot/Modules/Settings/Security/ManageSession/ManageSessionViewController.m
#	Riot/Modules/Settings/Security/SecurityViewController.m
#	Riot/Modules/Settings/SettingsViewController.m
#	Riot/Modules/SplitView/SplitViewCoordinator.swift
#	Riot/Modules/SplitView/SplitViewCoordinatorType.swift
#	Riot/Modules/StartChat/StartChatViewController.m
#	Riot/Modules/TabBar/MasterTabBarController.h
#	Riot/Modules/TabBar/MasterTabBarController.m
#	Riot/Utils/EventFormatter.m
#	Riot/Utils/HTMLFormatter.swift
#	Riot/Utils/Tools.m
#	RiotNSE/NotificationService.swift
2024-10-18 15:45:54 +02:00

248 lines
6.1 KiB
Objective-C

/*
Copyright 2024 New Vector Ltd.
Copyright 2017 Vector Creations Ltd
Copyright 2015 OpenMarket Ltd
SPDX-License-Identifier: AGPL-3.0-only
Please see LICENSE in the repository root for full details.
*/
#import "MatrixKit.h"
@class RootTabEmptyView;
@class AnalyticsScreenTracker;
@class UserIndicatorStore;
@class RecentCellContextMenuProvider;
/**
Notification to be posted when recents data is ready. Notification object will be the RecentsViewController instance.
*/
FOUNDATION_EXPORT NSString *const RecentsViewControllerDataReadyNotification;
@interface RecentsViewController : MXKRecentListViewController <MXKRecentListViewControllerDelegate>
{
@protected
/**
The room identifier related to the cell which is in editing mode (if any).
*/
NSString *editedRoomId;
/**
The image view of the (+) button.
*/
UIImageView* plusButtonImageView;
/**
Current alert (if any).
*/
__weak UIAlertController *currentAlert;
/**
The list of the section headers currently displayed in the recents table.
*/
NSMutableArray<UIView*> *displayedSectionHeaders;
/**
The current vertical position of the first displayed section header.
*/
CGFloat firstDisplayedSectionHeaderPosY;
}
@property (weak, nonatomic) IBOutlet UIView *stickyHeadersTopContainer;
@property (weak, nonatomic) IBOutlet UIView *stickyHeadersBottomContainer;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *stickyHeadersTopContainerHeightConstraint;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *stickyHeadersBottomContainerHeightConstraint;
/**
If YES, the table view will scroll at the top on the next data source refresh.
It comes back to NO after each refresh.
*/
@property (nonatomic) BOOL shouldScrollToTopOnRefresh;
/**
Tell whether the search bar at the top of the recents table is enabled. YES by default.
*/
@property (nonatomic) BOOL enableSearchBar;
/**
Tell whether the drag and drop option are enabled. NO by default.
This option is used to move a room from a section to another.
*/
@property (nonatomic) BOOL enableDragging;
/**
Tell whether the sticky headers are enabled. NO by default.
*/
@property (nonatomic) BOOL enableStickyHeaders;
/**
Define the height of each sticky headers (30.0 by default).
*/
@property (nonatomic) CGFloat stickyHeaderHeight;
/**
Empty view to display when there is no item to show on the screen.
*/
@property (nonatomic, weak) RootTabEmptyView *emptyView;
/**
The bottom anchor used to layout `emptyView` in the absence of a FAB.
If this value is `nil` the empty view will be anchored to the bottom of its superview.
*/
@property (nonatomic, weak) NSLayoutYAxisAnchor *emptyViewBottomAnchor;
/**
The screen timer used for analytics if they've been enabled. The default value is nil.
*/
@property (nonatomic) AnalyticsScreenTracker *screenTracker;
/**
A store of user indicators that lets the room present and dismiss indicators without
worrying about the presentation context or memory management.
*/
@property (nonatomic, strong) UserIndicatorStore *userIndicatorStore;
@property (nonatomic, readonly) RecentCellContextMenuProvider *contextMenuProvider;
/**
Return the sticky header for the specified section of the table view
@param tableView the table view object asking for the view object.
@param section an index number identifying a section of tableView .
@return the sticky header.
*/
- (UIView *)tableView:(UITableView *)tableView viewForStickyHeaderInSection:(NSInteger)section;
/**
Release the resources used to display the sticky headers.
*/
- (void)resetStickyHeaders;
/**
Prepare the sticky headers display.
*/
- (void)prepareStickyHeaders;
/**
Refresh the cell selection in the table.
This must be done accordingly to the currently selected room in the master tabbar of the application.
@param forceVisible if YES and if the corresponding cell is not visible, scroll the table view to make it visible.
*/
- (void)refreshCurrentSelectedCell:(BOOL)forceVisible;
/**
Leave the edition mode
@param forceRefresh force table view refresh
*/
- (void)cancelEditionMode:(BOOL)forceRefresh;
- (void)userInterfaceThemeDidChange;
#pragma mark - Room handling
/**
Action triggered when the user taps on the (+) button.
Create an empty room by default.
*/
- (void)onPlusButtonPressed;
/**
Open screen to create a new chat room.
*/
- (void)startChat;
/**
Open the QR code scanner for scanning permalinks.
*/
- (void)scanPermalink;
/**
Open screen to create a new room.
*/
- (void)createNewRoom;
/**
Join a room by alias or id.
*/
- (void)joinARoom;
/**
Leave the selected room.
*/
- (void)leaveEditedRoom;
/**
Update the selected room tag.
*/
- (void)updateEditedRoomTag:(NSString*)tag;
/**
Enable/disable the direct flag of the selected room.
*/
- (void)makeDirectEditedRoom:(BOOL)isDirect;
/**
Enable/disable the notifications for the selected room.
*/
- (void)muteEditedRoomNotifications:(BOOL)mute;
/**
Edit notification settings for the selected room.
*/
- (void)changeEditedRoomNotificationSettings;
/**
Show room directory.
*/
- (void)showRoomDirectory;
/**
Show a public room.
*/
- (void)openPublicRoom:(MXPublicRoom *)publicRoom;
/**
Show a room using its roomID
*/
- (void)showRoomWithRoomId:(NSString*)roomId inMatrixSession:(MXSession*)matrixSession;
#pragma mark - Scrolling
/**
Scroll to the top of the recents list.
*/
- (void)scrollToTop:(BOOL)animated;
/**
Scroll the next room with missed notifications to the top.
@param section the table section in which the operation must be applied.
*/
- (void)scrollToTheTopTheNextRoomWithMissedNotificationsInSection:(NSInteger)section;
#pragma mark - Actions
- (void)didTapOnSectionHeader:(UIGestureRecognizer*)gestureRecognizer;
- (void)didSwipeOnSectionHeader:(UISwipeGestureRecognizer*)gestureRecognizer;
#pragma mark - Empty view
/**
Overrides this method to fill the empty view with data.
*/
- (void)updateEmptyView;
/**
Overrides this method to indicate if empty view should be shown. Returns NO by default.
*/
- (BOOL)shouldShowEmptyView;
// bwi called by mastertabcontroller on pin login
- (void)checkAppVersionOutdated;
- (void)checkAppVersionDeprecated;
@end