/*
* Copyright (c) 2021 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.
*/
package com.harmonyos.studyharmonyos.slice;
import com.harmonyos.studyharmonyos.ResourceTable;
import com.harmonyos.studyharmonyos.bean.MailDataBean;
import com.harmonyos.studyharmonyos.helper.DeviceSelectDialog;
import com.harmonyos.studyharmonyos.helper.WidgetHelper;
import com.harmonyos.studyharmonyos.helper.listcomponent.CommentViewHolder;
import com.harmonyos.studyharmonyos.helper.listcomponent.ListComponentAdapter;
import com.harmonyos.studyharmonyos.util.DeviceUtils;
import com.harmonyos.studyharmonyos.util.LogUtils;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.ability.DataAbilityHelper;
import ohos.aafwk.ability.DataAbilityRemoteException;
import ohos.aafwk.ability.IAbilityContinuation;
import ohos.aafwk.content.Intent;
import ohos.aafwk.content.IntentParams;
import ohos.agp.components.*;
import ohos.agp.utils.LayoutAlignment;
import ohos.agp.window.dialog.CommonDialog;
import ohos.app.Context;
import ohos.data.resultset.ResultSet;
import ohos.distributedschedule.interwork.DeviceInfo;
import ohos.distributedschedule.interwork.DeviceManager;
import ohos.media.image.ImageSource;
import ohos.media.photokit.metadata.AVStorage;
import ohos.utils.net.Uri;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
import static ohos.agp.components.ComponentContainer.LayoutConfig.MATCH_PARENT;
/**
* Mail edit slice
*
* @since 2021-02-04
*/
public class MailEditSlice extends AbilitySlice implements IAbilityContinuation {
private static final String TAG = MailEditSlice.class.getSimpleName();
private static final int CACHE_SIZE = 8 * 1024;
private static final int IO_END_LEN = -1;
private static final int TIPS_DURATION_TIME = 50;
private TextField receiver;
private TextField cc;
private TextField title;
private TextField content;
private Image doConnectImg;
private Button btnHuiqian;
private final List<String> mDialogDataList = new ArrayList<>();//分布式数据地址列表
private ListComponentAdapter mRecycleItemProvider;//邮件对话框附件列表适配器
private CommonDialog fileDialog;
private final List<String> mAttachmentDataList = new ArrayList<>();//已选择的附件数据
private ListComponentAdapter mAttachmentProvider;//附件列表适配器
@Override
public void onStart(Intent intent) {
super.onStart(intent);
LogUtils.info(TAG, "is onStart begin");
Component view = LayoutScatter.getInstance(this).parse(ResourceTable.Layout_moudle_mail_edit, null, false);
ComponentContainer rootLayout;
if (!(view instanceof ComponentContainer)) {
rootLayout = new DirectionalLayout(this);
} else {
adaptView(view);
setClickAction(view);
rootLayout = (ComponentContainer) view;
}
super.setUIContent(rootLayout);
LogUtils.info(TAG, "is onStart end");
}
private void adaptView(Component rootView) {
Component view = rootView.findComponentById(ResourceTable.Id_mail_edit_receiver);
if (view instanceof TextField) {
receiver = (TextField) view;
}
view = rootView.findComponentById(ResourceTable.Id_mail_edit_cc);
if (view instanceof TextField) {
cc = (TextField) view;
}
view = rootView.findComponentById(ResourceTable.Id_mail_edit_title);
if (view instanceof TextField) {
title = (TextField) view;
}
doConnectImg = (Image) rootView.findComponentById(ResourceTable.Id_mail_edit_continue);
view = rootView.findComponentById(ResourceTable.Id_mail_edit_content);
if (view instanceof TextField) {
content = (TextField) view;
}
btnHuiqian = (Button) rootView.findComponentById(ResourceTable.Id_btn_huiqian);
// 初始化界面
fillView();
setAttachmentProvider(rootView);
rootView.findComponentById(ResourceTable.Id_btn_huiqian).setClickedListener(listener -> {
try {
reverseContinueAbility();
} catch (IllegalStateException e) {
e.printStackTrace();
}
});
}
//构建附件列表
private void setAttachmentProvider(Component rootView) {
ListContainer mAttachmentContainer = (ListContainer) rootView.findComponentById(ResourceTable.Id_attachment_list);
mAttachmentProvider =
new ListComponentAdapter<String>(
getContext(), mAttachmentDataList, ResourceTable.Layout_attachment_item_horizontal) {
@Override
public void onBindViewHolder(CommentViewHolder commonViewHolder, String item, int position) {
commonViewHolder
.getTextView(ResourceTable.Id_item_title1)
.setText(item.substring(item.lastIndexOf(File.separator) + 1));
FileInputStream fileInputStream = null;
try {
fileInputStream = new FileInputStream(item);
ImageSource source = ImageSource.create(fileInputStream, null);
commonViewHolder
.getImageView(ResourceTable.Id_image)
.setPixelMap(source.createPixelmap(0, null));
} catch (FileNotFoundException e) {
LogUtils.error(TAG, "setAttachmentProvider Error");
} finally {
try {
fileInputStream.close();
} catch (IOException e) {
LogUtils.error(TAG, "close fileInputStream Error");
}
}
}
};
mAttachmentContainer.setItemProvider(mAttachmentProvider);
}
//初始化数据
private void fillView() {
if (cachedMailData == null) {
receiver.setText("user1;user2");//初始化默认收件人
cc.setText("user3");//初始化默认抄送人员
title.setText("RE:HarmonyOS 2.0 体验");//初始化主题
} else {
receiver.setText(cachedMailData.getReceiver());
cc.setText(cachedMailData.getCc());
title.setText(cachedMailData.getTitle());
content.setText(cachedMailData.getContent());
if (cachedMailData.getPictureDataList().size() > 0) {
// 清空现有数据,并刷新
mAttachmentDataList.clear();
mAttachmentDataList.addAll(cachedMailData.getPictureDataList());
}
}
}
//迁移与选择附件
private void setClickAction(Component rootView) {
//迁移
doConnectImg.setClickedListener(
clickedView -> {
// 通过FLAG_GET_ONLINE_DEVICE标记获得在线设备列表
List<DeviceInfo> deviceInfoList = DeviceManager.getDeviceList(DeviceInfo.FLAG_GET_ONLINE_DEVICE);
if (deviceInfoList.size() > 0) {//如果存在在网设备
DeviceSelectDialog dialog = new DeviceSelectDialog(this);
//赋值回调函数,点击确定后迁移到�
没有合适的资源?快使用搜索试试~ 我知道了~
StudyHarmonyOS关于HarmonyOS应用开发基础组件的使用
共283个文件
java:98个
xml:86个
png:45个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 87 浏览量
2023-11-28
09:54:58
上传
评论
收藏 40.88MB ZIP 举报
温馨提示
关于HarmonyOS应用开发基础组件的使用,以及分布式迁移、分布式跨设备协同,视频播放,分布式文件,RPC通信等
资源推荐
资源详情
资源评论
收起资源包目录
StudyHarmonyOS关于HarmonyOS应用开发基础组件的使用 (283个子文件)
gradlew.bat 3KB
index.css 1004B
index.css 335B
.gitignore 208B
.gitignore 7B
build.gradle 1KB
build.gradle 588B
settings.gradle 17B
gradlew 6KB
index.hml 392B
index.hml 205B
ImplVideoMigration.idl 306B
gradle-wrapper.jar 57KB
MailEditSlice.java 17KB
HmPlayer.java 14KB
VedioPlayerAbilitySlice.java 13KB
PlayerController.java 12KB
PlayerDemoAbilitySlice.java 10KB
TakePictureAbilitySlice.java 10KB
VediosAbilitySlice.java 10KB
SlidePopupWindow.java 9KB
RemoteController.java 8KB
PlayerGestureView.java 7KB
DeviceSelectDialog.java 7KB
FormControllerManager.java 7KB
PlayerView.java 6KB
GestureDetector.java 6KB
AnimatorGroupDemoAbilitySlice.java 5KB
CommonCompontsAbilitySlice.java 5KB
VideoMigrateService.java 5KB
MainAbilitySlice.java 5KB
WidgetHelper.java 5KB
FractionDemoAbilitySlice.java 5KB
ViewProvider.java 5KB
MainAbility.java 4KB
PlayerLoading.java 4KB
MailDataBean.java 4KB
CheckboxDemoAbilitySlice.java 4KB
PageSliderDemoAbilitySlice.java 4KB
VideoMigrationStub.java 4KB
VideoMigrationProxy.java 4KB
TestAbility.java 4KB
GestureConst.java 4KB
ImplPlayer.java 3KB
ScreenUtils.java 3KB
ListContainerDemoAbilitySlice.java 3KB
CommonCompontsAbility.java 3KB
SwitchDemoAbilitySlice.java 3KB
Constants.java 3KB
ToastDialogDemoAbilitySlice.java 3KB
Toast.java 3KB
CommentViewHolder.java 3KB
SourceFactory.java 3KB
AnimatorValueDemoAbilitySlice.java 3KB
PickerDemoAbilitySlice.java 3KB
AbilitySliceRouteUtil.java 3KB
ListComponentAdapter.java 3KB
CommonProvider.java 3KB
RadioContainerDemoAbilitySlice.java 3KB
TabListDemoAbilitySlice.java 2KB
DataPickerDemoAbilitySlice.java 2KB
AnimatorPropertyDemoAbilitySlice.java 2KB
MediaUtil.java 2KB
DateUtils.java 2KB
MigrateAbility.java 2KB
AdvertisementProvider.java 2KB
HmPlayerLifecycle.java 2KB
TimePickerDemoAbilitySlice.java 2KB
AnimationAbilitySlice.java 2KB
CommonLayoutSlice.java 2KB
FormController.java 2KB
DeviceUtils.java 2KB
SampleItemProvider.java 2KB
ImplVideoMigration.java 2KB
ControlCode.java 2KB
CommonUtils.java 2KB
VideoListMo.java 2KB
MediaAbilitySlice.java 1KB
VideoTabStyle.java 1KB
DeviceData.java 1KB
TextDemoAbilitySlice.java 1KB
AdvertisementMo.java 1KB
TestFraction.java 1KB
SliderDemoAbilitySlice.java 1KB
LogUtils.java 1KB
PlayerStatu.java 1KB
ProgressBarDemoAbilitySlice.java 1KB
ScrollViewDemoAbilitySlice.java 1KB
StackLayoutDemoAbilitySlice.java 1KB
PlayerAbility.java 1KB
AnimatorFrameDemoAbilitySlice.java 999B
ImageDemoAbilitySlice.java 996B
ImplLifecycle.java 994B
StatuChangeListener.java 942B
ScreenChangeListener.java 912B
ImplPlayModule.java 895B
MultiJointAbility.java 861B
CommonLayoutAbility.java 739B
TestAbilitySlice.java 597B
RoundProgressBarDemoAbilitySlice.java 596B
共 283 条
- 1
- 2
- 3
资源评论
Java程序员-张凯
- 粉丝: 1w+
- 资源: 6732
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功