# LovelyDialog
**Repository Path**: HarmonyOS-tpc/LovelyDialog
## Basic Information
- **Project Name**: LovelyDialog
- **Description**: 该库是一组简单的对话框包装类库,旨在帮助您轻松创建精美对话框。
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 5
- **Forks**: 1
- **Created**: 2021-04-01
- **Last Updated**: 2024-07-16
## Categories & Tags
**Categories**: harmony
**Tags**: None
## README
# LovelyDialog
该库是一组简单的对话框包装类库,旨在帮助您轻松创建精美对话框。
### Dialog types
每个对话框都有彩色的顶部,图标,标题和消息以及自己的功能。共有6种类型的对话框::
* [LovelyStandardDialog](#lovelystandarddialog)
* [LovelyInfoDialog](#lovelyinfodialog)
* [LovelyTextInputDialog](#lovelytextinputdialog)
* [LovelyChoiceDialog](#lovelychoicedialog)
* [LovelyProgressDialog](#lovelyprogressdialog)
* [LovelyCustomDialog](#lovelycustomdialog)
#### LovelyStandardDialog
您可以在此处设置正,负和中性按钮。可以为每个按钮分别设置侦听器,为三个按钮分别设置一个侦听器,或者根本不设置侦听器(在任何按钮对话框上的onClick都将被关闭)
```java
new LovelyStandardDialog(this, LovelyStandardDialog.ButtonLayout.VERTICAL)
.setTopColorRes(ResourceTable.Color_indigo)
.setButtonsColorRes(ResourceTable.Color_darkDeepOrange)
.setIcon(ResourceTable.Media_ic_star_border_white_36dp)
.setTitle(ResourceTable.String_rate_title)
.setInstanceStateHandler(ID_STANDARD_DIALOG, saveStateHandler)
.setSavedInstanceState(savedInstanceState)
.setMessage(ResourceTable.String_rate_message)
.setPositiveButton(ResourceTable.String_ok, LovelyDialogCompat.wrap(
(dialog, which) ->
new ToastDialog(getContext()).setContentCustomComponent(showToast(ResUtil.getString(getContext(), ResourceTable.String_repo_waiting))).show()))
.setNeutralButton(ResourceTable.String_later, null)
.setNegativeButton(ResourceTable.String_no, null)
.show();
```
#### LovelyInfoDialog
向用户显示信息的对话框,内容是可滚动的。有一个选项显示不再显示复选框。如果选中,则下次不会调用该对话框。例如,当显示一些教程时,这可能很有用。
```java
new LovelyInfoDialog(this)
.setTopColorRes(ResourceTable.Color_darkBlueGrey)
.setIcon(ResourceTable.Media_ic_info_outline_white_36dp)
.setInstanceStateHandler(ID_INFO_DIALOG, saveStateHandler)
.setNotShowAgainOptionEnabled(0)
.setNotShowAgainOptionChecked(true)
.setSavedInstanceState(savedInstanceState)
.setTitle(ResourceTable.String_info_title)
.setMessage(ResourceTable.String_info_message)
.show();
```
#### LovelyChoiceDialog
您可以使用单选或多选对话框。在多选对话框的情况下-出现确认按钮。您可以将项目作为数组传递,列表(.toString()将用于将其显示为简单文本项目)或提供您的自定义适配器。
##### 单选
```java
List list = loadDonationOptions();
DonationAdapter adapter = new DonationAdapter(this, loadDonationOptions());
new LovelyChoiceDialog(this)
.setTopColorRes(ResourceTable.Color_darkGreen)
.setTitle(ResourceTable.String_donate_title)
.setInstanceStateHandler(ID_SINGLE_CHOICE_DIALOG, saveStateHandler)
.setIcon(ResourceTable.Media_ic_local_atm_white_36dp)
.setMessage(ResourceTable.String_donate_message)
.setItems(adapter, (position, item) ->
new ToastDialog(getContext()).setContentCustomComponent(showToast(String.format(getString(ResourceTable.String_you_donated), list.get(position).amount))).show()
)
.setSavedInstanceState(savedInstanceState)
.show();
```
##### 多选
```java
String[] items = new String[]{"Pizza", "Noodles", "Hamburger", "Pasta"};
new LovelyChoiceDialog(this, ResourceTable.Pattern_base)
.setTopColorRes(ResourceTable.Color_darkRed)
.setTitle(ResourceTable.String_order_food_title)
.setIcon(ResourceTable.Media_ic_food_white_36dp)
.setInstanceStateHandler(ID_MULTI_CHOICE_DIALOG, saveStateHandler)
.setItemsMultiChoice(items, (positions, items1) ->
new ToastDialog(getContext()).setContentCustomComponent(showToast(String.format(getString(ResourceTable.String_you_ordered), join("\n", items1)))).show()
)
.setSavedInstanceState(savedInstanceState)
.show();
```
#### LovelyTextInputDialog
带有EditText和Confirm按钮的对话框。您可以设置TextFilter对象以指定可接受的输入。
```java
new LovelyTextInputDialog(this)
.setTopColorRes(ResourceTable.Color_darkDeepOrange)
.setTitle(ResourceTable.String_text_input_title)
.setMessage(ResourceTable.String_text_input_message)
.setIcon(ResourceTable.Media_ic_assignment_white_36dp)
.setInstanceStateHandler(ID_TEXT_INPUT_DIALOG, saveStateHandler)
.setInputFilter(ResourceTable.String_text_input_error_message, new LovelyTextInputDialog.TextFilter() {
@Override
public boolean check(String text) {
return text.matches("\\w+");
}
})
.setConfirmButton(ResourceTable.String_ok, text ->
new ToastDialog(getContext()).setContentCustomComponent(showToast(text)).show())
.setNegativeButton(ResourceTable.String_no, null)
.setSavedInstanceState(savedInstanceState)
.configureEditText(editText -> editText.setMaxTextLines(1))
.show();
```
#### LovelyProgressDialog
具有标准openharmony ProgressBar的对话框。默认情况下不可取消。
```java
new LovelyProgressDialog(this)
.setTopColorRes(ResourceTable.Color_teal)
.setIcon(ResourceTable.Media_ic_cast_connected_white_36dp)
.setTitle(ResourceTable.String_connecting_to_server)
.setInstanceStateHandler(ID_PROGRESS_DIALOG, saveStateHandler)
.setSavedInstanceState(savedInstanceState)
.setCancelable(true)
.show();
```
#### LovelyCustomDialog
在这里您可以传递自己的视图进行显示。标题,消息,颜色标题和图标仍将可用。您可以提供配置器,单击侦听器和实例状态保存处理程序。
```java
new LovelyCustomDialog(this)
.setView(R.layout.item_donate_option)
.setTopColorRes(R.color.darkDeepOrange)
.setTitle(R.string.text_input_title)
.setMessage(R.string.text_input_message)
.setIcon(R.drawable.ic_assignment_white_36dp)
.configureView(/* ... */)
.setListener(R.id.ld_btn_yes, /* ... */)
.setInstanceStateManager(/* ... */)
.show();
```
## entry运行要求
通过DevEco studio,并下载openharmonySDK
将项目中的build.gradle文件中dependencies→classpath版本改为对应的版本(即您当前IDE新建项目中所用的版本)
## 集成
allprojects{
repositories{
mavenCentral()
}
}
implementation 'io.openharmony.tpc.thirdlib:LovelyDialog:1.0.3'
# License
Copyright 2016 Yaroslav Shevchuk
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.