Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[feature/new-navigation] New navigation (#1162) [feature/css] CSS The…
…meing #1194 [feature/gridview] Gridview implementation (v12) (#1195) # Changes from [feature/new-navigation] ## Description Contains various changes and improvements to the view navigation and hierarchy of version 12: - [x] sidebar - [x] remove legacy table view code and use new UI for OC10, too - [x] support for status 425 items - [x] show folder statistics and drive quota (if one is set) at the bottom - [x] show correct UI for ocis-based servers on first login for branded clients - [x] add missing German localizations - [x] basic sharing fixes - [x] new location picker, import sheet and share extension - [x] show new [AppStore UI](https://developer.apple.com/documentation/storekit/appstore/3803198-showmanagesubscriptions) for managing AppStore subscriptions - [x] browser-like navigation - [x] tappable breadcrumb view ## Merges This PR was started on a merge from [feature/new-search] #1142 and [feature/app-provider] #1151 to leverage work from previous PRs directly. In addition, the following PRs and changes have been merged into this branch: - [feature/disable-fileprovider] Disable access to File Provider via MDM #1158 - [feature/disallow-extensions] Add option to disallow extensions, show action for unviewable filetypes #1140 - [feature/ats-control] Add DISABLE_PLAIN_HTTP build flag #1136 - [feature/postbuild-settings] Postbuild Settings #1179 - merge `11.11.0` and `fastlane/enterprise-adhoc` changes from `master` # Changes from [feature/css] Implements CSS themeing for the V12 UI. [Documentation](https://github.com/owncloud/ios-app/tree/feature/css/ownCloudAppShared/User%20Interface/Theme/CSS#readme) # Changes from [feature/gridview] ## Description - implements a grid view for items, with switching possible with a new button i the sort bar. - implements a dynamically adapting grid layout – used for item grid view and the spaces grid overview - fixes spaces grid staying on screen after disconnect - fixes more (...) buttons next to space titles being compressed sideways in spaces grid - fixes quota not being displayed for Personal space - fixes "empty folder" being shown instead of "loading" + indicator ## Related Issue #744 # Autogenerated squashed commit messages * - change "smart folders" naming to "search view" - add missing strings to Localizable.strings * - update SDK to fix issue with detached spaces' items turning up in search results * Updated to current Xcode version * - update KNOWN_ISSUES.md to reflect changes * - ItemSearchSuggestionsViewController: - hide save search/template popup button unless saving is actually available in a scope - remove saved searches from the popup as they are now also available elsewhere - SearchViewController: strip whitespace when deciding what content to show (suggestion / noItems / results) - update SDK * - add SegmentView: composing items (SegmentViewItem) as views (SegmentViewItemView), applying background, round corners, colors, etc. (styling still work-in-progress) - SavedSearchCell: make use of SegmentView for richer, token-based visualization of saved searches - OCSavedSearch: - new property to indicate if .name has been defined by the user - convenience method to quickly create an array of SegmentViewItems from a OCSavedSearch - CollectionViewController: automatically apply .tableBackgroundColor as background color - SearchViewController: strip whitespace from search queries before determining which content to show - GradientView: add support for direction - UIView+EmbedAndLayout: convenience methods to embed views horizontally and apply custom insets and spacing - ThemeView: add hook to setup subviews upon insertion into superview * - update KNOWN_ISSUES evolution part with remaining idea on what can be done with SegmentView and how it would benefit search - Theming support improvements - ThemeCollection: add tokenColors and tableRowButtonColors - SegmentViewItemView: add support for themeing - SegmentViewItem: simplify styles - SearchViewController: theme the search field - SavedSearchCell: add support for themeing * - bump build/version to 230 * SDK update - removes space type from presentable / spaces list - adds new log.replace-newline option and makes it default * Fix App Provider review findings from #1151: - close button visibility on mixed/dark themes - display error messages when errors occur - add missing translations * - update SDK for additional bugfix * - ItemListCell: add support for server-side processing state - fix bug that caused an empty spaces list when offline (via SDK) * - OCItem+FileProviderItem: add support for OCItem.state, making non-local files that are processing remotely non-readable - SDK update * - bump build number to 231 * - add new Tool "LocaleDiff" to find superfluous and missing strings in an other translation - add German translations for all missing strings in ownCloud/Resources/en.lproj/Localizable.strings * - bump build number to 232 * - make Beta warning localizable and localize it in German * - add additional strings files to LocaleDiff scheme - add missing German ownCloudAppFramework locales * - add missing string to Localizable.strings * - update SDK to get improved error messages for downloads of files with status 425 * - update localizations * - SDK update: fix duplicate/"ghost" activities visual issue - ClientActivityViewController: fix Xcode 14 warnings - PopupButtonController: add themeing support - NSObject+ThemeApplication: add proper support for UISearchTextField, fixing #118 text color issue * - ClientRootViewController: do not restore view hierarchy for drive-based accounts since that's not yet implemented and the wrong view controllers would be created - ClientItemViewController: - use a UILabel as navigationItem.titleView to address UINavigationBar layout issues (fixing reports finding 3 in [censored] issue 118) - update title as the folder's name is being changed - update underlying emptyActions when the folder they target is moved - update SDK for moved item detection fixes * - bump build number to 233 * - SDK update to fix possible crash bug - address open/public Swift compiler warnings * - bump build number to 234 * - bump build number to 235 * Fix issues with ocis sharing: - respect OCCapabilities.federatedSharingSupported - GroupSharingTableViewController: fix delete share issue by calling the correct method * - bump version to 236 * - fix Xcode 14 warnings * - upgrade SDK - adapt to OCShare.itemType type change - replace UIImage(systemName:) code with one using OCSymbol - fix more Xcode 14 warnings * - update SDK to gain OCStatistic capabilities - ClientItemViewController: - implement support for "folder removed" state - adjust message spacing - refactor navigation bar code - add footer to display statistics for the current location, feeding from OCQuery-provided OCStatistics - prepare to also include quota information in the footer - update KNOWN_ISSUES.md * - ItemListCell: align separator layout guide with icon - ViewCell: add separatorLayoutGuideCustomizer to allow customization of separator layout guide for individual views - ClientItemViewController: add support to display quota information (space remaining) - UIView+EmbedAndLayout: add code to embed multiple views vertically, modify existing ConstraintSet type * - update SDK to gain fixed "Personal" and "Shares" names * - ios-sdk: OCSyncActionCopyMove: prevent copying and moving of items into themselves - ViewCell: fix seperatorLayoutGuide constraint on reuse (could cause visual glitch of full-length separator line when there shouldn't have been one) - update known issues * - SDK update to gain Accept-Language header addition for in-app web app presentation - ClientWebAppViewController: implement logic to immediately dismiss the view controller when tapping the close button, but keep the web view alive until the "close" event arrives from the webview - or 10 seconds have passed * - Action: add new class setting for excluded activities - OpenInAction: honor excluded activities, bring up UIActivityViewController instead of UIDocumentInteractionController even for a single item if activities are excluded - ownCloud.xcscheme: add env var example for action.excludedSystemActivities to block copying to pasteboard * - update SDK to bring over UUID-based Shares Jail detection * - bump build number to 237 * - StaticLoginSetupViewController: add OCConnection.connect() / .disconnect() to enrich bookmark with metadata and user name during setup. Required to present the correct UI for space-based accounts. * - bump build number to 238 * - fix "App Provider language always English" via ios-sdk update * - bump version to 239 * - update SDK for specific error message when trying to open a file that's being processed via open-web or open * - update SDK * - ClientSidebarViewController: side bar view controller - CollectionViewSection: add hideIfEmptyDataSource feature/property - ClientContext: add ViewControllerPusher protocol and methods for unifying pushing of view controllers to navigation / into view - OCDrive+Interactions, OCItem+Interactions, OCSavedSearch+Interactions: move to new ClientContext method for pushing * - CollectionViewController: - add support for hierarchic collection views and hierarchic data sources - add shouldDeselect() method - use snapshot.reconfigureItems() instead of snapshot.reloadItems() for more efficient updates (reuses cell rather than recreating it from scratch) - CollectionViewCellConfiguration: - add new sideBar StyleType - UIView+EmbedAndLayout: add AnchorSet and extend API to utilize it - many fixes * Snapshot with sidebar basically working, before making deeper changes - App Controllers - AppRootViewController: the root view controller of the entire app, manages sidebar and more - AppSidebarViewController: side bar view controller, managing the side bar / first view - Account Connection/Consumer classes - AccountConnection: manages a connection for the UI and makes its resources and message available to one or more consumers - AccountConnectionPool: creates new and keeps track of AccountConnection instances - AccountConnectionRichStatus: helper class to provide a consistent, simple, rich status for the whole account (wip) - AccountConsumer: group everything that is linked to an OCCore, allowing simple and clean addition and removal of consumers, providing a layer of separation/abstraction from UI concerns - Account Controller classes - AccountController: links AccountConnection to the UI, provides sidebar content for an account - AccountControllerSection: makes AccountController contents available as a CollectionViewSection - AccountControllerCell: provides a cell representation for an AccountController, providing an icon to disconnect ("eject") a connection - DriveListCell: add an icon for the sidebar, representing the (special) kind of drive - CollectionView: - CollectionSidebarViewController: extend ViewControllerNavigationPusher with sidebar view controller parameter - CollectionViewCellProvider+StandardImplementations: add cell provider for .sidebar style type - CollectionViewSection: - implement OCDataItem + OCDataItemVersioning protocol - improve support for handling dynamic updates in hierarchic layouts - CollectionViewController: - add support providing sections from an OCDataSource (just set .sectionsDataSource) - properly support per-section ClientContext (use section.clientContext if set) - OCDataItem+InteractionProtocols: add new, optional method to DataItemSelectionInteraction to provide control over whether an item should be selectable - OCLocation+Interactions: implement the DataItemSelectionInteraction - general: move many classes from ownCloud.app to ownCloudApp.framework - Temporary changes: - ClientRootViewController: semi-functional, intermediate version to validate side bar design, to be removed entirely - ClientTabBarController: see ClientRootViewController - SceneDelegate: move to AppRootViewController as root view controller * - move from UIImage(systemName:) to OCSymbol.icon(forSymbolName:) in most places - split AppSidebarViewController into framework (ClientSidebarViewController in ownCloudAppShared) and app (extension ClientSidebarViewController) parts and extend the implementation with settings and account creation toolbar items - BookmarkInfoViewController: add hook that gets called when the user taps "Done" and dismisses the view controller - BookmarkViewController: add extension with convenience method to set up and display the BookmarkViewController for editing and creating new bookmarks - OCBookmarkManager: - OCBookmarkManager+Management: extensions in app and framework to set up and display the BookmarkInfoViewController or delete an account, including confirmation by the user - OCBookmarkManager+Locking: move app-local locking of bookmarks to the ownCloudAppShared framework and extend on the concept with new attemptLock() method - AccountConnection: - add new .noCore status to differentiate it from .offline - make consumer optional for connect() and disconnect() - post AccountConnection.StatusChangedNotification notifications when .status changes - RichStatus: add property for labeling the interaction - AccountController: - add saved searches to the items data source - AccountControllerCell: listen to AccountConnection.StatusChangedNotification to update colored status indicator, fix other status reporting glitches - SavedSearchCell: add specific cell for .sideBar style - Navigation Revocations - new toolkit to detect when presented content has disappeared and provide a handling path (consult the respective README.md for details) - NavigationRevocationEvent: struct for a rich expression of events like disconnects, drive removals and more - NavigationRevocationAction: listen to events and perform an action once they find a matching event, lifetime can be to other objects - NavigationRevocationManager: global management of NavigationRevocationAction with memory semantics to allow automatic removal after a NavigationRevocationAction has become obsolete - NavigationRevocationTrigger: provides triggers for events such as specific items being removed from a datasource, objects being deallocated and more, can send a global event and/or invoke an action directly - UIViewController+NavigationRevocation: provide a simple API to register a view controller for revocation to common events - ClientContext: add new NavigationRevocationHandler protocol and property to handle navigation revocations - CollectionSidebarViewController: add support for NavigationRevocationHandler - OCDrive/OCLocation/OCSavedSearch+Interactions: register view controllers for Navigation Recovation, using NavigationRevocationHandler - ClientItemViewController: - show special drive header only for .project (so not for personal or Shares Jail) spaces - fix navigation title * - bump build number to 240 - AppRootViewController: - add focusedBookmark tracking - add focusedBookmark specific notificationPresenter and cardMessagePresenter - port over message presentation - port over beta warning - port over review prompting - port over enforced passcode setup (as of yet untested) - BookmarkViewController: - ensure editing uses the latest copy from OCBookmarkManager - present modally rather than .overFullscreen on iPad - ClientActivityViewController: add initializer for AccountConnection and use AccountConnectionConsumer to hook into events - ClientSessionManager: remove unused code, ensure delegates are only weakly referenced - AccountConnection: complete MessageSelector support - AccountConnectionConsumer: switch form NSObject to AnyObject, add new method to AccountConnectionMessageUpdates to track message counts - AccountController: introduce SpecialItems type, property and data source - AccountControllerCell: add support for message counting badge - ActionCell: add sidebar support, add badgeCount accessory support - CollectionSidebarAction: - new class, subclassing OCAction to provide specific functionality around Sidebars, f.ex. dynamic creation of view controllers upon selection, keeping track of and caching previously generated view controllers - also implements extensions to OCAction to wrap properties - CollectionSidebarViewController: add new method sectionOfCurrentSelection to easily determine the section in which the currently selected item is located - ClientSidebarViewController: add .focusedBookmark property (KVO capable) - OCAction+Interactions: add support for supportsDrop * - update KNOWN_ISSUES - AppRootViewController: add support for beta warning, bookmark editing, message presentation, release notes and more - AppDelegate: launch into AppRootViewController instead of ServerListTableViewController - remove ServerListTableViewController from target - ReleaseNotesDatasource: clean up code and make class-level methods what were instance methods - rename "Search view" to "Saved search" - AccountConnection: add AuthFailure struct and status and make Status a non-String enum - AccountConnectionPool: add AccountConnectionAuthErrorConsumer to new connections by default - refactor authentication error handling into - AccountAuthentication* classes - AccountConnectionAuthErrorConsumer (as helper for AccountConnection) - AccountConnectionErrorHandler (as helper for AccountController) - AccountController: - keep references to important items - add support for saved searches - add support for OC10 root folder - clicking spaces shows a spaces grid (AccountControllerSpacesGridViewController) - AccountControllerCell: adapt to Status enum changes - ActionCell: add support for different types (coloring), accessories, badge count, button labels and more - DriveGridCell: cell subclass to support AccountControllerSpacesGridViewController - DriveListCell: add grid support - CollectionViewController: - add performDataSourceUpdate() mechanism to avoid changes being made to the data sources while other changes are already made - CollectionSidebarAction: - extend OCAction properties - implement class to show view controllers on selection - add support for children - CollectionViewAction: actions to be performed on the collection view when specific items become available - CollectionViewSection: add support for .grid() layout, fix crash bug - ClientContext: add alertQueue, bookmarkEditingHandler, .presentationViewController property and present(viewController:animated:completion:) method - ClientSidebarViewController: add support for default view controller - ClientDefaultViewController: content shown when nothing is selected in the sidebar - ClientItemViewController: add select all/deselect all support - (re)start implementation of location picker (WIP) - UIView+EmbedAndLayout: add new method for centering another view inside an existing view, with minimum/maxiumum/fixed size and minimum insets - Theme: add support for split view content themeing, temporarily remove almost all themes until support for them arrives - ThemeNavigationController: move from ThemeApplierTokens to implementing Themeable - AppUserActivity: start (re)implementing support for NSUserActivity * - bump build number to 241 * - update KNOWN_ISSUES - move OCResourceText+ViewProvider and Down framework from app to ownCloudAppShared as it is needed for a rich spaces view in the location picker - extract embedding behaviour from AppRootViewController into EmbeddingViewController - implement ClientLocationPicker and ClientLocationPickerViewController - rewrite Share Extension based on ClientLocationPicker and ComposedMessageView - upgrade AutoUploadSecttingsSection and auto photo/video uploads to use ClientLocationPicker and OCLocations - migrate or partially rewrite CopyAction, MoveAction, ImportFilesController to use ClientLocationPicker - AccountConnectionPool: add method to disconnect all connections in the pool - AccountController: add options to - change cell appearance - hide the account pill - (not) auto select the personal folder - Action: - add method to provide a UIBarButtonItem - add new location .locationPickerBar for appearance in ClientLocationPicker - WebApp: ensure apps are presented full screen on iPad, not in a popover - DriveGridCell: always show title + subtitle to align titles, truncate both at 1 line - ItemListCell: add support for appearance (ClientItemAppearance) for regular and disabled appearances - CollectionViewController: add .hideNavigationBar property that does what it says on the tin - ClientContext: expand validation system to allow passing a ClientContext to validation methods and permission handlers (allows to implement behaviour for f.ex. a specific view controller rather than all view controllers descending from it) - ClientItemViewController: add .location and .viewControllerUUID properties - Interactions for OCDrive, OCItem, OCLocation: set bookmarkUUID in locations that are used for newly created ClientItemViewControllers - ComposedMessageView: add support for .buttons - OCBookmarkManager+Management: make sure to use exact OCBookmark instance when removing a bookmark - UINavigationItem+Extension: simplify workaround for iOS 16 navigation title truncation bug - remove ClientDirectoryPickerViewController and ClientSpacesTableViewController - bump build number to 241 * - BookmarkViewController/IssuesCardViewController/OCLicenseEnvironment: adapt to OCBookmark.certificateStore change - xcscheme: add connection.associated-certificates-tracking-rule example that opts in all *.local certificates into certificate change tracking - remove ClientTabBarController - update known issues * - update SDK - update KNOWN_ISSUES.md - remove EarlGrey and everything that depends on it - AccountController: - SpecialItems -> ExtraItems to clarify features being distinct - collect "real" special items in three dictionaries rather than each in its own instance variable * - remove legacy migration * - DisplayHostViewController: update to use an OCDataSource subscription to track underlying items, not an OCQuery - AccountController: add Quick Access, including Favorites and Available Offline - OpenInWebAppAction: add keyboard shortcut (fixing finding in #1151) - OCSavedSearch+Interactions: add new .customIconName and .useNameAsTitle properties and helper methods - SavedSearchCell: add support for .customIconName and .useNameAsTitle - CollectionViewController: add .insert(sections:at:) method - ClientContext add .queryDatasource property - SortedItemDataSource: helper data source to allow sorting of items from other data sources - OCItemPolicy+Interactions: add context menu and swipe action support to remove policy - remove unused UIImageView+Thumbnails.swift, mark others for removal * - bump build number to 243 * - AccountController: - add support for showing/hiding account pill - add sharing items - add support for favorites support capability - CollectionViewController: - separate usage of Wrapped IDs from hierarchic content - trigger data source updated when sections are hidden/shown - add setNeedsSourceUpdate() for more efficient updates - add workaround for UICollectionViewDiffableDataSource requesting cells from the wrong section when moved from there to another section - CollectionViewSection: fix hideIfEmptyDataSource issue (previously did hide when not empty) - ClientSharedWithMeViewController: new view controller to present pending, accepted and declined shares - MoreViewHeader: add support for favorites support capability * - OCShare+Interactions: add swipe + popup actions - ClientSharedWithMeViewController: add title to list - update SDK * - NEW: UniversalItemListCell - provides a single cell implementation for two-line (title + detail) + thumbnail + accessories content - fine-grained encapsulation of content into UniversalItemListCell.Content objects for atomic, extensible content updates - fed through a content provider protocol (UniversalItemListCellContentProvider) that classes can adopt to asynchronously provide and update content via a completion handler - built-in accessory support for more, reveal, progress and messages - uses SegmentView for details line to allow rich/mixed content for different types - UniversalItemListCellContentProvider implementation for OCItem, replacing ItemListCell - UniversalItemListCellContentProvider implementation for OCShare - InlineMessageCenter: make method names follow a single pattern - ResourceItemIcon: add convenience method to return the best matching icon for a mime type - SegmentView: - add new alpha property for items - various fixes (preventing unwanted animations and flickering due to tinting images + text, fix a retain loop) - ThemeView: add missing call to didMoveToSuperview() * - remove ItemListCell - update KNOWN_ISSUES.md - UnshareAction: add support for unsharing accepted "local" shares - add missing localizations - AccountConnection: inject shareJailQueryCustomizer into newly retrieved OCCore - AccountController: no longer unfold Spaces by default - ClientSharedByMeViewController: view controller to present shares shared to other users and links, including reveal and copy to clipboard - fix navigation title UILabel becoming too large - extend UniversalItemListCellContentProvider for OCShare with copy to clipboard, accept/decline and reveal accessories - upgrade project to Xcode 14.2 - bump version to 245 * fastlane gym: changed workspace to project, because it no longer is using cocoapod * - refactor and modularize URL scheme open URL handling code - add handling for "owncloud://pb/" commands to allow control of OCClassSettingsFlatSourcePostBuild * - include env var launch example for post-build.allowed-settings - add error checking when clearing individual postbuild setting values * - remove duplicate "Tap to relaunch." messages * - Browser Navigation: - replaces UINavigationController and UISplitViewController - allows back/forward navigation and invoking the side bar - automatically switches between full width sidebar, side-by-side sidebar and sidebar-floating-on-top layouts depending on available width and content - AppRootViewController: switch from UISplitViewController to BrowserNavigationViewController - ClientContext: add additional property and push support for BrowserNavigationViewController - EmbeddingViewController: add additional subclassing points for customization - ClientLocationBarController: view controller displaying an OCLocation and allowing to jump to a parent location with a single tap - ClientItemViewController: add bottom location bar if .location is set, using ClientLocationBarController - SegmentView: - add support for scrolling - add support for limiting vertical usage - allow customization of "overflow" gradient color - add support for providing gesture recognizers for items - ActionTapGestureRecognizer: subclass of UITapGestureRecognizer that allows providing a closure as action to perform - UIView+EmbedAndLayout: embedHorizontally() gains limitHeight option that limits the height of the layout - CollectionViewController: fill entire height with stack view, use a helper UIView to limit UICollectionView to safe area - OCItem+Interactions: add revocations for view controllers pushed by reveal and open interactions - UniversalItemListCell: work around _UITemporaryLayoutWidths auto-layout warning for accessory views - Licensing - add OCLicenseQAProvider to allow enabling Pro Features for QA purposes - OCLicenseEMMProvider: fix provider ID - add toggle to "Advanced" settings allowing to unlock Pro Features for QA. Available only in beta builds. - bump build number to 246 * Calens changelog updated * - rename "Purchases" to "Purchases & Subscriptions" in Settings - invoke AppStore.showManageSubscriptions() to allow direct subscription management where available, fallback to https://apps.apple.com/account/subscriptions * - fix "Select All" not working in Multiselect - adapt Multiselect to BrowserNavigationViewController * - removal of legacy code * - fix issue where OC10 accounts showed up empty in the File Provider * - NavigationContent extension of UINavigationItem - adapt SearchViewController, ClientItemViewController, ClientLocationPickerViewController and BrowserNavigationViewController to use NavigationContent instead of UINavigationItem directly - fix background color and spacing for SearchViewController.scopeViewController to align with file list - update KNOWN_ISSUES.md * - bump build number to 247 * - address static analyzer findings - address SwiftLint findings * - adapt to OCLocation.parent nullability change - unify/fix navigation titles and context.drive for ClientItemViewController - add new issue to KNOWN_ISSUES.md - make OCLocation breadcrumb generation general-purpose, so it can be used not just by ClientLocationBarController but also f.ex. dropdowns - BrowserNavigationItem: add .canTrimViewController property - update SDK * Fixes for Xcode 14 fastlane builds and resigning Fastfile: - needs setting manual code signing, because of signing swift package failures Resign Script: - seems like not all provisioning profiles contains SHA-1 values but SHA-256 values. Changed that for checking. * - AppDelegate / SceneDelegate cleanup * - BrowserNavigationBookmark - new class to capture location information that can then be used to restore/create a view controller - supports arbitrary OCDataItems - used of state restoration, sidebar selection - usable for browser navigation history compacting & view controller restore (tbd) - can be attached to view controllers via new UIViewController.navigationBookmark property - BrowserNavigationBookmark+AccountController: provide ID bridge to side bar - BrowserNavigationViewController: add support for a delegate (used to sync selection in sidebar) - BrowserNavigationHistory: fix bug in .currentItem implementation - BrowserNavigationItem: add .navigationBookmark property - DataItemBrowserNavigationBookmarkReStore protocol - allows storing and restoring view controllers individually on a per-OCDataItem basis - implementation for OCItem, OCLocation and OCSavedSearch - OCDrive: support for DataItemSelectionInteraction now uses OCLocation's implementation under the hood - AppStateActions - new, extensible and universal mechanism for building complex UI scenes with dependencies - used for state saving, state restoration, scene building and more - actions for opening a connection, navigation to the personal folder or a BrowserNavigationBookmark - or revealing an OCItem - high-level conceptual overview in accompanying README.md - ClientContext: new .scene property - CollectionViewController: implemented recordSelection() and SelectionOperation, leaving it commented out for future (re)consideration - CollectionViewAction: - new .highlight and .unhighlightAll actions - add support for "select first matching item" to .select and .highlight - AccountConnectionPool: new .activeConnections property to return active connections - AccountConnection: fix busyStatus handling bug - OCSavedSearch: allow override of uuid (needed for sidebar navigation item selection/state restoration) - URL+Extensions: refactor to allow opening links via app scheme (f.ex. https://demo.owncloud.org/f/27 via owncloud://demo.owncloud.org/f/27) - DisplayHostViewController: no longer require OCQuery or OCDataSource - creating an "internal" one if needed - update CONFIGURATION.json - update KNOWN_ISSUES.md - update ios-sdk - bump build number - remove ServerListTableViewController, ServerListTableHeaderView, OpenItemUserActivity and more source files that are no longer in use * - allow more customization when generating breadcrumbs from OCLocation, make segment composition available globally - complete implementation of "Available Offline" view - provide rich view of OCItemPolicys with path and icon - allow revealing items marked available offline in their respective location - provide "no items" views for: - Available Offline - Favorites - all search-based Quick Access views (PDF Documents, Documents, Images, Videos, Audios) - unify header views using a new ComposedMessageView category - update KNOWN_ISSUES.md * - Collection Views - add support for supplementary items via CollectionViewSupplementaryItem and CollectionViewSupplementaryCellProvider - implement TitleSupplementaryCell for section titles, including pinning support - implement ViewSupplementaryCell for arbitrary views, including pinning support - allow specifying CollectionViewSupplementaryItem on a per-section level - ClientItemViewController: adopt CollectionViewSupplementaryItem with ViewSupplementaryCell to show SortBar as pinned section header - ClientSharedByMeViewController, ClientSharedWithMeViewController, Available Offline and more: adopt headers based on supplementary cells, removing the need to use wrapping data sources in many places (efficiency win!) - remove legacy search scope code from SortBar - remove legacy Push Presentation Controller code - fix miscellaneous warnings through small code changes * - new class DataSourceCondition: - allows triggering actions based on item count of datasources - allows logical combinations of several conditions - CollectionViewController: add .coverView property and support for filled, centered and top layout - CollectionViewSection: adopt DataSourceCondition to implement .hideIfEmptyDataSource - AccountControllerSpacesGridViewController: add "No spaces" message if no spaces are shared with user - ClientSharedByMeViewController and ClientSharedWithMeViewController: add respective "no items" messages - AppRootViewController: no longer scroll highlighted sidebar items into center - ComposedMessageView: theme image views with tintColor * - DisplaySettings: provide query condition(s) implementing display settings filters (new queryConditionForDisplaySettings property) - AccountSearchScope, DriveSearchScope, ContainerSearchScope: use DisplaySettings.queryConditionForDisplaySettings to limit search results to those that should be visible - CollectionViewController: fix crash bug when sections with supplementary views are hidden * - AccountController: ensure Saved Search sidebar item is only visible if the account has saved searches - CollectionViewController.WrappedItem: add readable description for improved debugging - CollectionViewSection: fix a crash bug if an item is inserted into a child data source whose parent item is hidden or not (yet) in the collection view's data source * - add support for authenticated WebFinger and retrieval of server instances via SDK update - currently does not implement a picker for retrieved instances but always uses the first one returned by the server * - bump version to 249 * - update SDK to implement enterprise#5579, including sending a Referer header when requesting the IdP configuration - bump build number to 250 * - ClientItemViewController: ensure navigationItem.title is set by .navigationTitle for proper back button labeling in UINavigationControllers - ClientLocationPicker: fix destination of view controller pushes - make sure they get pushed to the picker, not the parent context's browser controller * - ContainerSearchScope: ensure the folder within which the scope starts is not included in the results itself * - AppProvider: lang parameter fix via SDK update (ensure ISO-639-1 (uses only 2 characters) by cutting off any differentiators (f.ex. "en-GB" becomes "en")) * - update SDK to possible address finding (38) in feature/new-navigation * - ClientLocationPickerViewController: fix vertical cancelButton constraint * - OCShare+Interactions: make unshare action available via context menu and popup, use OCCore.delete() for unsharing * - DisplayExtensionContext: subclass to allow passing the ClientContext to actions invoked from the more menu in DisplayViewController - DisplayHostViewController: use DisplayExtensionContext and create a ClientContext child with a different originatingViewController - DisplayViewController: clarify naming of method invoked when the more button is pressed in the viewer * - enlarge "reveal" and "more" accessory buttons * - bump build number to 252 - tag v12alpha1 * - fixed fastlane build error - updated needed Xcode version for fastlane builds * added a class setting key to set the default bookmark name when creating a new bookmark "bookmark.default-name" * - introduce ThemeCSS and convert existing code base to use the new APIs - progressed, but still work-in-progress * - further CSS theming advances and cleanup * - update SDK to include authenticated WebFinger fix - BookmarkViewController: consistent spacing with tabs to improve code readability * - remove unused customizedColorsByPath code * - additional CSS fixes and refinements * - further CSS color and code warning fixes * - Settings now uses insetGrouped layout - Action cards now use insetGrouped layout - Spaces grid view updates depending on size class (animated!) - StaticTableRow: CSS updates and fixes, including a retain loop that existed before - fix appearance of group disclosure chevron in sidebar when item is selected * - add ImportPasteboardAction as action for empty folders * - fix action cell background appearance in dark mode * - MakeTVG: update for latest Swift version - add space.svg + space.tvg - display "Files" (for OC10) or name of space for root folder(s) and show appropriate icon * - SDK update: fix connection validation in case WebFinger lookup is not present - fix more CSS styling issues * - add "more" button to spaces in spaces grid view - fix "Access Denied" warning icon color in sidebar - limit Paste action to writeable locations - CollectionViewSection: add missing ClientContext in CollectionViewCellConfiguration * - add new SharedKeyCommands to ownCloudAppShared.framework, to implement key commands that should be available in app and extensions - move PasscodeViewController key commands over to SharedKeyCommands * - bump build number to 253 * - address #1188 via SDK update - show space names and icons if a space's root folder is made available offline or shared, in the respective views - remove separator background color in available offline view - bump build number to 254 * - AccountControllerSpacesGridViewController: fix warning - ThemeCSS: cleanup, provide documentation in README.md * - Branding+App: add missing copyright notice - add CSS support to branding - complete first revision of CSS documentation, including an example for CSS branding * - ThemeCSS README: add missing language MD annotation * - OCResourceText+ViewProvider: fix Theme registration timing to work with CSS themeing * - CSS README.md: correct title levels * - ClientLocationPickerViewController: - fix color errors for account cells - add additional separator line on top for more visual clarity - use grouped collection background color for navigation bar - ThemeCollection: minor code cleanup * - fix finding (37) in #1162 - ImageDisplayViewController: fix new warning in Xcode 14.3 * - ItemLayout: - new enum as high-level abstraction for item layout - provides layout objects and values - ClientContext: add new itemLayout property - SortBar: add new layout-toggling button, clean up delegate methods - ClientItemViewController: - add support for grid views, ItemLayout, SortBar and ClientContext advances - move footer view to a separate section to avoid layout interference, simplify the code and provide better performance - CollectionViewSection: - cleanup code - add support for changing cell layout and style in one go, without animation - UniversalItemListCell: add support for grid layout - ViewSupplementaryCell: - prepare to support different ElementKinds (f.ex. footers, etc.) - fix zIndex to make the cell float above separators as well * - SegmentViewItem: add concept of lines to allow realizing different layouts from a single array of items - OCItem+UniversalItemListCellContentProvider: tag detail segment item .lines - UniversalItemListCell: use SegmentViewItem.lines tagging to switch between single line and two lines details - SegmentView: preparations to dynamically apply a gradient mask when views exceed the boundaries * - NamingViewController: - select file names without extension when editing names - support picking a "fallback" icon - CreateDocumentAction: show fallback icon based on mimeType of created document type * - BrowserNavigationHistory: guard instance variables items and position in a thread-safe way - BrowserNavigationItem: add viewControllerIfLoaded property to allow retrieving a view controller only if it exists and without triggering its (re)creation - ClientSidebarViewController: ensure removal of /all/ history items for a view controller when it is revoked - UIViewController+NavigationRevocation: add debug logging, respect the passed revocationTriggers * - optimize grid cell margin usage * - ClientItemViewController: make SortBar.itemLayout match ClientContext.itemLayout * - Spaces grid overview: make more (…) button resist compression, fixing layout issue with long space titles that don't fit horizontally * - ClientItemViewController: - skip driveSection creation if not necessary - show quota for personal space * - add selection checkmark for multi selection in grid view * - bump build number to 255 * - ThemeCSS: implement match-cache for massive speedup * - ClientItemViewController: show "Loading…" when the contents of a folder is still being loaded * - CSS: remove Fill from .fill colors for TVG vector images - CSS README: add section for vector icon color CSS selectors * - cosmetic code changes * - UniversalItemListCell: add titleAndDetailsHeight() method to allow determining space needed for details and title - CollectionViewSection.CellLayout: add new .fillingGrid layout that dynamically adjusts cell size to achieve best size / space fit + center cells - ItemLayout: adopt CellLayout.fillingGrid - AccountControllerSpacesGridView: adopt CellLayout.fillingGrid - bump build number ot 256 * - update KNOWN_ISSUES.md
- Loading branch information