!54 图库代码更新

Merge pull request !54 from 朱铖丰/master
This commit is contained in:
openharmony_ci 2022-08-01 08:51:36 +00:00 committed by Gitee
commit c1572c3a22
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
67 changed files with 801 additions and 1222 deletions

2
.gitignore vendored
View File

@ -12,4 +12,4 @@
/entry/.preview
.cxx
/package-lock.json
/tsconfig.json

View File

@ -175,7 +175,7 @@ export default class MainAbility extends Ability {
appLogger.info(`setInterval go`);
if (dataSource.getRawData(0) || times >= MainAbility.RETRY_MAX_TIMES) {
AppStorage.SetOrCreate(Constants.APP_KEY_PHOTO_BROWSER, dataSource);
windowStage.setUIContent(this.context, 'feature/browser/view/photo/PhotoBrowser', null);
windowStage.setUIContent(this.context, 'feature/browser/view/PhotoBrowser', null);
ScreenManager.getInstance().initWindowMode();
clearInterval(intervalId);
}
@ -183,7 +183,7 @@ export default class MainAbility extends Ability {
}, 50)
});
} else {
windowStage.setUIContent(this.context, 'product/phone/view/index', null);
windowStage.setUIContent(this.context, 'product/pad/view/index', null);
ScreenManager.getInstance().initWindowMode();
}
TraceControllerUtils.finishTrace('onWindowStageCreate');
@ -212,7 +212,7 @@ export default class MainAbility extends Ability {
}
if (entryFrom == Constants.ENTRY_FROM_CAMERA) {
let options = {
uri: 'feature/browser/view/photo/PhotoBrowser',
uri: 'feature/browser/view/PhotoBrowser',
params: {
pageFrom: Constants.ENTRY_FROM.CAMERA
}
@ -244,7 +244,7 @@ export default class MainAbility extends Ability {
if (dataSource.getRawData(0) || times >= MainAbility.RETRY_MAX_TIMES) {
AppStorage.SetOrCreate(Constants.APP_KEY_PHOTO_BROWSER, dataSource);
let options = {
uri: 'feature/browser/view/photo/PhotoBrowser',
uri: 'feature/browser/view/PhotoBrowser',
params: {
pageFrom: Constants.ENTRY_FROM.CARD,
albumId: AppStorage.Get(Constants.FROM_ALBUM_ID),
@ -268,7 +268,7 @@ export default class MainAbility extends Ability {
router.replace(options);
} else if (entryFrom == Constants.ENTRY_FROM_VIEW_DATA) {
let options = {
uri: 'feature/browser/view/photo/PhotoBrowser',
uri: 'feature/browser/view/PhotoBrowser',
params: {
pageFrom: Constants.ENTRY_FROM.VIEW_DATA,
viewData: AppStorage.Get(Constants.VIEW_DATA_URI),

View File

@ -13,13 +13,13 @@
* limitations under the License.
*/
import {AlbumDefine} from '../AlbumDefine'
import {BrowserDataImpl} from '../BrowserDataImpl'
import {Logger} from '../../../utils/Logger'
import {AsyncCallback} from '../../common/AsyncCallback'
import {MediaItem} from './MediaItem'
import {MediaLibraryAccess} from '../../../access/MediaLibraryAccess'
import {TraceControllerUtils} from '../../../utils/TraceControllerUtils';
import { AlbumDefine } from '../AlbumDefine'
import { BrowserDataImpl } from '../BrowserDataImpl'
import { Logger } from '../../../utils/Logger'
import { AsyncCallback } from '../../common/AsyncCallback'
import { MediaItem } from './MediaItem'
import { MediaLibraryAccess } from '../../../access/MediaLibraryAccess'
import { TraceControllerUtils } from '../../../utils/TraceControllerUtils';
export class PhotoDataImpl extends BrowserDataImpl {
logger: Logger = new Logger('PhotoDataImpl');
@ -46,7 +46,7 @@ export class PhotoDataImpl extends BrowserDataImpl {
try {
promiseStatus.push(item.isFavorite())
}
catch(err) {
catch (err) {
this.logger.error(`getItems error: ${err}`);
}
}
@ -57,7 +57,7 @@ export class PhotoDataImpl extends BrowserDataImpl {
try {
let item = dataList[i];
let mediaItem: MediaItem = new MediaItem(item);
if(favor[i].status = 'success'){
if (favor[i].status = 'success') {
mediaItem.setFavorite(favor[i].res);
} else {
this.logger.error(`getFavorite error: ${favor[i].err}`);
@ -78,8 +78,8 @@ export class PhotoDataImpl extends BrowserDataImpl {
}
handlePromise(promiseList) {
return promiseList.map(promise => promise.then((res) => ({status: 'success', res}),
(err) => ({status: 'failed', err})))
return promiseList.map(promise => promise.then((res) => ({ status: 'success', res }),
(err) => ({ status: 'failed', err })))
}
getDataCount(callback: AsyncCallback<number>, param: any): void {
@ -94,10 +94,11 @@ export class PhotoDataImpl extends BrowserDataImpl {
return this.getThumbnailSafe(sourceUri, size);
}
async getDataById(id: any, deviceId? :any){
async getDataById(id: any, deviceId?: any) {
this.logger.debug('getFileAssetById');
try {
let result = await MediaLibraryAccess.getInstance().getFirstObject(AlbumDefine.getFileFetchOptById(id, deviceId));
this.logger.debug(`result: ${JSON.stringify(result)}`)
return result.obj;
} catch (error) {
this.logger.error('getFileAssetById error');
@ -105,14 +106,14 @@ export class PhotoDataImpl extends BrowserDataImpl {
}
}
async getDataByName(name: string, albumInfo: any){
async getDataByName(name: string, albumInfo: any) {
this.logger.debug('getFileByName');
let dataList;
if (albumInfo.id){
if (albumInfo.id) {
dataList = await MediaLibraryAccess.getInstance().getEntityAlbumObject(AlbumDefine.getAlbumFetchOpt(albumInfo.id),
AlbumDefine.getFileFetchOptByName(name))
}else{
} else {
dataList = await MediaLibraryAccess.getInstance().getAllObject(AlbumDefine.getFileFetchOptByName(name, albumInfo.relativePath))
}

View File

@ -56,10 +56,10 @@ export class ScreenManager {
private columns: number = ColumnSize.COLUMN_FOUR;
// Default orientation
private horizontal = false;
private horizontal = true;
// Default sidebar
private sidebar = false;
private sidebar = true;
private windowMode = WindowMode.UNDEFINED;
private constructor() {

View File

@ -12,7 +12,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Constants } from '../../../../common/model/common/Constants'
import { Constants } from '../model/common/Constants'
// New style
@Component

View File

@ -23,7 +23,7 @@ import { MediaLibraryAccess } from '../../common/access/MediaLibraryAccess'
import { ScreenManager } from '../model/common/ScreenManager'
import { Constants } from '../model/common/Constants';
import { TraceControllerUtils } from '../utils/TraceControllerUtils';
import { LoadingPanel } from '../../feature/browser/view/photo/components/LoadingPanel'
import { LoadingPanel } from './components/LoadingPanel'
@Component
export struct PhotoItem {
@ -331,7 +331,7 @@ export struct PhotoItem {
.onClick(() => {
if (this.item != undefined) {
router.push({
uri: 'feature/browser/view/photo/VideoBrowser',
uri: 'feature/browser/view/VideoBrowser',
params: {
uri: this.item.uri,
dateTaken: this.item.dateTaken,

View File

@ -15,7 +15,7 @@
import { PhotoItem } from './PhotoItem'
import { BroadCastConstants } from '../model/common/BroadCastConstants';
import { Logger } from '../../feature/browser/utils/Logger';
import { Logger } from '../utils/Logger'
import { BroadCast } from '../utils/BroadCast';
import { Constants } from '../model/common/Constants';
import { Constants as PhotoConstants } from '../../common/model/browser/photo/Constants'

View File

@ -19,6 +19,7 @@ import { BroadCastManager } from '../model/common/BroadCastManager'
import { BroadCast } from '../utils/BroadCast'
import { BroadCastConstants } from '../model/common/BroadCastConstants'
import { Constants } from '../model/common/Constants'
import { ScreenManager } from '../model/common/ScreenManager';
export enum DEVICE_TYPE {
DEVICE_PHONE,
@ -30,7 +31,7 @@ export struct TabBar {
@Consume isSelectedMode: boolean;
@Consume isAlbumSetSelectedMode: boolean;
private currentIndex: number;
private isSidebar: boolean = false;
@StorageLink('isSidebar') isSidebar: boolean = ScreenManager.getInstance().isSidebar();
private tabs: TabItem[] = [];
private controller: TabsController;
private logger: Logger = new Logger('TabBar');

View File

@ -20,7 +20,6 @@ import { ActionBarMode } from '../browserOperation/ActionBarMode'
import { SingleTitle } from './SingleTitle'
import { DetailTitle } from './DetailTitle'
import { SelectionTitle } from './SelectionTitle'
import { MenuPanel } from './MenuPanel'
import { DetailMenuPanel } from './DetailMenuPanel'
import { Constants } from '../../model/common/Constants'
import { ActionBarButton } from './ActionBarButton'
@ -29,7 +28,7 @@ import { ActionBarButton } from './ActionBarButton'
@Component
export struct ActionBar {
@State isShowBar: boolean = true;
@State actionBarProp: ActionBarProp = new ActionBarProp();
@Provide actionBarProp: ActionBarProp = new ActionBarProp();
onMenuClicked: Function;
logger: Logger = new Logger('ActionBar');
isVideoPage: boolean = false;
@ -49,33 +48,26 @@ export struct ActionBar {
res: this.actionBarProp.getLeftAction().iconRes,
action: this.actionBarProp.getLeftAction(),
onMenuClicked: this.onMenuClicked,
isLeft: true,
isAutoTint: this.actionBarProp.getLeftAction().isAutoTint,
colorMode: this.actionBarProp.getColorMode(),
isFirst: true
})
}
if (this.actionBarProp.getMode() === ActionBarMode.DETAIL_MODE) {
DetailMenuPanel({ actionBarProp: this.actionBarProp, onMenuClicked: this.onMenuClicked, isLeft: true })
} else if (this.actionBarProp.getMode() === ActionBarMode.SELECTION_MODE) {
Stack({ alignContent: Alignment.Start }) {
SelectionTitle({ actionBarProp: this.actionBarProp })
}.flexGrow(1)
MenuPanel({ actionBarProp: this.actionBarProp, onMenuClicked: this.onMenuClicked })
} else if (this.actionBarProp.getMode() === ActionBarMode.TOP_MODE) {
Stack({ alignContent: Alignment.Start }) {
DetailTitle({ isVideoPage: this.isVideoPage })
}.flexGrow(1)
DetailMenuPanel({ actionBarProp: this.actionBarProp, onMenuClicked: this.onMenuClicked, isLeft: false })
} else {
Stack({ alignContent: Alignment.Start }) {
SingleTitle({ actionBarProp: this.actionBarProp })
}.flexGrow(1)
MenuPanel({ actionBarProp: this.actionBarProp, onMenuClicked: this.onMenuClicked })
}
DetailMenuPanel({ onMenuClicked: this.onMenuClicked })
}
.height(Constants.ActionBarHeight)
.zIndex(3)

View File

@ -24,7 +24,6 @@ export struct ActionBarButton {
@State res: Resource = undefined;
action: Action;
onMenuClicked: Function;
isLeft = true;
isFirst = false;
isAutoTint = true;
colorMode: ActionBarColorMode;

View File

@ -21,27 +21,17 @@ import { ActionBarButton } from './ActionBarButton'
// Large picture button for dynamic refresh
@Component
export struct DetailMenuPanel {
@Consume menuList: Action[];
actionBarProp: ActionBarProp = new ActionBarProp();
@Consume actionBarProp: ActionBarProp;
onMenuClicked: Function;
logger: Logger = new Logger('DetailMenuPanel');
isLeft = false;
private onBuildDone(): void {
this.logger.info(`onBuildDone, menu's size: ${this.menuList.length}`);
this.menuList.forEach((menu: Action) => {
this.logger.info(`ActionId: ${menu.actionID}`)
})
}
private logger: Logger = new Logger('DetailMenuPanel');
build() {
Row() {
ForEach(this.menuList, (menu: Action) => {
ForEach(this.actionBarProp.getMenuList(), (menu: Action) => {
ActionBarButton({
res: menu.iconRes,
action: menu,
onMenuClicked: this.onMenuClicked,
isLeft: this.isLeft,
isAutoTint: menu.isAutoTint,
colorMode: this.actionBarProp.getColorMode()
})

View File

@ -21,7 +21,7 @@ import { ActionBarButton } from './ActionBarButton'
// MenuPanelRight menu button panel
@Component
export struct MenuPanel {
@State @Watch('onActionBarPropChanged') actionBarProp: ActionBarProp = new ActionBarProp();
@State actionBarProp: ActionBarProp = new ActionBarProp();
@State menuList: Action[] = [];
onMenuClicked: Function;
logger: Logger = new Logger('MenuPanel');
@ -45,12 +45,11 @@ export struct MenuPanel {
build() {
Row() {
ForEach(this.menuList, (menu: Action) => {
ForEach(this.actionBarProp.getMenuList(), (menu: Action) => {
ActionBarButton({
res: menu.iconRes,
action: menu,
onMenuClicked: this.onMenuClicked,
isLeft: false,
isAutoTint: menu.isAutoTint,
colorMode: this.actionBarProp.getColorMode()
})

View File

@ -27,11 +27,11 @@ export class MenuItem {
@Component
export struct ToolBar {
@Consume isShowBar: boolean;
@State isShowBar: boolean = true;
@StorageLink('isSplitMode') isSplitMode: boolean = ScreenManager.getInstance().isSplitMode();
@StorageLink('leftBlank') leftBlank: [number, number, number, number]
= [0, ScreenManager.getInstance().getStatusBarHeight(), 0, ScreenManager.getInstance().getNaviBarHeight()];
@Consume toolMenuList: Action[];
@State toolMenuList: Action[] = [];
@Consume moreMenuList: Action[];
@StorageLink('isHorizontal') isHorizontal: boolean = ScreenManager.getInstance().isHorizontal();
@State showPopup: boolean = false;

View File

@ -13,10 +13,10 @@
* limitations under the License.
*/
import {BroadCast} from '../../utils/BroadCast'
import {Logger} from '../../../feature/browser/utils/Logger';
import {BroadCastConstants} from '../../model/common/BroadCastConstants';
import {AlbumInfo} from '../../model/browser/album/AlbumInfo';
import { BroadCast } from '../../utils/BroadCast'
import { Logger } from '../../utils/Logger'
import { BroadCastConstants } from '../../model/common/BroadCastConstants';
import { AlbumInfo } from '../../model/browser/album/AlbumInfo';
@Component
export struct AlbumListCard {
@ -49,8 +49,8 @@ export struct AlbumListCard {
build() {
Row() {
if(this.useAlt) {
Row(){
if (this.useAlt) {
Row() {
Image($r('app.media.ic_goto_photos'))
.height($r('app.float.icon_size'))
.width($r('app.float.icon_size'))
@ -67,7 +67,7 @@ export struct AlbumListCard {
.width($r('app.float.list_card_image_size'))
.borderRadius($r('sys.float.ohos_id_corner_radius_default_s'))
.onError(() => {
if(this.item.coverUri) {
if (this.item.coverUri) {
this.useAlt = true;
}
this.logger.error('alt Image error');

View File

@ -88,7 +88,7 @@ export class AlbumSetNewMenuOperation implements MenuOperation, MenuOperationCal
[newAlbumInfo, this.onCompleted.bind(this)]);
} else {
router.push({
uri: 'feature/browser/view/album/AlbumSelect',
uri: 'feature/albumSelect/view/AlbumSelect/AlbumSelect',
params: {
albumInfo: JSON.stringify(newAlbumInfo),
isNewAlbum: true

View File

@ -0,0 +1,86 @@
/*
* Copyright (c) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Action } from '../../../common/view/browserOperation/Action'
import { ActionBarProp } from '../../../common/view/browserOperation/ActionBarProp'
import { ActionBarMode, ActionBarSelectionMode } from '../../../common/view/browserOperation/ActionBarMode'
import { ScreenManager } from '../../../common/model/common/ScreenManager'
export class AlbumBarModel {
createActionBar(isAlbumSetSelectedMode: boolean, selectedAlbumsCount: number, isDisableRename: boolean, isDisableDelete: boolean): ActionBarProp {
let isHorizontal = ScreenManager.getInstance().isHorizontal()
if (isHorizontal) {
return this.createHorizontalActionBar(isAlbumSetSelectedMode, selectedAlbumsCount, isDisableRename, isDisableDelete)
} else {
return this.createVerticalActionBar(isAlbumSetSelectedMode)
}
}
private createHorizontalActionBar(isAlbumSetSelectedMode: boolean, selectedAlbumsCount: number, isDisableRename: boolean, isDisableDelete: boolean): ActionBarProp {
let isSidebar: boolean = ScreenManager.getInstance().isSidebar();
let actionBarProp: ActionBarProp = new ActionBarProp();
actionBarProp
.setHasTabBar(isSidebar)
.setTitle($r('app.string.tab_albums'))
.setIsHeadTitle(true);
let menuList: Array<Action> = this.getMenuList(isAlbumSetSelectedMode, selectedAlbumsCount, isDisableRename, isDisableDelete);
if (isAlbumSetSelectedMode) {
actionBarProp
.setLeftAction(Action.CANCEL)
.setMenuList(menuList)
.setMode(ActionBarMode.SELECTION_MODE)
.setSelectionMode(ActionBarSelectionMode.MULTI);
} else {
menuList.push(Action.NEW)
actionBarProp
.setMenuList(menuList)
.setMode(ActionBarMode.STANDARD_MODE);
}
return actionBarProp;
}
private createVerticalActionBar(isAlbumSetSelectedMode: boolean): ActionBarProp {
let menuList: Array<Action> = new Array<Action>();
menuList.push(Action.NEW);
let isSidebar: boolean = ScreenManager.getInstance().isSidebar();
let actionBarProp: ActionBarProp = new ActionBarProp();
actionBarProp
.setHasTabBar(isSidebar)
.setTitle($r('app.string.tab_albums'))
.setIsHeadTitle(true);
if (isAlbumSetSelectedMode) {
actionBarProp
.setLeftAction(Action.CANCEL)
.setMode(ActionBarMode.SELECTION_MODE)
.setSelectionMode(ActionBarSelectionMode.MULTI);
} else {
actionBarProp
.setMenuList(menuList)
.setMode(ActionBarMode.STANDARD_MODE);
}
return actionBarProp;
}
getMenuList(isAlbumSetSelectedMode: boolean, selectedAlbumsCount: number, isDisableRename: boolean, isDisableDelete: boolean): Array<Action> {
let menuList: Array<Action> = new Array<Action>();
if (isAlbumSetSelectedMode) {
menuList.push((!isDisableRename && selectedAlbumsCount == 1) ? Action.RENAME : Action.RENAME_INVALID)
menuList.push((!isDisableDelete && selectedAlbumsCount > 0) ? Action.DELETE : Action.DELETE_INVALID)
}
return menuList
}
}

View File

@ -13,13 +13,13 @@
* limitations under the License.
*/
import { BroadCastConstants } from '../../../../common/model/common/BroadCastConstants';
import { BrowserOperationFactory } from '../../../../common/interface/BrowserOperationFactory'
import { BrowserDataFactory } from '../../../../common/interface/BrowserDataFactory'
import { Logger } from '../../utils/Logger'
import { MenuContext } from '../../../../common/view/browserOperation/MenuContext'
import { ProcessMenuOperation } from '../../../../common/view/browserOperation/ProcessMenuOperation';
import { SelectManager } from '../../../../common/model/browser/SelectManager'
import { BroadCastConstants } from '../../../common/model/common/BroadCastConstants';
import { BrowserOperationFactory } from '../../../common/interface/BrowserOperationFactory'
import { BrowserDataFactory } from '../../../common/interface/BrowserDataFactory'
import { Logger } from '../../../common/utils/Logger';
import { MenuContext } from '../../../common/view/browserOperation/MenuContext'
import { ProcessMenuOperation } from '../../../common/view/browserOperation/ProcessMenuOperation';
import { SelectManager } from '../../../common/model/browser/SelectManager'
export class AlbumSetDeleteMenuOperation extends ProcessMenuOperation {
logger: Logger = new Logger('AlbumSetDeleteMenuOperation');

View File

@ -13,15 +13,15 @@
* limitations under the License.
*/
import { Logger } from '../../utils/Logger'
import { BroadCastConstants } from '../../../../common/model/common/BroadCastConstants';
import { MenuOperationCallback } from '../../../../common/view/browserOperation/MenuOperationCallback'
import { MenuOperation } from '../../../../common/view/browserOperation/MenuOperation'
import { MenuContext } from '../../../../common/view/browserOperation/MenuContext'
import { SelectManager } from '../../../../common/model/browser/SelectManager'
import { BrowserOperationFactory } from '../../../../common/interface/BrowserOperationFactory'
import { BrowserDataFactory } from '../../../../common/interface/BrowserDataFactory'
import { UiUtil } from '../../../../common/utils/UiUtil'
import { Logger } from '../../../common/utils/Logger';
import { BroadCastConstants } from '../../../common/model/common/BroadCastConstants';
import { MenuOperationCallback } from '../../../common/view/browserOperation/MenuOperationCallback'
import { MenuOperation } from '../../../common/view/browserOperation/MenuOperation'
import { MenuContext } from '../../../common/view/browserOperation/MenuContext'
import { SelectManager } from '../../../common/model/browser/SelectManager'
import { BrowserOperationFactory } from '../../../common/interface/BrowserOperationFactory'
import { BrowserDataFactory } from '../../../common/interface/BrowserDataFactory'
import { UiUtil } from '../../../common/utils/UiUtil'
export class AlbumSetRenameMenuOperation implements MenuOperation, MenuOperationCallback {
private menuContext: MenuContext;

View File

@ -13,16 +13,16 @@
* limitations under the License.
*/
import { AlbumInfo } from '../../../../common/model/browser/album/AlbumInfo';
import { EmptyAlbumComponent } from './EmptyAlbumComponent';
import { BroadCastConstants } from '../../../../common/model/common/BroadCastConstants'
import { BroadCastManager } from '../../../../common/model/common/BroadCastManager'
import { Logger } from '../../utils/Logger'
import { BroadCast } from '../../../../common//utils/BroadCast'
import { ScreenManager } from '../../../../common/model/common/ScreenManager'
import { AlbumInfo } from '../../../common/model/browser/album/AlbumInfo';
import { EmptyAlbumComponent } from '../../../common/view/EmptyAlbumComponent';
import { BroadCastConstants } from '../../../common/model/common/BroadCastConstants'
import { BroadCastManager } from '../../../common/model/common/BroadCastManager'
import { Logger } from '../../../common/utils/Logger';
import { BroadCast } from '../../../common/utils/BroadCast'
import { ScreenManager } from '../../../common/model/common/ScreenManager'
import router from '@system.router';
import { AlbumDefine } from '../../../../common/model/browser/AlbumDefine'
import { Constants } from '../../../../common/model/common/Constants'
import { AlbumDefine } from '../../../common/model/browser/AlbumDefine'
import { Constants } from '../../../common/model/common/Constants'
// The item of album grid, and it's new style.
@Component
@ -293,7 +293,7 @@ export struct AlbumGridItemNewStyle {
} else {
this.logger.info(`After onClick, MediaSet is: ${JSON.stringify(this.item)}`);
router.push({
uri: 'feature/browser/view/photoGrid/PhotoGridPage',
uri: 'feature/photoGrid/view/PhotoGridPage',
params: {
item: JSON.stringify(this.item)
}

View File

@ -13,35 +13,35 @@
* limitations under the License.
*/
import { AlbumSetDataSource } from '../../../../common/model/browser/album/AlbumSetDataSource'
import { Constants } from '../../../../common/model/common/Constants'
import { ScreenManager } from '../../../../common/model/common/ScreenManager'
import { BroadCast } from '../../../../common/utils/BroadCast'
import { NoPhotoIndexComponent } from '../../../../common/view/NoPhotoIndexComponent'
import { BroadCastConstants } from '../../../../common/model/common/BroadCastConstants'
import { BroadCastManager } from '../../../../common/model/common/BroadCastManager'
import { TraceControllerUtils } from '../../../../common/utils/TraceControllerUtils'
import { TabBarForAlbumSet } from '../../../../common/view/TabBar'
import { TabItemWithText } from '../../../../common/model/common/TabItem'
import { AlbumSetSelectManager } from '../../../../common/model/browser/SelectManager'
import { AlbumSetNewMenuOperation } from '../../../../common/view/browserOperation/AlbumSetNewMenuOperation'
import { DistributedDataSource } from '../../../../common/model/browser/album/DistributedDataSource'
import { MenuContext } from '../../../../common/view/browserOperation/MenuContext'
import { MenuOperation } from '../../../../common/view/browserOperation/MenuOperation'
import { MenuOperationFactory } from '../../../../common/interface/MenuOperationFactory'
import { CustomDialogView } from '../../../../common/view/dialog/CustomDialogView'
import { Action } from '../../../../common/view/browserOperation/Action'
import { CommonObserverCallback } from '../../../../common/model/browser/CommonObserverCallback'
import { MediaObserver } from '../../../../common/model/browser/dataObserver/MediaObserver'
import { UiUtil } from '../../../../common/utils/UiUtil'
import { Logger } from '../../utils/Logger'
import { AlbumSetPageActionBar } from './AlbumSetPageActionBar'
import { AlbumSetPageToolBar } from './AlbumSetPageToolBar'
import { AlbumSetDataSource } from '../../../common/model/browser/album/AlbumSetDataSource'
import { Constants } from '../../../common/model/common/Constants'
import { ScreenManager } from '../../../common/model/common/ScreenManager'
import { BroadCast } from '../../../common/utils/BroadCast';
import { NoPhotoIndexComponent } from '../../../common/view/NoPhotoIndexComponent'
import { BroadCastConstants } from '../../../common/model/common/BroadCastConstants'
import { BroadCastManager } from '../../../common/model/common/BroadCastManager'
import { TraceControllerUtils } from '../../../common/utils/TraceControllerUtils'
import { TabBarForAlbumSet } from '../../../common/view/TabBar'
import { TabItemWithText } from '../../../common/model/common/TabItem'
import { AlbumSetSelectManager } from '../../../common/model/browser/SelectManager'
import { AlbumSetNewMenuOperation } from '../../../common/view/browserOperation/AlbumSetNewMenuOperation'
import { DistributedDataSource } from '../../../common/model/browser/album/DistributedDataSource'
import { MenuContext } from '../../../common/view/browserOperation/MenuContext'
import { MenuOperation } from '../../../common/view/browserOperation/MenuOperation'
import { MenuOperationFactory } from '../../../common/interface/MenuOperationFactory'
import { CustomDialogView } from '../../../common/view/dialog/CustomDialogView'
import { Action } from '../../../common/view/browserOperation/Action'
import { ActionBar } from '../../../common/view/actionbar/ActionBar';
import { CommonObserverCallback } from '../../../common/model/browser/CommonObserverCallback'
import { MediaObserver } from '../../../common/model/browser/dataObserver/MediaObserver'
import { UiUtil } from '../../../common/utils/UiUtil'
import { Logger } from '../../../common/utils/Logger';
import { AlbumBarModel } from '../model/AlbumBarModel';
import { ToolBar } from '../../../common/view/actionbar/ToolBar';
import { AlbumGridItemNewStyle } from './AlbumGridItemNewStyle'
import { DistributedAlbumGriItem } from './DistributedAlbumGriItem'
import { AlbumSetDeleteMenuOperation } from './AlbumSetDeleteMenuOperation'
import { AlbumSetRenameMenuOperation } from './AlbumSetRenameMenuOperation'
import { AlbumSetDeleteMenuOperation } from '../operation/AlbumSetDeleteMenuOperation'
import { AlbumSetRenameMenuOperation } from '../operation/AlbumSetRenameMenuOperation'
// Album Set Page
@Component
@ -78,6 +78,7 @@ export struct AlbumSetPage {
private currentIndex: number = Constants.LOCAL_TAB_INDEX;
private needNotify = false;
private ignoreLocalNotify = false;
private barModel: AlbumBarModel = new AlbumBarModel()
onMenuClicked(action: Action, arg: any[]) {
this.logger.info(`onMenuClicked, action: ${action.actionID}`);
@ -452,10 +453,15 @@ export struct AlbumSetPage {
justifyContent: FlexAlign.Start,
alignItems: ItemAlign.Start
}) {
Column() {
AlbumSetPageActionBar({ onMenuClicked: this.onMenuClicked })
}.visibility(this.isEmpty && !this.isTabBarShow ? Visibility.None : Visibility.Visible)
ActionBar({
isShowBar: !(this.isEmpty && !this.isTabBarShow),
actionBarProp: this.barModel.createActionBar(
this.isAlbumSetSelectedMode,
this.selectedAlbumsCount,
this.isDisableRename,
this.isDisableDelete),
onMenuClicked: this.onMenuClicked
})
Column() {
TabBarForAlbumSet({
currentIndex: this.currentIndex,
@ -489,9 +495,15 @@ export struct AlbumSetPage {
})
}.visibility(this.isEmpty && !this.isTabBarShow ? Visibility.None : Visibility.Visible)
if (this.isAlbumSetSelectedMode) {
AlbumSetPageToolBar({ onMenuClicked: this.onMenuClicked })
}
ToolBar({
isShowBar: $isAlbumSetSelectedMode,
toolMenuList: this.barModel.getMenuList(
this.isAlbumSetSelectedMode,
this.selectedAlbumsCount,
this.isDisableRename,
this.isDisableDelete),
onMenuClicked: this.onMenuClicked
})
if (this.isEmpty && !this.isTabBarShow) {
NoPhotoIndexComponent({ index: Constants.ALBUM_PAGE_INDEX })

View File

@ -13,12 +13,12 @@
* limitations under the License.
*/
import { Logger } from '../../utils/Logger'
import { EmptyAlbumComponent } from './EmptyAlbumComponent';
import { PeerInfo } from '../../../../common/model/browser/album/PeerInfo';
import { Logger } from '../../../common/utils/Logger';
import { EmptyAlbumComponent } from '../../../common/view/EmptyAlbumComponent';
import { PeerInfo } from '../../../common/model/browser/album/PeerInfo';
import router from '@system.router';
import { ScreenManager } from '../../../../common/model/common/ScreenManager'
import { Constants } from '../../../../common/model/common/Constants'
import { ScreenManager } from '../../../common/model/common/ScreenManager'
import { Constants } from '../../../common/model/common/Constants'
@Component
export struct DistributedAlbumGriItem {
@ -129,7 +129,7 @@ export struct DistributedAlbumGriItem {
.onClick(() => {
this.logger.info(`After onClick: ${JSON.stringify(this.item)}`);
router.push({
uri: 'feature/browser/view/album/DistributedAlbumSetPage',
uri: 'feature/distributedAlbum/view/DistributedAlbumSetPage',
params: {
item: JSON.stringify(this.item)
}

View File

@ -13,35 +13,18 @@
* limitations under the License.
*/
import { Action } from '../../../../common/view/browserOperation/Action'
import { ActionBar } from '../../../../common/view/actionbar/ActionBar'
import { ActionBarProp } from '../../../../common/view/browserOperation/ActionBarProp'
import { ActionBarMode, ActionBarSelectionMode } from '../../../../common/view/browserOperation/ActionBarMode'
import { Logger } from '../../utils/Logger'
import { Action } from '../../../common/view/browserOperation/Action'
import { ActionBarProp } from '../../../common/view/browserOperation/ActionBarProp'
import { ActionBarMode, ActionBarSelectionMode } from '../../../common/view/browserOperation/ActionBarMode'
@Component
export struct NewAlbumPageActionBar {
onMenuClicked: Function;
private logger: Logger = new Logger('NewAlbumPageActionBar');
private createActionBar(): ActionBarProp {
export class AlbumSelectBarModel {
createActionBar(): ActionBarProp {
let actionBarProp: ActionBarProp = new ActionBarProp();
actionBarProp
.setLeftAction(Action.CANCEL)
.setMode(ActionBarMode.STANDARD_MODE)
.setSelectionMode(ActionBarSelectionMode.SINGLE)
.setTitle($r('app.string.title_select_photos'));
return actionBarProp;
}
build() {
Column() {
ActionBar({
isShowBar: true,
actionBarProp: this.createActionBar(),
onMenuClicked: this.onMenuClicked
})
}
}
}

View File

@ -13,7 +13,7 @@
* limitations under the License.
*/
import { Logger } from './Logger'
import { Logger } from '../../../common/utils/Logger';
import { ScreenManager } from '../../../common/model/common/ScreenManager'
import { Constants } from '../../../common/model/common/Constants'

View File

@ -15,22 +15,23 @@
import router from '@system.router'
import { AlbumSelectGridItemNewStyle } from './AlbumSelectGridItemNewStyle'
import { AlbumSetDataSource } from '../../../../common/model/browser/album/AlbumSetDataSource'
import { Constants } from '../../../../common/model/common/Constants'
import { ScreenManager } from '../../../../common/model/common/ScreenManager'
import { BroadCast } from '../../../../common/utils/BroadCast'
import { NoPhotoComponent } from '../../../../common/view/NoPhotoComponent'
import { Logger } from '../../utils/Logger'
import { TraceControllerUtils } from '../../../../common/utils/TraceControllerUtils'
import { MediaDataSource } from '../../../../common/model/browser/photo/MediaDataSource'
import { NewAlbumPageActionBar } from './NewAlbumPageActionBar'
import { Action } from '../../../../common/view/browserOperation/Action'
import { SelectManager } from '../../../../common/model/browser/SelectManager'
import { UiUtil } from '../../utils/UiUtil'
import { AlbumDefine } from '../../../../common/model/browser/AlbumDefine';
import { AlbumInfo } from '../../../../common/model/browser/album/AlbumInfo';
import { BroadCastManager } from '../../../../common/model/common/BroadCastManager';
import { BroadCastConstants } from '../../../../common/model/common/BroadCastConstants';
import { AlbumSetDataSource } from '../../../common/model/browser/album/AlbumSetDataSource'
import { Constants } from '../../../common/model/common/Constants'
import { ScreenManager } from '../../../common/model/common/ScreenManager'
import { BroadCast } from '../../../common/utils/BroadCast'
import { NoPhotoComponent } from '../../../common/view/NoPhotoComponent'
import { Logger } from '../../../common/utils/Logger';
import { TraceControllerUtils } from '../../../common/utils/TraceControllerUtils'
import { MediaDataSource } from '../../../common/model/browser/photo/MediaDataSource'
import { Action } from '../../../common/view/browserOperation/Action'
import { ActionBar } from '../../../common/view/actionbar/ActionBar';
import { SelectManager } from '../../../common/model/browser/SelectManager'
import { UiUtil } from '../utils/UiUtil'
import { AlbumDefine } from '../../../common/model/browser/AlbumDefine';
import { AlbumInfo } from '../../../common/model/browser/album/AlbumInfo';
import { BroadCastManager } from '../../../common/model/common/BroadCastManager';
import { BroadCastConstants } from '../../../common/model/common/BroadCastConstants';
import { AlbumSelectBarModel } from '../model/AlbumSelectBarModel';
@Entry
@Component
@ -49,6 +50,7 @@ export struct AlbumSelect {
private dataSource: MediaDataSource = new MediaDataSource(Constants.DEFAULT_SLIDING_WIN_SIZE);
private mSelectManager = new SelectManager();
private albumInfo: AlbumInfo = undefined;
private barModel: AlbumSelectBarModel = new AlbumSelectBarModel()
aboutToAppear(): void {
TraceControllerUtils.startTrace('AlbumSetPageAboutToAppear');
@ -133,7 +135,10 @@ export struct AlbumSelect {
justifyContent: FlexAlign.Start,
alignItems: ItemAlign.Start
}) {
NewAlbumPageActionBar({ onMenuClicked: this.onMenuClicked })
ActionBar({
actionBarProp: this.barModel.createActionBar(),
onMenuClicked: this.onMenuClicked
})
Stack() {
if (this.isEmpty) {

View File

@ -13,15 +13,15 @@
* limitations under the License.
*/
import { AlbumInfo } from '../../../../common/model/browser/album/AlbumInfo';
import { EmptyAlbumComponent } from './EmptyAlbumComponent';
import { Logger } from '../../utils/Logger'
import { BroadCast } from '../../../../common//utils/BroadCast'
import { ScreenManager } from '../../../../common/model/common/ScreenManager'
import { AlbumInfo } from '../../../common/model/browser/album/AlbumInfo';
import { EmptyAlbumComponent } from '../../../common/view/EmptyAlbumComponent';
import { Logger } from '../../../common/utils/Logger';
import { BroadCast } from '../../../common/utils/BroadCast'
import { ScreenManager } from '../../../common/model/common/ScreenManager'
import router from '@system.router';
import { AlbumDefine } from '../../../../common/model/browser/AlbumDefine'
import { SelectManager } from '../../../../common/model/browser/SelectManager'
import { Constants } from '../../../../common/model/common/Constants'
import { AlbumDefine } from '../../../common/model/browser/AlbumDefine'
import { SelectManager } from '../../../common/model/browser/SelectManager'
import { Constants } from '../../../common/model/common/Constants'
// The item of album grid, and it's new style.
@Component
@ -186,7 +186,7 @@ export struct AlbumSelectGridItemNewStyle {
.onClick(() => {
this.logger.info(`After onClick, MediaSet is: ${JSON.stringify(this.item)}`);
router.push({
uri: 'feature/browser/view/album/NewAlbumPage',
uri: 'feature/newAlbum/view/NewAlbumPage',
params: {
item: JSON.stringify(this.item)
}

View File

@ -13,12 +13,12 @@
* limitations under the License.
*/
import { Logger } from '../../utils/Logger'
import { BroadCastConstants } from '../../../../common/model/common/BroadCastConstants'
import { MenuOperationCallback } from '../../../../common/view/browserOperation/MenuOperationCallback'
import { MenuOperation } from '../../../../common/view/browserOperation/MenuOperation'
import { MenuContext } from '../../../../common/view/browserOperation/MenuContext'
import { BrowserOperationFactory } from '../../../../common/interface/BrowserOperationFactory'
import { Logger } from '../../../common/utils/Logger';
import { BroadCastConstants } from '../../../common/model/common/BroadCastConstants'
import { MenuOperationCallback } from '../../../common/view/browserOperation/MenuOperationCallback'
import { MenuOperation } from '../../../common/view/browserOperation/MenuOperation'
import { MenuContext } from '../../../common/view/browserOperation/MenuContext'
import { BrowserOperationFactory } from '../../../common/interface/BrowserOperationFactory'
export class AddNotesMenuOperation implements MenuOperation, MenuOperationCallback {
private menuContext: MenuContext;

View File

@ -13,15 +13,15 @@
* limitations under the License.
*/
import { MediaLibraryAccess } from '../../../../common/access/MediaLibraryAccess';
import { Logger } from '../../utils/Logger'
import { MenuOperationCallback } from '../../../../common/view/browserOperation/MenuOperationCallback'
import { MenuOperation } from '../../../../common/view/browserOperation/MenuOperation'
import { MenuContext } from '../../../../common/view/browserOperation/MenuContext'
import { BrowserOperationFactory } from '../../../../common/interface/BrowserOperationFactory'
import { BroadCastConstants } from '../../../../common/model/common/BroadCastConstants';
import { AlbumDefine } from '../../../../common/model/browser/AlbumDefine'
import { Constants } from '../../../../common/model/browser/photo/Constants'
import { MediaLibraryAccess } from '../../../common/access/MediaLibraryAccess';
import { Logger } from '../../../common/utils/Logger';
import { MenuOperationCallback } from '../../../common/view/browserOperation/MenuOperationCallback'
import { MenuOperation } from '../../../common/view/browserOperation/MenuOperation'
import { MenuContext } from '../../../common/view/browserOperation/MenuContext'
import { BrowserOperationFactory } from '../../../common/interface/BrowserOperationFactory'
import { BroadCastConstants } from '../../../common/model/common/BroadCastConstants';
import { AlbumDefine } from '../../../common/model/browser/AlbumDefine'
import { Constants } from '../../../common/model/browser/photo/Constants'
export class DeleteMenuOperation implements MenuOperation, MenuOperationCallback {
private menuContext: MenuContext;

View File

@ -13,11 +13,11 @@
* limitations under the License.
*/
import { Logger } from '../../utils/Logger'
import { MenuOperation } from '../../../../common/view/browserOperation/MenuOperation'
import { MenuContext } from '../../../../common/view/browserOperation/MenuContext'
import { Constants } from '../../../../common/model/browser/photo/Constants'
import { BrowserOperationFactory } from '../../../../common/interface/BrowserOperationFactory'
import { Logger } from '../../../common/utils/Logger';
import { MenuOperation } from '../../../common/view/browserOperation/MenuOperation'
import { MenuContext } from '../../../common/view/browserOperation/MenuContext'
import { Constants } from '../../../common/model/browser/photo/Constants'
import { BrowserOperationFactory } from '../../../common/interface/BrowserOperationFactory'
export class FavoriteMenuOperation implements MenuOperation {
private menuContext: MenuContext;

View File

@ -14,12 +14,12 @@
*/
import router from '@system.router'
import { Logger } from '../../utils/Logger'
import { MenuOperation } from '../../../../common/view/browserOperation/MenuOperation'
import { MenuContext } from '../../../../common/view/browserOperation/MenuContext'
import { ScreenManager } from '../../../../common/model/common/ScreenManager'
import { JumpSourceToMain } from '../../../../common/model/browser/photo/JumpSourceToMain'
import { Constants } from '../../../../common/model/common/Constants';
import { Logger } from '../../../common/utils/Logger';
import { MenuOperation } from '../../../common/view/browserOperation/MenuOperation'
import { MenuContext } from '../../../common/view/browserOperation/MenuContext'
import { ScreenManager } from '../../../common/model/common/ScreenManager'
import { JumpSourceToMain } from '../../../common/model/browser/photo/JumpSourceToMain'
import { Constants } from '../../../common/model/common/Constants';
export class GotoPhotosMenuOperation implements MenuOperation {
private logger: Logger = new Logger('GotoPhotosMenuOperation');

View File

@ -13,12 +13,12 @@
* limitations under the License.
*/
import { Logger } from '../../utils/Logger'
import { MenuOperationCallback } from '../../../../common/view/browserOperation/MenuOperationCallback'
import { MenuOperation } from '../../../../common/view/browserOperation/MenuOperation'
import { MenuContext } from '../../../../common/view/browserOperation/MenuContext'
import { BrowserOperationFactory } from '../../../../common/interface/BrowserOperationFactory'
import { Constants } from '../../../../common/model/browser/photo/Constants'
import { Logger } from '../../../common/utils/Logger';
import { MenuOperationCallback } from '../../../common/view/browserOperation/MenuOperationCallback'
import { MenuOperation } from '../../../common/view/browserOperation/MenuOperation'
import { MenuContext } from '../../../common/view/browserOperation/MenuContext'
import { BrowserOperationFactory } from '../../../common/interface/BrowserOperationFactory'
import { Constants } from '../../../common/model/browser/photo/Constants'
export class RecoverMenuOperation implements MenuOperation, MenuOperationCallback {
private menuContext: MenuContext;

View File

@ -13,15 +13,15 @@
* limitations under the License.
*/
import { Logger } from '../../utils/Logger'
import { BroadCastConstants } from '../../../../common/model/common/BroadCastConstants';
import { MenuOperationCallback } from '../../../../common/view/browserOperation/MenuOperationCallback'
import { MenuOperation } from '../../../../common/view/browserOperation/MenuOperation'
import { MenuContext } from '../../../../common/view/browserOperation/MenuContext'
import { BrowserOperationFactory } from '../../../../common/interface/BrowserOperationFactory'
import { BrowserDataFactory } from '../../../../common/interface/BrowserDataFactory'
import { Constants } from '../../../../common/model/browser/photo/Constants'
import { UiUtil } from '../../../../common/utils/UiUtil';
import { Logger } from '../../../common/utils/Logger';
import { BroadCastConstants } from '../../../common/model/common/BroadCastConstants';
import { MenuOperationCallback } from '../../../common/view/browserOperation/MenuOperationCallback'
import { MenuOperation } from '../../../common/view/browserOperation/MenuOperation'
import { MenuContext } from '../../../common/view/browserOperation/MenuContext'
import { BrowserOperationFactory } from '../../../common/interface/BrowserOperationFactory'
import { BrowserDataFactory } from '../../../common/interface/BrowserDataFactory'
import { Constants } from '../../../common/model/browser/photo/Constants'
import { UiUtil } from '../../../common/utils/UiUtil';
export class RenameMenuOperation implements MenuOperation, MenuOperationCallback {
private menuContext: MenuContext;

View File

@ -13,12 +13,12 @@
* limitations under the License.
*/
import { Logger } from '../../utils/Logger'
import { Constants } from '../../../../common/model/browser/photo/Constants'
import { MenuOperation } from '../../../../common/view/browserOperation/MenuOperation'
import { MenuContext } from '../../../../common/view/browserOperation/MenuContext'
import { BrowserOperationFactory } from '../../../../common/interface/BrowserOperationFactory'
import { BrowserDataFactory } from '../../../../common/interface/BrowserDataFactory'
import { Logger } from '../../../common/utils/Logger';
import { Constants } from '../../../common/model/browser/photo/Constants'
import { MenuOperation } from '../../../common/view/browserOperation/MenuOperation'
import { MenuContext } from '../../../common/view/browserOperation/MenuContext'
import { BrowserOperationFactory } from '../../../common/interface/BrowserOperationFactory'
import { BrowserDataFactory } from '../../../common/interface/BrowserDataFactory'
export class RotateMenuOperation implements MenuOperation {
private menuContext: MenuContext;

View File

@ -15,48 +15,47 @@
*/
import router from '@system.router'
import { Logger } from '../../utils/Logger'
import { Action } from '../../../../common/view/browserOperation/Action'
import { MenuOperation } from '../../../../common/view/browserOperation/MenuOperation'
import { MenuContext } from '../../../../common/view/browserOperation/MenuContext'
import { MenuOperationFactory } from '../../../../common/interface/MenuOperationFactory'
import { GotoPhotosMenuOperation } from './GotoPhotosMenuOperation'
import { DeleteMenuOperation } from './DeleteMenuOperation'
import { RecoverMenuOperation } from './RecoverMenuOperation'
import { MoveMenuOperation } from '../../../../common/view/browserOperation/MoveMenuOperation'
import { CopyMenuOperation } from '../../../../common/view/browserOperation/CopyMenuOperation'
import { FavoriteMenuOperation } from './FavoriteMenuOperation'
import { DateUtil } from '../../../../common/utils/DateUtil'
import { CustomDialogView } from '../../../../common/view/dialog/CustomDialogView'
import { Constants } from '../../../../common/model/common/Constants'
import { MediaItem } from '../../../../common/model/browser/photo/MediaItem'
import { PhotoDataSource } from '../../../../common/model/browser/photo/PhotoDataSource'
import { BroadCast } from '../../../../common/utils/BroadCast'
import { UriDataSource } from '../../../../common/model/browser/photo/UriDataSource'
import { BroadCastConstants } from '../../../../common/model/common/BroadCastConstants'
import { BroadCastManager } from '../../../../common/model/common/BroadCastManager'
import { Constants as PhotoConstants } from '../../../../common/model/browser/photo/Constants'
import { PhotoBrowserBg } from '../../../../common/view/PhotoBrowserBg'
import { Logger } from '../../../common/utils/Logger';
import { Action } from '../../../common/view/browserOperation/Action'
import { MenuOperation } from '../../../common/view/browserOperation/MenuOperation'
import { MenuContext } from '../../../common/view/browserOperation/MenuContext'
import { MenuOperationFactory } from '../../../common/interface/MenuOperationFactory'
import { GotoPhotosMenuOperation } from '../operation/GotoPhotosMenuOperation'
import { DeleteMenuOperation } from '../operation/DeleteMenuOperation'
import { RecoverMenuOperation } from '../operation/RecoverMenuOperation'
import { MoveMenuOperation } from '../../../common/view/browserOperation/MoveMenuOperation'
import { CopyMenuOperation } from '../../../common/view/browserOperation/CopyMenuOperation'
import { FavoriteMenuOperation } from '../operation/FavoriteMenuOperation'
import { DateUtil } from '../../../common/utils/DateUtil'
import { CustomDialogView } from '../../../common/view/dialog/CustomDialogView'
import { Constants } from '../../../common/model/common/Constants'
import { MediaItem } from '../../../common/model/browser/photo/MediaItem'
import { PhotoDataSource } from '../../../common/model/browser/photo/PhotoDataSource'
import { BroadCast } from '../../../common/utils/BroadCast'
import { UriDataSource } from '../../../common/model/browser/photo/UriDataSource'
import { BroadCastConstants } from '../../../common/model/common/BroadCastConstants'
import { BroadCastManager } from '../../../common/model/common/BroadCastManager'
import { Constants as PhotoConstants } from '../../../common/model/browser/photo/Constants'
import { PhotoBrowserBg } from '../../../common/view/PhotoBrowserBg'
import { PhotoBrowserActionBar } from './PhotoBrowserActionBar'
import { ToolBar } from '../../../../common/view/actionbar/ToolBar'
import { PhotoSwiper } from '../../../../common/view/PhotoSwiper'
import { ScreenManager } from '../../../../common/model/common/ScreenManager'
import { JumpSourceToMain } from '../../../../common/model/browser/photo/JumpSourceToMain'
import { RenameMenuOperation } from './RenameMenuOperation'
import { RotateMenuOperation } from './RotateMenuOperation'
import { AddNotesMenuOperation } from './AddNotesMenuOperation'
import { MediaLibraryAccess } from '../../../../common/access/MediaLibraryAccess'
import { MediaOperationType } from '../../../../common/model/common/MediaOperationType'
import { AlbumDefine } from '../../../../common/model/browser/AlbumDefine'
import { UiUtil } from '../../../../common/utils/UiUtil';
import { AlbumInfo } from '../../../../common/model/browser/album/AlbumInfo';
import { CommonObserverCallback } from '../../../../common/model/browser/CommonObserverCallback';
import { MediaObserver } from '../../../../common/model/browser/dataObserver/MediaObserver';
import mMultimodalInputManager from '../../../../common/model/common/MultimodalInputManager'
import { TraceControllerUtils } from '../../../../common/utils/TraceControllerUtils'
import { PhotoBrowserHolder } from '../../../../common/view/PhotoBrowserHolder';
import { ToolBar } from '../../../common/view/actionbar/ToolBar'
import { PhotoSwiper } from '../../../common/view/PhotoSwiper'
import { ScreenManager } from '../../../common/model/common/ScreenManager'
import { JumpSourceToMain } from '../../../common/model/browser/photo/JumpSourceToMain'
import { RenameMenuOperation } from '../operation/RenameMenuOperation'
import { RotateMenuOperation } from '../operation/RotateMenuOperation'
import { AddNotesMenuOperation } from '../operation/AddNotesMenuOperation'
import { MediaLibraryAccess } from '../../../common/access/MediaLibraryAccess'
import { MediaOperationType } from '../../../common/model/common/MediaOperationType'
import { AlbumDefine } from '../../../common/model/browser/AlbumDefine'
import { UiUtil } from '../../../common/utils/UiUtil';
import { AlbumInfo } from '../../../common/model/browser/album/AlbumInfo';
import { CommonObserverCallback } from '../../../common/model/browser/CommonObserverCallback';
import { MediaObserver } from '../../../common/model/browser/dataObserver/MediaObserver';
import mMultimodalInputManager from '../../../common/model/common/MultimodalInputManager'
import { TraceControllerUtils } from '../../../common/utils/TraceControllerUtils'
import { PhotoBrowserHolder } from '../../../common/view/PhotoBrowserHolder';
import resourceManager from '@ohos.resourceManager';
import { BrowserDataImpl } from '../../../../common/model/browser/BrowserDataImpl'
// page of large photo
@Entry
@ -67,7 +66,7 @@ struct PhotoBrowser {
@Provide(dateTitle) photoDate: string = '';
@Provide(timeLocationTitle) timeAndLocation: string = '';
@Provide menuList: Array<Action> = new Array<Action>();
@Provide toolMenuList: Array<Action> = new Array<Action>();
private toolMenuList: Array<Action> = new Array<Action>();
@Provide topMenuList: Array<Action> = new Array<Action>();
@Provide moreMenuList: Array<Action> = new Array<Action>();
@Provide broadCast: BroadCast = new BroadCast();
@ -812,7 +811,7 @@ struct PhotoBrowser {
}
this.logger.info(`item.displayName: ${item.displayName} item ${JSON.stringify(item)}`);
router.replace({
uri: 'feature/browser/view/photoGrid/PhotoGridPage',
uri: 'feature/photoGrid/view/PhotoGridPage',
params: {
item: JSON.stringify(item)
}
@ -897,7 +896,10 @@ struct PhotoBrowser {
onMenuClicked: this.onMenuClicked,
})
ToolBar({
onMenuClicked: this.onMenuClicked, isFromPhotoBrowser: true
isShowBar: $isShowBar,
toolMenuList: this.toolMenuList,
onMenuClicked: this.onMenuClicked,
isFromPhotoBrowser: true
})
PhotoBrowserHolder()
CustomDialogView()

View File

@ -13,16 +13,16 @@
* limitations under the License.
*/
import { Action } from '../../../../common/view/browserOperation/Action'
import { ActionBar } from '../../../../common/view/actionbar/ActionBar'
import { ActionBarProp } from '../../../../common/view/browserOperation/ActionBarProp'
import { ActionBarMode, ActionBarColorMode } from '../../../../common/view/browserOperation/ActionBarMode'
import { ScreenManager } from '../../../../common/model/common/ScreenManager'
import { Action } from '../../../common/view/browserOperation/Action'
import { ActionBar } from '../../../common/view/actionbar/ActionBar'
import { ActionBarProp } from '../../../common/view/browserOperation/ActionBarProp'
import { ActionBarMode, ActionBarColorMode } from '../../../common/view/browserOperation/ActionBarMode'
import { ScreenManager } from '../../../common/model/common/ScreenManager'
@Component
export struct PhotoBrowserActionBar {
@Consume isShowBar: boolean;
@StorageLink('isSplitMode') isSplitMode: boolean = ScreenManager.getInstance().isSplitMode();
@Consume menuList: Action[];
@StorageLink('leftBlank') leftBlank: [number, number, number, number]
= [0, ScreenManager.getInstance().getStatusBarHeight(), 0, ScreenManager.getInstance().getNaviBarHeight()];
onMenuClicked: Function;
@ -35,20 +35,19 @@ export struct PhotoBrowserActionBar {
.setLeftAction(Action.BACK)
.setAlpha(ActionBarProp.PHOTO_BROWSER_ACTIONBAR_ALPHA)
.setMode(ActionBarMode.TOP_MODE)
.setColorMode(this.isVideoPage ? ActionBarColorMode.TRANSPARENT : ActionBarColorMode.NORMAL);
.setColorMode(this.isVideoPage ? ActionBarColorMode.TRANSPARENT : ActionBarColorMode.NORMAL)
.setMenuList(this.menuList)
return actionBarProp;
}
build() {
Column() {
if (this.isShowBar) {
ActionBar({
isShowBar: true,
actionBarProp: this.createActionBar(),
onMenuClicked: this.onMenuClicked,
isVideoPage: this.isVideoPage
})
}
ActionBar({
isShowBar: $isShowBar,
actionBarProp: this.createActionBar(),
onMenuClicked: this.onMenuClicked,
isVideoPage: this.isVideoPage
})
}
.markAnchor({ x: '0%', y: '0%' })
.position({ x: '0%', y: this.leftBlank[1] })

View File

@ -14,23 +14,23 @@
*/
import router from '@system.router'
import { Logger } from '../../utils/Logger'
import { SelectUtil } from '../../../../common/model/browser/photo/SelectUtil'
import { Action } from '../../../../common/view/browserOperation/Action'
import { Constants } from '../../../../common/model/common/Constants'
import { MediaItem } from '../../../../common/model/browser/photo/MediaItem'
import { PhotoDataSource } from '../../../../common/model/browser/photo/PhotoDataSource'
import { ThirdSelectPhotoBrowserActionBar } from '../../../../common/view/ThirdSelectPhotoBrowserActionBar'
import { SelectManager } from '../../../../common/model/browser/SelectManager'
import { PhotoBrowserBg } from '../../../../common/view/PhotoBrowserBg'
import { Constants as PhotoConstants } from '../../../../common/model/browser/photo/Constants'
import { BroadCast } from '../../../../common/utils/BroadCast'
import { BroadCastConstants } from '../../../../common/model/common/BroadCastConstants'
import { BroadCastManager } from '../../../../common/model/common/BroadCastManager'
import { PhotoSwiper } from '../../../../common/view/PhotoSwiper'
import mMultimodalInputManager from '../../../../common/model/common/MultimodalInputManager'
import { ScreenManager } from '../../../../common/model/common/ScreenManager';
import { AlbumDefine } from '../../../../common/model/browser/AlbumDefine'
import { Logger } from '../../../common/utils/Logger';
import { SelectUtil } from '../../../common/model/browser/photo/SelectUtil'
import { Action } from '../../../common/view/browserOperation/Action'
import { Constants } from '../../../common/model/common/Constants'
import { MediaItem } from '../../../common/model/browser/photo/MediaItem'
import { PhotoDataSource } from '../../../common/model/browser/photo/PhotoDataSource'
import { ThirdSelectPhotoBrowserActionBar } from '../../../common/view/ThirdSelectPhotoBrowserActionBar'
import { SelectManager } from '../../../common/model/browser/SelectManager'
import { PhotoBrowserBg } from '../../../common/view/PhotoBrowserBg'
import { Constants as PhotoConstants } from '../../../common/model/browser/photo/Constants'
import { BroadCast } from '../../../common/utils/BroadCast'
import { BroadCastConstants } from '../../../common/model/common/BroadCastConstants'
import { BroadCastManager } from '../../../common/model/common/BroadCastManager'
import { PhotoSwiper } from '../../../common/view/PhotoSwiper'
import mMultimodalInputManager from '../../../common/model/common/MultimodalInputManager'
import { ScreenManager } from '../../../common/model/common/ScreenManager';
import { AlbumDefine } from '../../../common/model/browser/AlbumDefine'
// select mode
@Entry

View File

@ -13,16 +13,16 @@
* limitations under the License.
*/
import router from '@system.router'
import { DateUtil } from '../../../../common/utils/DateUtil'
import { Logger } from '../../utils/Logger'
import { Action } from '../../../../common/view/browserOperation/Action'
import { MenuOperation } from '../../../../common/view/browserOperation/MenuOperation'
import { DateUtil } from '../../../common/utils/DateUtil'
import { Logger } from '../../../common/utils/Logger';
import { Action } from '../../../common/view/browserOperation/Action'
import { MenuOperation } from '../../../common/view/browserOperation/MenuOperation'
import { PhotoBrowserActionBar } from './PhotoBrowserActionBar'
import { BroadCast } from '../../../../common/utils/BroadCast'
import { ScreenManager } from '../../../../common/model/common/ScreenManager';
import { BroadCastManager } from '../../../../common/model/common/BroadCastManager';
import { BroadCastConstants } from '../../../../common/model/common/BroadCastConstants';
import { TraceControllerUtils } from '../../../../common/utils/TraceControllerUtils';
import { BroadCast } from '../../../common/utils/BroadCast'
import { ScreenManager } from '../../../common/model/common/ScreenManager';
import { BroadCastManager } from '../../../common/model/common/BroadCastManager';
import { BroadCastConstants } from '../../../common/model/common/BroadCastConstants';
import { TraceControllerUtils } from '../../../common/utils/TraceControllerUtils';
@Entry
@Component

View File

@ -1,108 +0,0 @@
/*
* Copyright (c) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Action } from '../../../../common/view/browserOperation/Action'
import { ActionBar } from '../../../../common/view/actionbar/ActionBar'
import { ActionBarProp } from '../../../../common/view/browserOperation/ActionBarProp'
import { ActionBarMode, ActionBarSelectionMode } from '../../../../common/view/browserOperation/ActionBarMode'
import { ScreenManager } from '../../../../common/model/common/ScreenManager'
import { Logger } from '../../utils/Logger'
@Component
export struct AlbumSetPageActionBar {
@Consume isAlbumSetSelectedMode: boolean;
@Consume('selectedCount') selectedAlbumsCount: number;
@Consume isDisableRename: boolean;
@Consume isDisableDelete: boolean;
@StorageLink('isHorizontal') isHorizontal: boolean = ScreenManager.getInstance().isHorizontal();
@StorageLink('isSidebar') isSidebar: boolean = ScreenManager.getInstance().isSidebar();
onMenuClicked: Function;
logger: Logger = new Logger('AlbumSetPageActionBar');
private createHorizontalActionBar(): ActionBarProp {
this.logger.info(`createHorizontalActionBar, isAlbumSetSelectedMode: ${this.isAlbumSetSelectedMode}`);
let menuList: Array<Action> = new Array<Action>();
let actionBarProp: ActionBarProp = new ActionBarProp();
actionBarProp
.setHasTabBar(this.isSidebar)
.setTitle($r('app.string.tab_albums'))
.setIsHeadTitle(true);
if (this.isAlbumSetSelectedMode) {
menuList.push(
((!this.isDisableRename && this.selectedAlbumsCount == 1) ? Action.RENAME : Action.RENAME_INVALID),
((!this.isDisableDelete && this.selectedAlbumsCount > 0) ? Action.DELETE : Action.DELETE_INVALID));
actionBarProp
.setLeftAction(Action.CANCEL)
.setMenuList(menuList)
.setMode(ActionBarMode.SELECTION_MODE)
.setSelectionMode(ActionBarSelectionMode.MULTI);
} else {
menuList.push(Action.NEW)
actionBarProp
.setMenuList(menuList)
.setMode(ActionBarMode.STANDARD_MODE);
}
return actionBarProp;
}
private createActionBar(): ActionBarProp {
this.logger.info(`createActionBar, isAlbumSetSelectedMode: ${this.isAlbumSetSelectedMode}`);
let menuList: Array<Action> = new Array<Action>();
let actionBarProp: ActionBarProp = new ActionBarProp();
menuList.push(Action.NEW);
actionBarProp
.setHasTabBar(this.isSidebar)
.setTitle($r('app.string.tab_albums'))
.setIsHeadTitle(true);
if (this.isAlbumSetSelectedMode) {
actionBarProp
.setLeftAction(Action.CANCEL)
.setMode(ActionBarMode.SELECTION_MODE)
.setSelectionMode(ActionBarSelectionMode.MULTI);
} else {
actionBarProp
.setMenuList(menuList)
.setMode(ActionBarMode.STANDARD_MODE);
}
return actionBarProp;
}
build() {
Column() {
if (this.isHorizontal) {
ActionBar({
isShowBar: true,
actionBarProp: this.createHorizontalActionBar(),
onMenuClicked: this.onMenuClicked
})
} else {
ActionBar({
isShowBar: true,
actionBarProp: this.createActionBar(),
onMenuClicked: this.onMenuClicked
})
}
}
}
}

View File

@ -1,52 +0,0 @@
/*
* Copyright (c) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Logger } from '../../utils/Logger'
import { Action } from '../../../../common/view/browserOperation/Action'
import { ToolBar } from '../../../../common/view/actionbar/ToolBar'
@Component
export struct AlbumSetPageToolBar {
@Provide isShowBar: boolean = true;
@Provide toolMenuList: Array<Action> = new Array<Action>();
@Consume @Watch('updateToolbar') isAlbumSetSelectedMode: boolean;
@Consume('selectedCount') @Watch('updateToolbar') selectedAlbumsCount: number;
@Consume isDisableRename: boolean;
@Consume isDisableDelete: boolean;
onMenuClicked: Function;
logger: Logger = new Logger('AlbumSetPageToolBar');
aboutToAppear(): void {
this.logger.info('aboutToAppear');
this.updateToolbar();
}
private updateToolbar(): void {
this.logger.info('updateToolbar');
if (this.isAlbumSetSelectedMode) {
this.logger.info('pushToolbar');
this.toolMenuList = [];
this.toolMenuList.push(
((!this.isDisableRename && this.selectedAlbumsCount == 1) ? Action.RENAME : Action.RENAME_INVALID),
((!this.isDisableDelete && this.selectedAlbumsCount > 0) ? Action.DELETE : Action.DELETE_INVALID));
}
}
build() {
ToolBar({
onMenuClicked: this.onMenuClicked
})
}
}

View File

@ -1,47 +0,0 @@
/*
* Copyright (c) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Action } from '../../../../common/view/browserOperation/Action'
import { ActionBar } from '../../../../common/view/actionbar/ActionBar'
import { ActionBarProp } from '../../../../common/view/browserOperation/ActionBarProp'
import { ActionBarMode } from '../../../../common/view/browserOperation/ActionBarMode'
import { Logger } from '../../utils/Logger'
@Component
export struct DistributedAlbumSetPageActionBar {
name: Resource;
onMenuClicked: Function;
@Provide moreMenuList: Action[] = [];
logger: Logger = new Logger('DistributedAlbumSetPageActionBar');
private createActionBar(): ActionBarProp {
let actionBarProp: ActionBarProp = new ActionBarProp();
actionBarProp
.setLeftAction(Action.BACK)
.setTitle(this.name)
.setMode(ActionBarMode.STANDARD_MODE);
return actionBarProp;
}
build() {
Column() {
ActionBar({
isShowBar: true,
actionBarProp: this.createActionBar(),
onMenuClicked: this.onMenuClicked
})
}
}
}

View File

@ -1,70 +0,0 @@
/*
* Copyright (c) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Logger } from '../../utils/Logger'
import { Constants } from '../../../../common/model/common/Constants'
@Component
export struct RecycleAlbum {
@State icHeight: number = 0;
@Consume gridHeight: number;
logger: Logger = new Logger('RecycleAlbum');
gridAspectRatio = Constants.CARD_ASPECT_RATIO;
aboutToAppear(): void {
let numberHeight = px2vp(fp2px(Constants.TEXT_SIZE_BODY2));
let nameHeight = px2vp(fp2px(Constants.TEXT_SIZE_SUB_TITLE1));
this.icHeight = this.gridHeight - Constants.ALBUM_SET_NEW_ICON_MARGIN;
-numberHeight - nameHeight;
}
build() {
Flex({
direction: FlexDirection.Column,
justifyContent: FlexAlign.Start,
alignItems: ItemAlign.Start
}) {
Stack({ alignContent: Alignment.Center }) {
Image($r('app.media.ic_gallery_public_delete_line'))
.width($r('app.float.recycle_album_cover_icon_size'))
.height($r('app.float.recycle_album_cover_icon_size'))
.fillColor($r('app.color.empty_or_recycle_album_icon'))
.onError((msg: {
componentWidth: number,
componentHeight: number
}) => {
this.logger.error(`image load failed and its componentWidth is: ${msg.componentWidth}`);
this.logger.error(`image load failed and its componentHeight is: ${msg.componentHeight}`);
})
.onComplete((msg: {
width: number,
height: number,
componentWidth: number,
componentHeight: number
}) => {
this.logger.debug(`image load successfully and its width is: ${msg.width}`);
this.logger.debug(`image load successfully and its height is: ${msg.height}`);
this.logger.debug(`image load successfully and its componentWidth is: ${msg.componentWidth}`);
this.logger.debug(`image load successfully and its componentHeight is: ${msg.componentHeight}`);
})
}
.height(this.icHeight)
.width('100%')
}
.aspectRatio(this.gridAspectRatio)
.backgroundColor($r('app.color.empty_or_recycle_album_back'))
.border({ radius: $r('sys.float.ohos_id_corner_radius_default_l') })
}
}

View File

@ -1,47 +0,0 @@
/*
* Copyright (c) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { BroadCast } from '../../../../common/utils/BroadCast'
import { Constants as PhotoConstants } from '../../../../common/model/browser/photo/Constants'
@Component
export struct TipPopup {
@State isShowPop: boolean = false;
@Consume broadCast: BroadCast;
aboutToAppear() {
this.broadCast.on(PhotoConstants.POP_APPEAR, () => {
this.isShowPop = true;
});
this.broadCast.on(PhotoConstants.POP_DISAPPEAR, () => {
this.isShowPop = false;
});
}
build() {
Row() {
Text($r('app.string.video_pause'))
.fontSize($r('sys.float.ohos_id_text_size_headline7'))
.fontFamily($r('app.string.id_text_font_family_regular'))
.fontColor($r('app.color.white'))
.maxLines(1)
.textOverflow({ overflow: TextOverflow.Ellipsis })
.align(Alignment.Center)
}
.backgroundColor($r('app.color.detail_view_bg_color'))
.padding($r('app.float.popup_padding'))
.visibility(this.isShowPop ? Visibility.Visible : Visibility.None)
.borderRadius($r('app.float.tip_popup_border_radius'))
}
}

View File

@ -1,122 +0,0 @@
/*
* Copyright (c) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Action } from '../../../../common/view/browserOperation/Action'
import { ActionBar } from '../../../../common/view/actionbar/ActionBar'
import { ActionBarProp } from '../../../../common/view/browserOperation/ActionBarProp'
import { ActionBarMode, ActionBarSelectionMode } from '../../../../common/view/browserOperation/ActionBarMode'
import { Logger } from '../../utils/Logger'
import { ScreenManager } from '../../../../common/model/common/ScreenManager'
import { AlbumDefine } from '../../../../common/model/browser/AlbumDefine';
@Component
export struct PhotoGridPageActionBar {
@Consume isSelectedMode: boolean;
@Consume isAllSelected: boolean;
@StorageLink('isHorizontal') isHorizontal: boolean = ScreenManager.getInstance().isHorizontal();
@Consume('selectedCount') selectedCount: number;
@Consume isEmpty: boolean;
title: string;
albumId: string;
isRecycle: boolean;
onMenuClicked: Function;
logger: Logger = new Logger('PhotoGridPageActionBar');
isDistributedAlbum: boolean;
private createHorizontalActionBar(): ActionBarProp {
let menuList: Array<Action> = new Array<Action>();
let actionBarProp: ActionBarProp = new ActionBarProp();
actionBarProp
.setLeftAction(Action.BACK)
.setTitle(this.title)
.setMode(ActionBarMode.STANDARD_MODE);
if (this.isSelectedMode) {
if (this.isRecycle) {
menuList.push(
Boolean(this.selectedCount) ? Action.RECOVER : Action.RECOVER_INVALID,
Boolean(this.selectedCount) ? Action.DELETE : Action.DELETE_INVALID,
this.isAllSelected ? Action.DESELECT_ALL : Action.SELECT_ALL);
} else if (this.isDistributedAlbum) {
menuList.push(
(this.isAllSelected ? Action.DESELECT_ALL : Action.SELECT_ALL),
(Boolean(this.selectedCount) ? Action.SHARE : Action.SHARE_INVALID),
(Boolean(this.selectedCount) ? Action.DOWNLOAD : Action.DOWNLOAD_INVALID));
} else {
menuList.push(
(Boolean(this.selectedCount) ? Action.SHARE : Action.SHARE_INVALID),
(this.isAllSelected ? Action.DESELECT_ALL : Action.SELECT_ALL),
Boolean(this.selectedCount) ? Action.DELETE : Action.DELETE_INVALID, Action.MORE);
}
actionBarProp
.setLeftAction(Action.CANCEL)
.setMode(ActionBarMode.SELECTION_MODE)
.setSelectionMode(ActionBarSelectionMode.MULTI);
} else {
if (!AlbumDefine.ALBUM_DISABLE_NEW_LIST.has(this.albumId) && this.isDistributedAlbum == false) {
menuList.push(Action.NEW);
}
if (this.isRecycle && !this.isEmpty) {
menuList.push(Action.CLEAR_RECYCLE);
}
}
actionBarProp.setMenuList(menuList);
return actionBarProp;
}
private createActionBar(): ActionBarProp {
let menuList: Array<Action> = new Array<Action>();
let actionBarProp: ActionBarProp = new ActionBarProp();
if (!AlbumDefine.ALBUM_DISABLE_NEW_LIST.has(this.albumId) && this.isDistributedAlbum == false) {
menuList.push(Action.NEW);
}
actionBarProp
.setLeftAction(Action.BACK)
.setTitle(this.title)
.setMenuList(menuList)
.setMode(ActionBarMode.STANDARD_MODE);
this.logger.info(`createActionBar, isSelectedMode: ${this.isSelectedMode}`);
if (this.isSelectedMode) {
menuList = [];
actionBarProp
.setLeftAction(Action.CANCEL)
.setMenuList(menuList)
.setMode(ActionBarMode.SELECTION_MODE)
.setSelectionMode(ActionBarSelectionMode.MULTI);
}
return actionBarProp;
}
build() {
Column() {
if (this.isHorizontal) {
ActionBar({
isShowBar: true,
actionBarProp: this.createHorizontalActionBar(),
onMenuClicked: this.onMenuClicked
})
} else {
ActionBar({
isShowBar: true,
actionBarProp: this.createActionBar(),
onMenuClicked: this.onMenuClicked
})
}
}
}
}

View File

@ -1,68 +0,0 @@
/*
* Copyright (c) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Logger } from '../../utils/Logger'
import { Action } from '../../../../common/view/browserOperation/Action'
import { ToolBar } from '../../../../common/view/actionbar/ToolBar'
@Component
export struct PhotoGridPageToolBar {
@Consume @Watch('updateToolbar') isSelectedMode: boolean;
@Consume @Watch('updateToolbar') isAllSelected: boolean;
@Consume('selectedCount') @Watch('updateToolbar') selectedCount: number;
@Consume isEmpty: boolean;
isRecycleAlbum: boolean;
onMenuClicked: Function;
logger: Logger = new Logger('PhotoGridPageToolBar');
isDistributedAlbum: boolean;
@Provide toolMenuList: Array<Action> = new Array<Action>();
aboutToAppear(): void {
this.logger.info('aboutToAppear');
this.updateToolbar();
}
private updateToolbar(): void {
this.logger.info('updateToolbar');
if (this.isSelectedMode) {
this.toolMenuList = [];
if (this.isRecycleAlbum) {
this.toolMenuList.push((Boolean(this.selectedCount) ? Action.RECOVER : Action.RECOVER_INVALID),
(Boolean(this.selectedCount) ? Action.DELETE : Action.DELETE_INVALID),
(this.isAllSelected ? Action.DESELECT_ALL : Action.SELECT_ALL));
} else if (this.isDistributedAlbum) {
this.toolMenuList.push(
(this.isAllSelected ? Action.DESELECT_ALL : Action.SELECT_ALL),
(Boolean(this.selectedCount) ? Action.SHARE : Action.SHARE_INVALID),
(Boolean(this.selectedCount) ? Action.DOWNLOAD : Action.DOWNLOAD_INVALID));
} else {
this.toolMenuList.push((Boolean(this.selectedCount) ? Action.SHARE : Action.SHARE_INVALID),
(this.isAllSelected ? Action.DESELECT_ALL : Action.SELECT_ALL),
(Boolean(this.selectedCount) ? Action.DELETE : Action.DELETE_INVALID), Action.MORE);
}
} else {
if (this.isRecycleAlbum) {
this.toolMenuList = [];
this.toolMenuList.push(this.isEmpty ? Action.CLEAR_RECYCLE_INVALID : Action.CLEAR_RECYCLE);
}
}
}
build() {
ToolBar({
onMenuClicked: this.onMenuClicked
})
}
}

View File

@ -13,12 +13,17 @@
* limitations under the License.
*/
import { Logger as RootLogger } from '../../../common/utils/Logger'
import { Action } from '../../../common/view/browserOperation/Action'
import { ActionBarProp } from '../../../common/view/browserOperation/ActionBarProp'
import { ActionBarMode } from '../../../common/view/browserOperation/ActionBarMode'
const MODULE_ALBUM = 'Album_';
export class Logger extends RootLogger {
constructor(module: string) {
super(MODULE_ALBUM + module);
export class DistributedAlbumBarModel {
createActionBar(name: Resource | string): ActionBarProp {
let actionBarProp: ActionBarProp = new ActionBarProp();
actionBarProp
.setLeftAction(Action.BACK)
.setTitle(name)
.setMode(ActionBarMode.STANDARD_MODE);
return actionBarProp;
}
}

View File

@ -13,11 +13,11 @@
* limitations under the License.
*/
import { AlbumInfo } from '../../../../common/model/browser/album/AlbumInfo';
import { EmptyAlbumComponent } from './EmptyAlbumComponent';
import { ScreenManager } from '../../../../common/model/common/ScreenManager';
import { Logger } from '../../utils/Logger'
import { Constants } from '../../../../common/model/common/Constants'
import { AlbumInfo } from '../../../common/model/browser/album/AlbumInfo';
import { EmptyAlbumComponent } from '../../../common/view/EmptyAlbumComponent';
import { ScreenManager } from '../../../common/model/common/ScreenManager';
import { Logger } from '../../../common/utils/Logger';
import { Constants } from '../../../common/model/common/Constants'
import router from '@system.router';
// Traditional style grid item for distributed album set page
@ -187,7 +187,7 @@ export struct AlbumGridItemTraditionalStyle {
this.logger.info(`After onClick : ${JSON.stringify(this.item)}`);
let name = this.item.deviceName ? `${this.item.deviceName}(${this.item.displayName})` : this.item.displayName;
router.push({
uri: 'feature/browser/view/photoGrid/PhotoGridPage',
uri: 'feature/photoGrid/view/PhotoGridPage',
params: {
item: JSON.stringify(this.item),
isDistributedAlbum: true,

View File

@ -14,20 +14,21 @@
*/
import router from '@system.router';
import { Action } from '../../../../common/view/browserOperation/Action'
import { Action } from '../../../common/view/browserOperation/Action'
import { ActionBar } from '../../../common/view/actionbar/ActionBar';
import { AlbumGridItemTraditionalStyle } from './AlbumGridItemTraditionalStyle'
import { AlbumSetDataSource } from '../../../../common/model/browser/album/AlbumSetDataSource'
import { Constants } from '../../../../common/model/common/Constants'
import { DistributedAlbumSetPageActionBar } from './DistributedAlbumSetPageActionBar'
import { ScreenManager } from '../../../../common/model/common/ScreenManager'
import { BroadCast } from '../../../../common/utils/BroadCast'
import { NoPhotoIndexComponent } from '../../../../common/view/NoPhotoIndexComponent'
import { Logger } from '../../utils/Logger'
import { JumpSourceToMain } from '../../../../common/model/browser/photo/JumpSourceToMain'
import { BroadCastManager } from '../../../../common/model/common/BroadCastManager'
import { BroadCastConstants } from '../../../../common/model/common/BroadCastConstants'
import { CommonObserverCallback } from '../../../../common/model/browser/CommonObserverCallback'
import { MediaObserver } from '../../../../common/model/browser/dataObserver/MediaObserver'
import { AlbumSetDataSource } from '../../../common/model/browser/album/AlbumSetDataSource'
import { Constants } from '../../../common/model/common/Constants'
import { ScreenManager } from '../../../common/model/common/ScreenManager'
import { BroadCast } from '../../../common/utils/BroadCast'
import { NoPhotoIndexComponent } from '../../../common/view/NoPhotoIndexComponent'
import { Logger } from '../../../common/utils/Logger';
import { JumpSourceToMain } from '../../../common/model/browser/photo/JumpSourceToMain'
import { BroadCastManager } from '../../../common/model/common/BroadCastManager'
import { BroadCastConstants } from '../../../common/model/common/BroadCastConstants'
import { CommonObserverCallback } from '../../../common/model/browser/CommonObserverCallback'
import { MediaObserver } from '../../../common/model/browser/dataObserver/MediaObserver'
import { DistributedAlbumBarModel } from '../model/DistributedAlbumBarModel';
@Entry
@Component
@ -39,13 +40,15 @@ export struct DistributedAlbumSetPage {
@Provide broadCast: BroadCast = new BroadCast();
@Provide isAlbumSetSelectedMode: boolean = false;
@StorageLink('isHorizontal') isHorizontal: boolean = ScreenManager.getInstance().isHorizontal();
private dataObserver: CommonObserverCallback = new CommonObserverCallback(this);
@Provide moreMenuList: Action[] = [];
title: any;
albums: AlbumSetDataSource
isActive: boolean = false; // Whether the page is in the foreground
logger: Logger = new Logger('DistributedAlbumSetPage')
scroller: Scroller = new Scroller();
private dataObserver: CommonObserverCallback = new CommonObserverCallback(this);
private deviceId: string = ''
private barModel: DistributedAlbumBarModel = new DistributedAlbumBarModel()
onMenuClicked(action: Action, arg: any[]) {
this.logger.info(`onMenuClicked, action: ${action.actionID}`);
@ -162,9 +165,9 @@ export struct DistributedAlbumSetPage {
justifyContent: FlexAlign.Start,
alignItems: ItemAlign.Start
}) {
DistributedAlbumSetPageActionBar({
name: this.title,
onMenuClicked: this.onMenuClicked,
ActionBar({
actionBarProp: this.barModel.createActionBar(this.title),
onMenuClicked: this.onMenuClicked
})
Stack() {

View File

@ -12,22 +12,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Action } from '../../../common/view/browserOperation/Action';
import { ActionBarMode, ActionBarSelectionMode } from '../../../common/view/browserOperation/ActionBarMode';
import { ActionBarProp } from '../../../common/view/browserOperation/ActionBarProp';
import { Action } from '../../../../common/view/browserOperation/Action'
import { ActionBar } from '../../../../common/view/actionbar/ActionBar'
import { ActionBarProp } from '../../../../common/view/browserOperation/ActionBarProp'
import { ActionBarMode, ActionBarSelectionMode } from '../../../../common/view/browserOperation/ActionBarMode'
import { ScreenManager } from '../../../../common/model/common/ScreenManager'
import { Logger } from '../../utils/Logger'
@Component
export struct AlbumSelectActionBar {
@StorageLink('isHorizontal') isHorizontal: boolean = ScreenManager.getInstance().isHorizontal();
@StorageLink('isSidebar') isSidebar: boolean = ScreenManager.getInstance().isSidebar();
onMenuClicked: Function;
logger: Logger = new Logger('AlbumSetPageActionBar');
private createActionBar(): ActionBarProp {
export class NewAlbumBarModel {
createActionBar(): ActionBarProp {
let menuList: Array<Action> = new Array<Action>();
let actionBarProp: ActionBarProp = new ActionBarProp();
menuList.push(Action.OK);
@ -38,14 +28,4 @@ export struct AlbumSelectActionBar {
.setMenuList(menuList);
return actionBarProp;
}
build() {
Column() {
ActionBar({
isShowBar: true,
actionBarProp: this.createActionBar(),
onMenuClicked: this.onMenuClicked
})
}
}
}

View File

@ -14,29 +14,30 @@
*/
import router from '@system.router'
import { Logger } from '../../utils/Logger'
import { ImageGridItemComponent } from '../../../../common/view/ImageGridItemComponent'
import { Action } from '../../../../common/view/browserOperation/Action'
import { CustomDialogView } from '../../../../common/view/dialog/CustomDialogView'
import { SelectManager } from '../../../../common/model/browser/SelectManager'
import { BroadCast } from '../../../../common/utils/BroadCast'
import { BroadCastConstants } from '../../../../common/model/common/BroadCastConstants'
import { Constants } from '../../../../common/model/common/Constants'
import { MediaDataSource } from '../../../../common/model/browser/photo/MediaDataSource'
import { MediaItem } from '../../../../common/model/browser/photo/MediaItem'
import { NoPhotoComponent } from '../../../../common/view/NoPhotoComponent'
import { ScreenManager } from '../../../../common/model/common/ScreenManager'
import { TraceControllerUtils } from '../../../../common/utils/TraceControllerUtils'
import { BroadCastManager } from '../../../../common/model/common/BroadCastManager'
import { AlbumDefine } from '../../../../common/model/browser/AlbumDefine'
import { AlbumSelectActionBar } from './AlbumSelectActionBar'
import { MenuContext } from '../../../../common/view/browserOperation/MenuContext'
import { MenuOperationFactory } from '../../../../common/interface/MenuOperationFactory'
import { CopyMenuOperation } from '../../../../common/view/browserOperation/CopyMenuOperation'
import { MoveMenuOperation } from '../../../../common/view/browserOperation/MoveMenuOperation'
import { JumpSourceToMain } from '../../../../common/model/browser/photo/JumpSourceToMain'
import { AlbumInfo } from '../../../../common/model/browser/album/AlbumInfo';
import { GridScrollBar } from '../../../../common/view/GridScrollBar';
import { Logger } from '../../../common/utils/Logger';
import { ImageGridItemComponent } from '../../../common/view/ImageGridItemComponent'
import { Action } from '../../../common/view/browserOperation/Action'
import { ActionBar } from '../../../common/view/actionbar/ActionBar';
import { CustomDialogView } from '../../../common/view/dialog/CustomDialogView'
import { SelectManager } from '../../../common/model/browser/SelectManager'
import { BroadCast } from '../../../common/utils/BroadCast'
import { BroadCastConstants } from '../../../common/model/common/BroadCastConstants'
import { Constants } from '../../../common/model/common/Constants'
import { MediaDataSource } from '../../../common/model/browser/photo/MediaDataSource'
import { MediaItem } from '../../../common/model/browser/photo/MediaItem'
import { NoPhotoComponent } from '../../../common/view/NoPhotoComponent'
import { ScreenManager } from '../../../common/model/common/ScreenManager'
import { TraceControllerUtils } from '../../../common/utils/TraceControllerUtils'
import { BroadCastManager } from '../../../common/model/common/BroadCastManager'
import { AlbumDefine } from '../../../common/model/browser/AlbumDefine'
import { MenuContext } from '../../../common/view/browserOperation/MenuContext'
import { MenuOperationFactory } from '../../../common/interface/MenuOperationFactory'
import { CopyMenuOperation } from '../../../common/view/browserOperation/CopyMenuOperation'
import { MoveMenuOperation } from '../../../common/view/browserOperation/MoveMenuOperation'
import { JumpSourceToMain } from '../../../common/model/browser/photo/JumpSourceToMain'
import { AlbumInfo } from '../../../common/model/browser/album/AlbumInfo';
import { GridScrollBar } from '../../../common/view/GridScrollBar';
import { NewAlbumBarModel } from '../model/NewAlbumBarModel';
@Entry
@Component
@ -67,6 +68,7 @@ export struct NewAlbumPage {
private appBroadCast: BroadCast = BroadCastManager.getInstance().getBroadCast();
private isNewAlbum: boolean = AppStorage.Get(Constants.APP_KEY_NEW_ALBUM);
private targetAlbum: AlbumInfo = AppStorage.Get(Constants.APP_KEY_NEW_ALBUM_TARGET);
private barModel: NewAlbumBarModel = new NewAlbumBarModel()
onIndexChange() {
this.logger.info(`onIndexChange ${this.PhotoGridPageIndex}`)
@ -179,7 +181,7 @@ export struct NewAlbumPage {
})
} else {
router.back({
uri: 'feature/browser/view/photoGrid/PhotoGridPage',
uri: 'feature/photoGrid/view/PhotoGridPage',
});
}
}
@ -248,7 +250,7 @@ export struct NewAlbumPage {
self.logger.info(`jump to photo browser at index: ${targetIndex}`);
AppStorage.SetOrCreate(Constants.APP_KEY_PHOTO_BROWSER, self.dataSource);
router.push({
uri: 'feature/browser/view/photo/PhotoBrowser',
uri: 'feature/browser/view/PhotoBrowser',
params: {
position: targetIndex,
transition: name,
@ -263,7 +265,7 @@ export struct NewAlbumPage {
self.logger.info(`jump to photo browser, index: ${targetIndex}, transition: ${name}`);
AppStorage.SetOrCreate(Constants.APP_KEY_PHOTO_BROWSER, self.dataSource);
router.push({
uri: 'feature/browser/view/photo/SelectPhotoBrowser',
uri: 'feature/browser/view/SelectPhotoBrowser',
params: {
position: targetIndex,
transition: name,
@ -325,7 +327,11 @@ export struct NewAlbumPage {
build() {
Column() {
AlbumSelectActionBar({ onMenuClicked: this.onMenuClicked })
ActionBar({
isShowBar: true,
actionBarProp: this.barModel.createActionBar(),
onMenuClicked: this.onMenuClicked
})
if (this.isEmpty) {
NoPhotoComponent({
title: $r('app.string.no_distributed_photo_head_title_album')

View File

@ -0,0 +1,113 @@
/*
* Copyright (c) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Action } from '../../../common/view/browserOperation/Action'
import { ActionBarProp } from '../../../common/view/browserOperation/ActionBarProp'
import { ActionBarMode, ActionBarSelectionMode } from '../../../common/view/browserOperation/ActionBarMode'
import { ScreenManager } from '../../../common/model/common/ScreenManager'
import { AlbumDefine } from '../../../common/model/browser/AlbumDefine';
export class PhotoGridBarModel {
private isDistributedAlbum: boolean = false
private albumId: string = ''
setAlbumId(albumId: string) {
this.albumId = albumId
}
setDistributedAlbum(isDistributedAlbum: boolean) {
this.isDistributedAlbum = isDistributedAlbum
}
createActionBar(title: string | Resource, isSelectedMode: boolean, selectedCount: number, isAllSelected: boolean, isEmpty: boolean): ActionBarProp {
let isHorizontal = ScreenManager.getInstance().isHorizontal()
if (isHorizontal) {
return this.createHorizontalActionBar(title, isSelectedMode, selectedCount, isAllSelected, isEmpty)
} else {
return this.createVerticalActionBar(title, isSelectedMode)
}
}
private createHorizontalActionBar(title: string | Resource, isSelectedMode: boolean, selectedCount: number, isAllSelected: boolean, isEmpty: boolean): ActionBarProp {
let actionBarProp: ActionBarProp = new ActionBarProp();
actionBarProp
.setLeftAction(Action.BACK)
.setTitle(title)
.setMode(ActionBarMode.STANDARD_MODE);
let menuList: Array<Action> = this.getMenuList(isSelectedMode, selectedCount, isAllSelected, isEmpty);
if (isSelectedMode) {
actionBarProp
.setLeftAction(Action.CANCEL)
.setMode(ActionBarMode.SELECTION_MODE)
.setSelectionMode(ActionBarSelectionMode.MULTI);
} else {
if (!AlbumDefine.ALBUM_DISABLE_NEW_LIST.has(this.albumId) && !this.isDistributedAlbum) {
menuList.push(Action.NEW);
}
}
actionBarProp.setMenuList(menuList);
return actionBarProp;
}
private createVerticalActionBar(title: string | Resource, isSelectedMode: boolean): ActionBarProp {
let menuList: Array<Action> = new Array<Action>();
let actionBarProp: ActionBarProp = new ActionBarProp();
if (!AlbumDefine.ALBUM_DISABLE_NEW_LIST.has(this.albumId) && !this.isDistributedAlbum) {
menuList.push(Action.NEW);
}
actionBarProp
.setLeftAction(Action.BACK)
.setTitle(title)
.setMenuList(menuList)
.setMode(ActionBarMode.STANDARD_MODE);
if (isSelectedMode) {
menuList = [];
actionBarProp
.setLeftAction(Action.CANCEL)
.setMenuList(menuList)
.setMode(ActionBarMode.SELECTION_MODE)
.setSelectionMode(ActionBarSelectionMode.MULTI);
}
return actionBarProp;
}
getMenuList(isSelectedMode: boolean, selectedCount: number, isAllSelected: boolean, isEmpty: boolean): Array<Action> {
let menuList: Array<Action> = new Array<Action>();
if (isSelectedMode) {
if (this.albumId == AlbumDefine.ALBUM_ID_RECYCLE) {
menuList.push(Boolean(selectedCount) ? Action.RECOVER : Action.RECOVER_INVALID)
menuList.push(Boolean(selectedCount) ? Action.DELETE : Action.DELETE_INVALID)
menuList.push(isAllSelected ? Action.DESELECT_ALL : Action.SELECT_ALL);
} else if (this.isDistributedAlbum) {
menuList.push(isAllSelected ? Action.DESELECT_ALL : Action.SELECT_ALL)
menuList.push(Boolean(selectedCount) ? Action.SHARE : Action.SHARE_INVALID)
menuList.push(Boolean(selectedCount) ? Action.DOWNLOAD : Action.DOWNLOAD_INVALID)
} else {
menuList.push(Boolean(selectedCount) ? Action.SHARE : Action.SHARE_INVALID)
menuList.push(isAllSelected ? Action.DESELECT_ALL : Action.SELECT_ALL),
menuList.push(Boolean(selectedCount) ? Action.DELETE : Action.DELETE_INVALID, Action.MORE)
}
} else {
if (this.albumId == AlbumDefine.ALBUM_ID_RECYCLE && !isEmpty) {
menuList.push(Action.CLEAR_RECYCLE);
}
}
return menuList
}
}

View File

@ -13,13 +13,13 @@
* limitations under the License.
*/
import { Logger } from '../../utils/Logger'
import { SelectManager } from '../../../../common/model/browser/SelectManager'
import { MenuContext } from '../../../../common/view/browserOperation/MenuContext'
import { BrowserOperationFactory } from '../../../../common/interface/BrowserOperationFactory'
import { ProcessMenuOperation } from '../../../../common/view/browserOperation/ProcessMenuOperation';
import { AlbumDefine } from '../../../../common/model/browser/AlbumDefine'
import { BroadCastConstants } from '../../../../common/model/common/BroadCastConstants';
import { Logger } from '../../../common/utils/Logger';
import { SelectManager } from '../../../common/model/browser/SelectManager'
import { MenuContext } from '../../../common/view/browserOperation/MenuContext'
import { BrowserOperationFactory } from '../../../common/interface/BrowserOperationFactory'
import { ProcessMenuOperation } from '../../../common/view/browserOperation/ProcessMenuOperation';
import { AlbumDefine } from '../../../common/model/browser/AlbumDefine'
import { BroadCastConstants } from '../../../common/model/common/BroadCastConstants';
export class BatchRecoverMenuOperation extends ProcessMenuOperation {
logger: Logger = new Logger('BatchRecoverMenuOperation');

View File

@ -13,11 +13,11 @@
* limitations under the License.
*/
import { Logger } from '../../utils/Logger'
import { SelectManager } from '../../../../common/model/browser/SelectManager'
import { MenuContext } from '../../../../common/view/browserOperation/MenuContext'
import { BroadCastConstants } from '../../../../common/model/common/BroadCastConstants';
import { BatchDeleteMenuOperation } from '../../../../common/view/browserOperation/BatchDeleteMenuOperation';
import { Logger } from '../../../common/utils/Logger';
import { SelectManager } from '../../../common/model/browser/SelectManager'
import { MenuContext } from '../../../common/view/browserOperation/MenuContext'
import { BroadCastConstants } from '../../../common/model/common/BroadCastConstants';
import { BatchDeleteMenuOperation } from '../../../common/view/browserOperation/BatchDeleteMenuOperation';
export class ClearRecycleMenuOperation extends BatchDeleteMenuOperation {
logger: Logger = new Logger('ClearRecycleMenuOperation');

View File

@ -1,3 +1,4 @@
/*
* Copyright (c) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
@ -15,40 +16,40 @@
import router from '@system.router'
import prompt from '@system.prompt';
import { Logger } from '../../utils/Logger'
import { PhotoGridPageActionBar } from './PhotoGridPageActionBar'
import { PhotoGridPageToolBar } from './PhotoGridPageToolBar'
import { ImageGridItemComponent } from '../../../../common/view/ImageGridItemComponent'
import { Action } from '../../../../common/view/browserOperation/Action'
import { CustomDialogView } from '../../../../common/view/dialog/CustomDialogView'
import { SelectManager } from '../../../../common/model/browser/SelectManager'
import { BroadCast } from '../../../../common/utils/BroadCast'
import { BroadCastConstants } from '../../../../common/model/common/BroadCastConstants'
import { Constants } from '../../../../common/model/common/Constants'
import { MenuOperation } from '../../../../common/view/browserOperation/MenuOperation'
import { MenuContext } from '../../../../common/view/browserOperation/MenuContext'
import { MenuOperationFactory } from '../../../../common/interface/MenuOperationFactory'
import { BatchDeleteMenuOperation } from '../../../../common/view/browserOperation/BatchDeleteMenuOperation'
import { MediaDataSource } from '../../../../common/model/browser/photo/MediaDataSource'
import { MediaItem } from '../../../../common/model/browser/photo/MediaItem'
import { ScreenManager } from '../../../../common/model/common/ScreenManager'
import { TraceControllerUtils } from '../../../../common/utils/TraceControllerUtils'
import { ShareMenuOperation } from '../../../../common/view/browserOperation/ShareMenuOperation';
import { BroadCastManager } from '../../../../common/model/common/BroadCastManager'
import { JumpSourceToMain } from '../../../../common/model/browser/photo/JumpSourceToMain'
import { UiUtil } from '../../../../common/utils/UiUtil';
import { AlbumDefine } from '../../../../common/model/browser/AlbumDefine'
import { MediaOperationType } from '../../../../common/model/common/MediaOperationType'
import { CopyMenuOperation } from '../../../../common/view/browserOperation/CopyMenuOperation';
import { MoveMenuOperation } from '../../../../common/view/browserOperation/MoveMenuOperation';
import { GridScrollBar } from '../../../../common/view/GridScrollBar';
import { BatchRecoverMenuOperation } from './BatchRecoverMenuOperation';
import { ClearRecycleMenuOperation } from './ClearRecycleMenuOperation';
import { AlbumInfo } from '../../../../common/model/browser/album/AlbumInfo';
import { MediaObserver } from '../../../../common/model/browser/dataObserver/MediaObserver';
import { CommonObserverCallback } from '../../../../common/model/browser/CommonObserverCallback';
import { NoPhotoComponent } from '../../../../common/view/NoPhotoComponent';
import { Logger } from '../../../common/utils/Logger';
import { ToolBar } from '../../../common/view/actionbar/ToolBar';
import { ImageGridItemComponent } from '../../../common/view/ImageGridItemComponent'
import { Action } from '../../../common/view/browserOperation/Action'
import { ActionBar } from '../../../common/view/actionbar/ActionBar';
import { CustomDialogView } from '../../../common/view/dialog/CustomDialogView'
import { SelectManager } from '../../../common/model/browser/SelectManager'
import { BroadCast } from '../../../common/utils/BroadCast'
import { BroadCastConstants } from '../../../common/model/common/BroadCastConstants'
import { Constants } from '../../../common/model/common/Constants'
import { MenuOperation } from '../../../common/view/browserOperation/MenuOperation'
import { MenuContext } from '../../../common/view/browserOperation/MenuContext'
import { MenuOperationFactory } from '../../../common/interface/MenuOperationFactory'
import { BatchDeleteMenuOperation } from '../../../common/view/browserOperation/BatchDeleteMenuOperation'
import { MediaDataSource } from '../../../common/model/browser/photo/MediaDataSource'
import { MediaItem } from '../../../common/model/browser/photo/MediaItem'
import { ScreenManager } from '../../../common/model/common/ScreenManager'
import { TraceControllerUtils } from '../../../common/utils/TraceControllerUtils'
import { ShareMenuOperation } from '../../../common/view/browserOperation/ShareMenuOperation';
import { BroadCastManager } from '../../../common/model/common/BroadCastManager'
import { JumpSourceToMain } from '../../../common/model/browser/photo/JumpSourceToMain'
import { UiUtil } from '../../../common/utils/UiUtil';
import { AlbumDefine } from '../../../common/model/browser/AlbumDefine'
import { MediaOperationType } from '../../../common/model/common/MediaOperationType'
import { CopyMenuOperation } from '../../../common/view/browserOperation/CopyMenuOperation';
import { MoveMenuOperation } from '../../../common/view/browserOperation/MoveMenuOperation';
import { GridScrollBar } from '../../../common/view/GridScrollBar';
import { BatchRecoverMenuOperation } from '../operation/BatchRecoverMenuOperation';
import { ClearRecycleMenuOperation } from '../operation/ClearRecycleMenuOperation';
import { AlbumInfo } from '../../../common/model/browser/album/AlbumInfo';
import { MediaObserver } from '../../../common/model/browser/dataObserver/MediaObserver';
import { CommonObserverCallback } from '../../../common/model/browser/CommonObserverCallback';
import { NoPhotoComponent } from '../../../common/view/NoPhotoComponent';
import { PhotoGridBarModel } from '../model/PhotoGridBarModel';
// Album Page
@Entry
@Component
@ -82,6 +83,7 @@ export struct PhotoGridPage {
routerStart = false;
private dataObserver: CommonObserverCallback = new CommonObserverCallback(this);
private appBroadCast: BroadCast = BroadCastManager.getInstance().getBroadCast();
private barModel: PhotoGridBarModel = new PhotoGridBarModel()
onIndexChange() {
this.logger.info(`onIndexChange ${this.PhotoGridPageIndex}`)
@ -97,7 +99,7 @@ export struct PhotoGridPage {
switch (action) {
case Action.BACK:
if (AppStorage.Get(Constants.BACK_FROM_FORM_DETAIL)) {
this.routerAblumSetPage();
this.routerAlbumSetPage();
} else {
router.back();
}
@ -221,7 +223,7 @@ export struct PhotoGridPage {
}
}
routerAblumSetPage() {
private routerAlbumSetPage() {
router.replace({
uri: this.isHorizontal === true ? 'product/pad/view/index' : 'product/phone/view/index',
params: {
@ -243,7 +245,7 @@ export struct PhotoGridPage {
routeToAddMediaPage(): void {
router.push({
uri: 'feature/browser/view/album/AlbumSelect',
uri: 'feature/albumSelect/view/AlbumSelect',
params: {
albumInfo: JSON.stringify(this.albumInfo)
}
@ -414,7 +416,7 @@ export struct PhotoGridPage {
onBackPress() {
if (AppStorage.Get(Constants.BACK_FROM_FORM_DETAIL)) {
this.routerAblumSetPage();
this.routerAlbumSetPage();
return true;
}
if (this.isSelectedMode) {
@ -460,9 +462,10 @@ export struct PhotoGridPage {
this.albumInfo = JSON.parse(param.item.toString());
this.title = this.albumInfo.displayName;
this.dataSource.setAlbumId(this.albumInfo.id);
this.barModel.setAlbumId(this.albumInfo.id)
if (param.isDistributedAlbum) {
this.isDistributedAlbum = new Boolean(param.isDistributedAlbum).valueOf();
this.barModel.setDistributedAlbum(this.isDistributedAlbum)
param.distributedAlbumName && (this.title = param.distributedAlbumName.toString());
this.dataSource.setDeviceId(this.albumInfo.deviceId);
this.mSelectManager.setDeviceId(this.albumInfo.deviceId);
@ -502,7 +505,7 @@ export struct PhotoGridPage {
AppStorage.SetOrCreate(Constants.APP_KEY_PHOTO_BROWSER, self.dataSource);
router.push({
uri: 'feature/browser/view/photo/PhotoBrowser',
uri: 'feature/browser/view/PhotoBrowser',
params: {
position: targetIndex,
transition: name,
@ -529,7 +532,7 @@ export struct PhotoGridPage {
}
AppStorage.SetOrCreate(Constants.APP_KEY_PHOTO_BROWSER, self.dataSource);
router.push({
uri: 'feature/browser/view/photo/SelectPhotoBrowser',
uri: 'feature/browser/view/SelectPhotoBrowser',
params: {
position: targetIndex,
transition: name,
@ -631,12 +634,14 @@ export struct PhotoGridPage {
build() {
Column() {
PhotoGridPageActionBar({
title: this.title,
albumId: this.albumInfo.innerId,
onMenuClicked: this.onMenuClicked,
isRecycle: this.dataSource.albumId == AlbumDefine.ALBUM_ID_RECYCLE,
isDistributedAlbum: this.isDistributedAlbum
ActionBar({
actionBarProp: this.barModel.createActionBar(
this.title,
this.isSelectedMode,
this.totalSelectedCount,
this.isAllSelected,
this.isEmpty),
onMenuClicked: this.onMenuClicked
})
if (this.isEmpty) {
@ -672,14 +677,11 @@ export struct PhotoGridPage {
CustomDialogView();
if (this.isSelectedMode || (this.dataSource.albumId == AlbumDefine.ALBUM_ID_RECYCLE) && !this.isEmpty) {
PhotoGridPageToolBar({
onMenuClicked: this.onMenuClicked,
isRecycleAlbum: (this.dataSource.albumId == AlbumDefine.ALBUM_ID_RECYCLE),
isDistributedAlbum: this.isDistributedAlbum
});
}
ToolBar({
isShowBar: this.isSelectedMode || (this.dataSource.albumId == AlbumDefine.ALBUM_ID_RECYCLE) && !this.isEmpty,
toolMenuList: this.barModel.getMenuList(this.isSelectedMode, this.totalSelectedCount, this.isAllSelected, this.isEmpty),
onMenuClicked: this.onMenuClicked
})
}
.backgroundColor($r('app.color.default_background_color'))
.padding({

View File

@ -0,0 +1,38 @@
/*
* Copyright (c) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Action } from '../../../common/view/browserOperation/Action';
import { ActionBarProp } from '../../../common/view/browserOperation/ActionBarProp';
import { ActionBarMode } from '../../../common/view/browserOperation/ActionBarMode';
export class ThirdSelectBarModel {
createActionBar(originLeftAction: Action, originTitle: string | Resource, isMultiPick: boolean, selectedCount: number, maxSelectCount: number): ActionBarProp {
let leftAction: Action = originLeftAction
let title: string | Resource = originTitle
let menuList: Action[] = []
if (isMultiPick && selectedCount > 0 && maxSelectCount > 0) {
title = ActionBarProp.getCountDetailExternalSelectedTitle(selectedCount, maxSelectCount);
menuList = [Action.OK]
}
let actionBarProp: ActionBarProp = new ActionBarProp();
actionBarProp
.setLeftAction(leftAction)
.setTitle(title)
.setMenuList(menuList)
.setMode(ActionBarMode.STANDARD_MODE)
.setMaxSelectCount(maxSelectCount);
return actionBarProp;
}
}

View File

@ -1,4 +1,3 @@
import { EmptyAlbumComponent } from '../../browser/view/album/EmptyAlbumComponent';
/*
* Copyright (c) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
@ -23,6 +22,7 @@ import { BroadCast } from '../../../common/utils/BroadCast'
import { BroadCastConstants } from '../../../common/model/common/BroadCastConstants'
import { BroadCastManager } from '../../../common/model/common/BroadCastManager'
import { Constants } from '../../../common/model/common/Constants'
import { EmptyAlbumComponent } from '../../../common/view/EmptyAlbumComponent';
// The item of album grid, and it's new style.
@Component
@ -32,12 +32,12 @@ export struct ThirdAlbumGridItem {
[AlbumDefine.ALBUM_ID_FAVOR, $r('app.media.ic_favorite_overlay')]
]);
@State item: AlbumInfo = new AlbumInfo('', '', '', '', 0, '', '');
isMultiPick: boolean;
@Consume isMultiPick: boolean;
@Provide isBigCard: boolean = false;
@Provide gridHeight: number = 0;
logger: Logger = new Logger('ThirdAlbumGridItem');
isFromWallpaper: boolean;
maxSelectCount: number;
@Consume maxSelectCount: number;
isFromFa: boolean;
isFromFaPhoto: boolean;
private appBroadCast: BroadCast = BroadCastManager.getInstance().getBroadCast();

View File

@ -16,7 +16,7 @@
import router from '@system.router'
import { ThirdAlbumGridItem } from './ThirdAlbumGridItem'
import { Action } from '../../../common/view/browserOperation/Action'
import { ThirdSelectedPageActionBar } from './ThirdSelectedPageActionBar'
import { ActionBar } from '../../../common/view/actionbar/ActionBar';
import { ActionBarProp } from '../../../common/view/browserOperation/ActionBarProp'
import { AlbumSetDataSource } from '../../../common/model/browser/album/AlbumSetDataSource'
import { Logger } from '../utils/Logger'
@ -29,6 +29,7 @@ import { ScreenManager } from '../../../common/model/common/ScreenManager'
import { AlbumDefine } from '../../../common/model/browser/AlbumDefine'
import { BroadCastConstants } from '../../../common/model/common/BroadCastConstants'
import { BroadCastManager } from '../../../common/model/common/BroadCastManager'
import { ThirdSelectBarModel } from '../model/ThirdSelectBarModel'
// Third Select AlbumSet Page
@Entry
@ -54,6 +55,9 @@ export struct ThirdSelectAlbumSetPage {
@StorageLink('isSidebar') isSidebar: boolean = ScreenManager.getInstance().isSidebar();
isFromFaPhoto: boolean = false;
private appBroadCast: BroadCast = BroadCastManager.getInstance().getBroadCast();
private barModel: ThirdSelectBarModel = new ThirdSelectBarModel()
private leftAction: Action = Action.BACK
private title: string | Resource = ""
aboutToAppear(): void {
this.albums = new AlbumSetDataSource(this.broadCast);
@ -73,6 +77,8 @@ export struct ThirdSelectAlbumSetPage {
}
}
this.logger.info(`isFromFa: ${this.isFromFa} isFromFaPhoto ${this.isFromFaPhoto}`);
this.leftAction = this.isFromFa ? Action.BACK : Action.CANCEL
this.title = (this.isFromFa && !this.isFromFaPhoto) ? ActionBarProp.SINGLE_SELECT_ALBUM_TITLE : ActionBarProp.SINGLE_UNSELECT_TITLE
this.albums.setBlackList([AlbumDefine.ALBUM_ID_VIDEO, AlbumDefine.ALBUM_ID_RECYCLE])
this.selectManager = new ThirdSelectManager();
this.onMenuClicked = this.onMenuClicked.bind(this);
@ -169,12 +175,16 @@ export struct ThirdSelectAlbumSetPage {
justifyContent: FlexAlign.Start,
alignItems: ItemAlign.Start
}) {
ThirdSelectedPageActionBar({
leftAction: this.isFromFa ? Action.BACK : Action.CANCEL,
isMultiPick: this.isMultiPick,
title: (this.isFromFa && !this.isFromFaPhoto) ? ActionBarProp.SINGLE_SELECT_ALBUM_TITLE : ActionBarProp.SINGLE_UNSELECT_TITLE,
ActionBar({
actionBarProp: this.barModel.createActionBar(
this.leftAction,
this.title,
this.isMultiPick,
this.selectedCount,
this.maxSelectCount),
onMenuClicked: this.onMenuClicked
})
Stack() {
if (this.isEmpty) {
NoPhotoComponent({ title: $r('app.string.title_no_albums') })
@ -187,9 +197,7 @@ export struct ThirdSelectAlbumSetPage {
ThirdAlbumGridItem({
item: item,
isBigCard: true,
isMultiPick: this.isMultiPick,
isFromWallpaper: this.isFromWallpaper,
maxSelectCount: this.maxSelectCount,
isFromFa: this.isFromFa,
isFromFaPhoto: this.isFromFaPhoto
})
@ -199,9 +207,7 @@ export struct ThirdSelectAlbumSetPage {
ThirdAlbumGridItem({
item: item,
isBigCard: false,
isMultiPick: this.isMultiPick,
isFromWallpaper: this.isFromWallpaper,
maxSelectCount: this.maxSelectCount,
isFromFa: this.isFromFa,
isFromFaPhoto: this.isFromFaPhoto
})

View File

@ -18,6 +18,7 @@ import { Logger } from '../utils/Logger'
import { SelectUtil } from '../../../common/model/browser/photo/SelectUtil'
import { ImageGridItemComponent } from '../../../common/view/ImageGridItemComponent'
import { Action } from '../../../common/view/browserOperation/Action'
import { ActionBar } from '../../../common/view/actionbar/ActionBar';
import { BroadCast } from '../../../common/utils/BroadCast'
import { BroadCastConstants } from '../../../common/model/common/BroadCastConstants'
import { Constants } from '../../../common/model/common/Constants'
@ -27,11 +28,10 @@ import { MediaItem } from '../../../common/model/browser/photo/MediaItem'
import { ThirdSelectManager } from '../../../common/model/browser/SelectManager'
import { NoPhotoComponent } from '../../../common/view/NoPhotoComponent'
import { ScreenManager } from '../../../common/model/common/ScreenManager'
import { ThirdSelectedPageActionBar } from './ThirdSelectedPageActionBar'
import { GridScrollBar } from '../../../common/view/GridScrollBar';
import { BroadCastManager } from '../../../common/model/common/BroadCastManager'
import { UiUtil } from '../../../common/utils/UiUtil';
import { ThirdSelectBarModel } from '../model/ThirdSelectBarModel';
// Third Select Album Page
@Entry
@Component
@ -57,8 +57,9 @@ export struct ThirdSelectPhotoGridPage {
@State gridRowCount: number = 0;
@Provide isHideScrollBar: boolean = true;
isFromFa: boolean = false;
private appBroadCast: BroadCast = BroadCastManager.getInstance().getBroadCast();
scroller: Scroller = new Scroller();
private appBroadCast: BroadCast = BroadCastManager.getInstance().getBroadCast();
private barModel: ThirdSelectBarModel = new ThirdSelectBarModel()
onMenuClicked(action: Action) {
this.logger.info(`onMenuClicked, action: ${action.actionID}`);
@ -197,8 +198,15 @@ export struct ThirdSelectPhotoGridPage {
build() {
Column() {
ThirdSelectedPageActionBar({ leftAction: Action.BACK, isMultiPick: this.isMultiPick, title: this.title,
onMenuClicked: this.onMenuClicked })
ActionBar({
actionBarProp: this.barModel.createActionBar(
Action.BACK,
this.title,
this.isMultiPick,
this.selectedCount,
this.maxSelectCount),
onMenuClicked: this.onMenuClicked
})
if (this.isEmpty) {
NoPhotoComponent({ title: $r('app.string.no_distributed_photo_head_title_album') })
}

View File

@ -1,70 +0,0 @@
/*
* Copyright (c) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Action } from '../../../common/view/browserOperation/Action'
import { ActionBar } from '../../../common/view/actionbar/ActionBar'
import { ActionBarProp } from '../../../common/view/browserOperation/ActionBarProp'
import { ActionBarMode } from '../../../common/view/browserOperation/ActionBarMode'
@Component
export struct ThirdSelectedPageActionBar {
@State menuList: Array<Action> = new Array<Action>();
@State isUpdate: boolean = false;
@Consume isSelectedMode: boolean;
@Consume('selectedCount') @Watch('onSelectedCountChanged') selectedCount: number;
@Consume maxSelectCount: number;
isMultiPick: boolean;
onMenuClicked: Function;
leftAction: Action = Action.BACK;
title: Resource;
aboutToAppear(): void {
if (this.isMultiPick == true) {
this.onSelectedCountChanged();
}
}
private createActionBar(): ActionBarProp {
let actionBarProp: ActionBarProp = new ActionBarProp();
actionBarProp
.setLeftAction(this.leftAction)
.setTitle(this.title)
.setMenuList(this.menuList)
.setMode(ActionBarMode.STANDARD_MODE)
.setMaxSelectCount(this.maxSelectCount);
return actionBarProp;
}
onSelectedCountChanged() {
if (this.selectedCount == 0 || !this.isMultiPick) {
this.title = ActionBarProp.SINGLE_UNSELECT_TITLE;
this.menuList = [];
} else {
this.title = ActionBarProp.getCountDetailExternalSelectedTitle(this.selectedCount, this.maxSelectCount);
this.menuList = [Action.OK];
}
this.isUpdate = !this.isUpdate;
}
build() {
Column() {
ActionBar({
isShowBar: true,
actionBarProp: this.createActionBar(),
onMenuClicked: this.onMenuClicked
})
}
}
}

View File

@ -0,0 +1,71 @@
/*
* Copyright (c) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { ScreenManager } from '../../../common/model/common/ScreenManager';
import { Action } from '../../../common/view/browserOperation/Action';
import { ActionBarMode, ActionBarSelectionMode } from '../../../common/view/browserOperation/ActionBarMode'
import { ActionBarProp } from '../../../common/view/browserOperation/ActionBarProp';
export class TimelinePageBarModel {
createActionBar(isSelectedMode: boolean, selectedCount: number, isAllSelected: boolean): ActionBarProp {
let isHorizontal = ScreenManager.getInstance().isHorizontal()
if (isHorizontal) {
return this.createHorizontalActionBar(isSelectedMode, selectedCount, isAllSelected)
} else {
return this.createVerticalActionBar(isSelectedMode)
}
}
private createHorizontalActionBar(isSelectedMode: boolean, selectedCount: number, isAllSelected: boolean): ActionBarProp {
let actionBarProp: ActionBarProp = new ActionBarProp();
actionBarProp
.setHasTabBar(true)
.setTitle($r('app.string.tab_timeline'))
.setIsHeadTitle(true)
.setMode(ActionBarMode.STANDARD_MODE);
if (isSelectedMode) {
actionBarProp
.setLeftAction(Action.CANCEL)
.setMenuList(this.getMenuList(isSelectedMode, selectedCount, isAllSelected))
.setMode(ActionBarMode.SELECTION_MODE)
.setSelectionMode(ActionBarSelectionMode.MULTI);
}
return actionBarProp;
}
private createVerticalActionBar(isSelectedMode: boolean): ActionBarProp {
let isSidebar: boolean = ScreenManager.getInstance().isSidebar();
let actionBarProp: ActionBarProp = new ActionBarProp();
actionBarProp
.setHasTabBar(isSidebar)
.setTitle($r('app.string.tab_timeline'))
.setIsHeadTitle(true)
.setMode(ActionBarMode.STANDARD_MODE);
if (isSelectedMode) {
actionBarProp
.setLeftAction(Action.CANCEL)
.setMode(ActionBarMode.SELECTION_MODE)
.setSelectionMode(ActionBarSelectionMode.MULTI);
}
return actionBarProp;
}
getMenuList(isSelectedMode: boolean, selectedCount: number, isAllSelected: boolean): Array<Action> {
let menuList: Array<Action> = new Array<Action>();
menuList.push(Boolean(selectedCount) ? Action.SHARE : Action.SHARE_INVALID)
menuList.push(isAllSelected ? Action.DESELECT_ALL : Action.SELECT_ALL)
menuList.push(Boolean(selectedCount) ? Action.DELETE : Action.DELETE_INVALID, Action.MORE)
return menuList
}
}

View File

@ -19,8 +19,7 @@ import { TimelineData } from '../../../common/model/browser/photo/TimelineData'
import { TimelineTitleComponent } from './timelinetitlecomponent'
import { CustomDialogView } from '../../../common/view/dialog/CustomDialogView'
import { Logger } from '../utils/Logger'
import { TimelinePageActionBar } from './TimelinePageActionBar'
import { TimelinePageToolBar } from './TimelinePageToolBar'
import { ToolBar } from '../../../common/view/actionbar/ToolBar';
import { Constants } from '../../../common/model/common/Constants'
import { MenuOperation } from '../../../common/view/browserOperation/MenuOperation'
import { MenuContext } from '../../../common/view/browserOperation/MenuContext'
@ -48,6 +47,8 @@ import { CopyMenuOperation } from '../../../common/view/browserOperation/CopyMen
import { TimelineScrollBar } from './TimelineScrollBar';
import { DateUtil } from '../../../common/utils/DateUtil';
import { AlbumInfo } from '../../../common/model/browser/album/AlbumInfo';
import { TimelinePageBarModel } from '../model/TimelinePageBarModel'
import { ActionBar } from '../../../common/view/actionbar/ActionBar'
// PHOTO Page
@Component
@ -82,7 +83,7 @@ export struct TimelinePage {
@State groupSelectMode: boolean[] = [];
@Provide yearData: TimelineData[] = [];
@Provide dateText: string = '';
@Provide isShowBar: boolean = true;
private barModel = new TimelinePageBarModel()
aboutToAppear(): void {
TraceControllerUtils.startTrace('TimelinePageAboutToAppear');
@ -160,7 +161,7 @@ export struct TimelinePage {
}
AppStorage.SetOrCreate(Constants.APP_KEY_PHOTO_BROWSER, self.dataSource);
router.push({
uri: 'feature/browser/view/photo/PhotoBrowser',
uri: 'feature/browser/view/PhotoBrowser',
params: {
position: targetIndex,
transition: name,
@ -178,7 +179,7 @@ export struct TimelinePage {
AppStorage.SetOrCreate(Constants.THIRD_SELECT_MANAGER, self.mSelectManager);
AppStorage.SetOrCreate(Constants.APP_KEY_PHOTO_BROWSER, self.dataSource);
router.push({
uri: 'feature/browser/view/photo/SelectPhotoBrowser',
uri: 'feature/browser/view/SelectPhotoBrowser',
params: {
position: targetIndex,
transition: name,
@ -613,7 +614,10 @@ export struct TimelinePage {
if (this.isEmpty || !this.initLoadFinish) {
NoPhotoIndexComponent({ index: Constants.TIMELINE_PAGE_INDEX })
} else {
TimelinePageActionBar({ onMenuClicked: this.onMenuClicked });
ActionBar({
actionBarProp: this.barModel.createActionBar(this.isSelectedMode, this.totalSelectedCount, this.isAllSelected),
onMenuClicked: this.onMenuClicked
})
Stack() {
Grid(this.scroller) {
@ -670,9 +674,11 @@ export struct TimelinePage {
}
}
if (this.isSelectedMode) {
TimelinePageToolBar({ onMenuClicked: this.onMenuClicked })
}
ToolBar({
isShowBar: $isSelectedMode,
toolMenuList: this.barModel.getMenuList(this.isSelectedMode, this.totalSelectedCount, this.isAllSelected),
onMenuClicked: this.onMenuClicked
})
CustomDialogView()
}
}

View File

@ -1,91 +0,0 @@
/*
* Copyright (c) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {Logger} from '../utils/Logger'
import {Action} from '../../../common/view/browserOperation/Action'
import {ActionBar} from '../../../common/view/actionbar/ActionBar'
import {ActionBarProp} from '../../../common/view/browserOperation/ActionBarProp'
import {ActionBarMode, ActionBarSelectionMode} from '../../../common/view/browserOperation/ActionBarMode'
import {ScreenManager} from '../../../common/model/common/ScreenManager'
@Component
export struct TimelinePageActionBar {
@Consume isSelectedMode: boolean;
@Consume isAllSelected: boolean;
@Consume('selectedCount') selectedCount: number;
onMenuClicked: Function;
logger: Logger = new Logger('TimelinePageActionBar');
@StorageLink('isHorizontal') isHorizontal: boolean = ScreenManager.getInstance().isHorizontal();
@StorageLink('isSidebar') isSidebar: boolean = ScreenManager.getInstance().isSidebar();
private createHorizontalActionBar(): ActionBarProp {
let menuList: Array<Action> = new Array<Action>();
let actionBarProp: ActionBarProp = new ActionBarProp();
actionBarProp
.setHasTabBar(true)
.setTitle($r('app.string.tab_timeline'))
.setIsHeadTitle(true)
.setMode(ActionBarMode.STANDARD_MODE);
this.logger.info(`createActionBar, isSelectedMode: ${this.isSelectedMode}`);
if (this.isSelectedMode) {
menuList.push((Boolean(this.selectedCount) ? Action.SHARE : Action.SHARE_INVALID),
(this.isAllSelected ? Action.DESELECT_ALL : Action.SELECT_ALL),
Boolean(this.selectedCount) ? Action.DELETE : Action.DELETE_INVALID, Action.MORE);
actionBarProp
.setLeftAction(Action.CANCEL)
.setMenuList(menuList)
.setMode(ActionBarMode.SELECTION_MODE)
.setSelectionMode(ActionBarSelectionMode.MULTI);
}
return actionBarProp;
}
private createActionBar(): ActionBarProp {
let menuList: Array<Action> = new Array<Action>();
let actionBarProp: ActionBarProp = new ActionBarProp();
actionBarProp
.setHasTabBar(this.isSidebar)
.setTitle($r('app.string.tab_timeline'))
.setIsHeadTitle(true)
.setMode(ActionBarMode.STANDARD_MODE);
this.logger.info(`createActionBar, isSelectedMode: ${this.isSelectedMode}`);
if (this.isSelectedMode) {
actionBarProp
.setLeftAction(Action.CANCEL)
.setMenuList(menuList)
.setMode(ActionBarMode.SELECTION_MODE)
.setSelectionMode(ActionBarSelectionMode.MULTI);
}
return actionBarProp;
}
build() {
Column() {
if (this.isHorizontal) {
ActionBar({
isShowBar: true,
actionBarProp: this.createHorizontalActionBar(),
onMenuClicked: this.onMenuClicked
})
} else {
ActionBar({
isShowBar: true,
actionBarProp: this.createActionBar(),
onMenuClicked: this.onMenuClicked
})
}
}
}
}

View File

@ -1,50 +0,0 @@
/*
* Copyright (c) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { Logger } from '../utils/Logger'
import { Action } from '../../../common/view/browserOperation/Action'
import { ToolBar } from '../../../common/view/actionbar/ToolBar'
@Component
export struct TimelinePageToolBar {
@Consume @Watch('updateToolbar') isSelectedMode: boolean;
@Consume @Watch('updateToolbar') isAllSelected: boolean;
@Consume('selectedCount') @Watch('updateToolbar') selectedCount: number;
onMenuClicked: Function;
logger: Logger = new Logger('TimelinePageToolBar');
@Provide toolMenuList: Array<Action> = new Array<Action>();
aboutToAppear(): void {
this.updateToolbar();
}
private updateToolbar(): void {
this.logger.info('updateToolbar');
if (this.isSelectedMode) {
this.logger.info('pushActionToolbar');
this.toolMenuList = [];
this.toolMenuList.push(
(Boolean(this.selectedCount) ? Action.SHARE : Action.SHARE_INVALID),
(this.isAllSelected ? Action.DESELECT_ALL : Action.SELECT_ALL),
(Boolean(this.selectedCount) ? Action.DELETE : Action.DELETE_INVALID), Action.MORE);
}
}
build() {
ToolBar({
onMenuClicked: this.onMenuClicked
})
}
}

View File

@ -14,7 +14,7 @@
*/
import { TimelinePage } from '../../../feature/timeline/view/TimelinePage'
import { AlbumSetPage } from '../../../feature/browser/view/album/AlbumSetPage'
import { AlbumSetPage } from '../../../feature/album/view/AlbumSetPage'
import { Logger } from '../../../common/utils/Logger'
import { TabBar, DEVICE_TYPE } from '../../../common/view/TabBar'
import { TabItem } from '../../../common/model/common/TabItem'
@ -150,7 +150,6 @@ struct IndexPage {
currentIndex: this.currentIndex,
tabs: this.tabs,
controller: this.tabsController,
isSidebar: this.isSidebar,
deviceType: DEVICE_TYPE.DEVICE_PAD
})
}

View File

@ -14,7 +14,7 @@
*/
import { TimelinePage } from '../../../feature/timeline/view/TimelinePage'
import { AlbumSetPage } from '../../../feature/browser/view/album/AlbumSetPage'
import { AlbumSetPage } from '../../../feature/album/view/AlbumSetPage'
import { Logger } from '../../../common/utils/Logger'
import { TabBar } from '../../../common/view/TabBar'
import { TabItem } from '../../../common/model/common/TabItem'
@ -36,7 +36,6 @@ struct IndexPage {
];
private preIndex: number = Constants.TIMELINE_PAGE_INDEX;
@StorageLink('isSplitMode') isSplitMode: boolean = ScreenManager.getInstance().isSplitMode();
@StorageLink('isSidebar') isSidebar: boolean = ScreenManager.getInstance().isSidebar();
@StorageLink('leftBlank') leftBlank: [number, number, number, number]
= [0, ScreenManager.getInstance().getStatusBarHeight(), 0, ScreenManager.getInstance().getNaviBarHeight()];
@Provide isShow: boolean = true;
@ -145,7 +144,6 @@ struct IndexPage {
currentIndex: this.currentIndex,
tabs: this.tabs,
controller: this.tabsController,
isSidebar: this.isSidebar
})
}
.flexGrow(1)

View File

@ -2,17 +2,17 @@
"src": [
"product/phone/view/index",
"product/pad/view/index",
"feature/browser/view/photoGrid/PhotoGridPage",
"feature/browser/view/photo/PhotoBrowser",
"feature/browser/view/photo/VideoBrowser",
"feature/browser/view/photo/SelectPhotoBrowser",
"feature/photoGrid/view/PhotoGridPage",
"feature/browser/view/PhotoBrowser",
"feature/browser/view/VideoBrowser",
"feature/browser/view/SelectPhotoBrowser",
"feature/thirdSelect/view/ThirdSelectPhotoBrowser",
"feature/thirdSelect/view/ThirdSelectAlbumSetPage",
"feature/thirdSelect/view/ThirdSelectPhotoGridPage",
"feature/browser/view/album/DistributedAlbumSetPage",
"feature/distributedAlbum/view/DistributedAlbumSetPage",
"common/view/browserOperation/MediaOperationPage",
"feature/browser/view/album/NewAlbumPage",
"feature/browser/view/album/AlbumSelect",
"feature/newAlbum/view/NewAlbumPage",
"feature/albumSelect/view/AlbumSelect",
"feature/editor/view/EditMain",
"feature/formEditor/view/FormEditorPage"
]