Repository: muak/AiForms.Maui.SettingsView
Branch: develop
Commit: 3af09e2dc850
Files: 230
Total size: 744.1 KB
Directory structure:
gitextract_6e89phxe/
├── .github/
│ ├── FUNDING.yml
│ └── ISSUE_TEMPLATE/
│ ├── bug_report.md
│ └── feature_request.md
├── .gitignore
├── AiForms.Maui.SettingsView.slnx
├── CONTRIBUTING-ja.md
├── CONTRIBUTING.md
├── LICENSE.txt
├── README-ja.md
├── README.md
├── Sample/
│ ├── App.xaml
│ ├── App.xaml.cs
│ ├── MauiProgram.cs
│ ├── Platforms/
│ │ ├── Android/
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── MainActivity.cs
│ │ │ ├── MainApplication.cs
│ │ │ └── Resources/
│ │ │ └── values/
│ │ │ └── colors.xml
│ │ └── iOS/
│ │ ├── AppDelegate.cs
│ │ ├── Info.plist
│ │ └── Program.cs
│ ├── Properties/
│ │ └── launchSettings.json
│ ├── Resources/
│ │ ├── Raw/
│ │ │ └── AboutAssets.txt
│ │ └── Styles/
│ │ ├── Colors.xaml
│ │ └── Styles.xaml
│ ├── Sample.csproj
│ ├── ViewModels/
│ │ ├── CustomHeaderViewModel.cs
│ │ ├── DynamicHeaderSizeViewModel.cs
│ │ ├── HeaderSurveyViewModel.cs
│ │ ├── ListViewModel.cs
│ │ ├── MainViewModel.cs
│ │ ├── SurveyViewModel.cs
│ │ └── TapSurveyViewModel.cs
│ └── Views/
│ ├── Cells/
│ │ ├── MyCellA.xaml
│ │ ├── MyCellA.xaml.cs
│ │ ├── MyCellB.xaml
│ │ ├── MyCellB.xaml.cs
│ │ ├── MyCellC.xaml
│ │ ├── MyCellC.xaml.cs
│ │ ├── SliderCell.xaml
│ │ └── SliderCell.xaml.cs
│ ├── CustomHeaderPage.xaml
│ ├── CustomHeaderPage.xaml.cs
│ ├── DynamicHeaderSizePage.xaml
│ ├── DynamicHeaderSizePage.xaml.cs
│ ├── HeaderSurveyPage.xaml
│ ├── HeaderSurveyPage.xaml.cs
│ ├── ListPage.xaml
│ ├── ListPage.xaml.cs
│ ├── MainPage.xaml
│ ├── MainPage.xaml.cs
│ ├── MyNavigationPage.cs
│ ├── SurveyPage.xaml
│ ├── SurveyPage.xaml.cs
│ ├── TapSurveyPage.xaml
│ └── TapSurveyPage.xaml.cs
├── SettingsView/
│ ├── BindableBase.cs
│ ├── CellPropertyChangedEventHandler.cs
│ ├── Cells/
│ │ ├── ButtonCell.cs
│ │ ├── CellBase.cs
│ │ ├── CheckboxCell.cs
│ │ ├── CommandCell.cs
│ │ ├── CustomCell.cs
│ │ ├── DatePickerCell.cs
│ │ ├── EntryCell.cs
│ │ ├── LabelCell.cs
│ │ ├── NumberPickerCell.cs
│ │ ├── PickerCell.cs
│ │ ├── RadioCell.cs
│ │ ├── SimpleCheckCell.cs
│ │ ├── SwitchCell.cs
│ │ ├── TextPickerCell.cs
│ │ └── TimePickerCell.cs
│ ├── DropEventArgs.cs
│ ├── Extensions/
│ │ ├── EnumerableExtension.cs
│ │ ├── FontExtension.cs
│ │ ├── HandlerCleanUpHelper.cs
│ │ └── ViewExtension.cs
│ ├── Handlers/
│ │ ├── ButtonCell/
│ │ │ ├── ButtonCellHandler.Android.cs
│ │ │ ├── ButtonCellHandler.Net.cs
│ │ │ ├── ButtonCellHandler.cs
│ │ │ └── ButtonCellHandler.iOS.cs
│ │ ├── CellBase/
│ │ │ ├── CellBaseHandler.Android.cs
│ │ │ ├── CellBaseHandler.Net.cs
│ │ │ ├── CellBaseHandler.cs
│ │ │ ├── CellBaseHandler.iOS.cs
│ │ │ └── CellBaseView.Net.cs
│ │ ├── CheckboxCell/
│ │ │ ├── CheckboxCellHandler.Android.cs
│ │ │ ├── CheckboxCellHandler.Net.cs
│ │ │ ├── CheckboxCellHandler.cs
│ │ │ └── CheckboxCellHandler.iOS.cs
│ │ ├── CommandCell/
│ │ │ ├── CommandCellHandler.Android.cs
│ │ │ ├── CommandCellHandler.Net.cs
│ │ │ ├── CommandCellHandler.cs
│ │ │ └── CommandCellHandler.iOS.cs
│ │ ├── CustomCell/
│ │ │ ├── CustomCellHandler.Android.cs
│ │ │ ├── CustomCellHandler.Net.cs
│ │ │ ├── CustomCellHandler.cs
│ │ │ └── CustomCellHandler.iOS.cs
│ │ ├── DatePickerCell/
│ │ │ ├── DatePickerCellHandler.Android.cs
│ │ │ ├── DatePickerCellHandler.Net.cs
│ │ │ ├── DatePickerCellHandler.cs
│ │ │ └── DatePickerCellHandler.iOS.cs
│ │ ├── EntryCell/
│ │ │ ├── EntryCellHandler.Android.cs
│ │ │ ├── EntryCellHandler.Net.cs
│ │ │ ├── EntryCellHandler.cs
│ │ │ └── EntryCellHandler.iOS.cs
│ │ ├── EntryCellBase/
│ │ │ ├── EntryCellBaseHandler.Android.cs
│ │ │ ├── EntryCellBaseHandler.Net.cs
│ │ │ ├── EntryCellBaseHandler.cs
│ │ │ └── EntryCellBaseHandler.iOS.cs
│ │ ├── LabelCell/
│ │ │ ├── LabelCellHandler.Android.cs
│ │ │ ├── LabelCellHandler.Net.cs
│ │ │ ├── LabelCellHandler.cs
│ │ │ └── LabelCellHandler.iOS.cs
│ │ ├── LabelCellBase/
│ │ │ ├── LabelCellBaseHandler.Android.cs
│ │ │ ├── LabelCellBaseHandler.Net.cs
│ │ │ ├── LabelCellBaseHandler.cs
│ │ │ └── LabelCellBaseHandler.iOS.cs
│ │ ├── NumberPickerCell/
│ │ │ ├── NumberPickerCellHandler.Android.cs
│ │ │ ├── NumberPickerCellHandler.Net.cs
│ │ │ ├── NumberPickerCellHandler.cs
│ │ │ └── NumberPickerCellHandler.iOS.cs
│ │ ├── RadioCell/
│ │ │ ├── RadioCellHandler.Android.cs
│ │ │ ├── RadioCellHandler.Net.cs
│ │ │ ├── RadioCellHandler.cs
│ │ │ └── RadioCellHandler.iOS.cs
│ │ ├── SettingsViewHandler.Android.cs
│ │ ├── SettingsViewHandler.Net.cs
│ │ ├── SettingsViewHandler.cs
│ │ ├── SettingsViewHandler.iOS.cs
│ │ ├── SimpleCheckCell/
│ │ │ ├── SimpleCheckCellHandler.Android.cs
│ │ │ ├── SimpleCheckCellHandler.Net.cs
│ │ │ ├── SimpleCheckCellHandler.cs
│ │ │ └── SimpleCheckCellHandler.iOS.cs
│ │ ├── SwitchCell/
│ │ │ ├── SwitchCellHandler.Android.cs
│ │ │ ├── SwitchCellHandler.Net.cs
│ │ │ ├── SwitchCellHandler.cs
│ │ │ └── SwitchCellHandler.iOS.cs
│ │ ├── Template/
│ │ │ ├── CellHandler.Android.cs
│ │ │ ├── CellHandler.cs
│ │ │ └── CellHandler.iOS.cs
│ │ ├── TextPickerCell/
│ │ │ ├── TextPickerCellHandler.Android.cs
│ │ │ ├── TextPickerCellHandler.Net.cs
│ │ │ ├── TextPickerCellHandler.cs
│ │ │ └── TextPickerCellHandler.iOS.cs
│ │ └── TimePickerCell/
│ │ ├── TimePickerCellHandler.Android.cs
│ │ ├── TimePickerCellHandler.Net.cs
│ │ ├── TimePickerCellHandler.cs
│ │ └── TimePickerCellHandler.iOS.cs
│ ├── MauiAppBuilderExtension.cs
│ ├── MauiHandlerExtension.cs
│ ├── Native/
│ │ ├── Android/
│ │ │ ├── AiRecyclerView.cs
│ │ │ ├── Cells/
│ │ │ │ ├── ButtonCellView.cs
│ │ │ │ ├── CellBaseView.cs
│ │ │ │ ├── CheckboxCellView.cs
│ │ │ │ ├── CommandCellView.cs
│ │ │ │ ├── CustomCellView.cs
│ │ │ │ ├── DatePickerCellView.cs
│ │ │ │ ├── EntryCellView.cs
│ │ │ │ ├── LabelCellView.cs
│ │ │ │ ├── NumberPickerCellView.cs
│ │ │ │ ├── RadioCellView.cs
│ │ │ │ ├── SimpleCheck.cs
│ │ │ │ ├── SimpleCheckCellView.cs
│ │ │ │ ├── SwitchCellView.cs
│ │ │ │ ├── TextPickerCellView.cs
│ │ │ │ └── TimePickerCellView.cs
│ │ │ ├── DrawableUtility.cs
│ │ │ ├── Extensions/
│ │ │ │ ├── LayoutAlignmentExtensions.cs
│ │ │ │ ├── TextAlignmentExtensions.cs
│ │ │ │ ├── ViewExtension.cs
│ │ │ │ └── ViewHandlerExtension.cs
│ │ │ ├── FormsViewContainer.cs
│ │ │ ├── HeaderFooterContainer.cs
│ │ │ ├── ModelProxy.cs
│ │ │ ├── SVItemdecoration.cs
│ │ │ ├── SettingsViewLayoutManager.cs
│ │ │ ├── SettingsViewRecyclerAdapter.cs
│ │ │ └── ViewHolders.cs
│ │ └── iOS/
│ │ ├── AiTableView.cs
│ │ ├── Cells/
│ │ │ ├── ButtonCellView.cs
│ │ │ ├── CellBaseView.cs
│ │ │ ├── CheckboxCellView.cs
│ │ │ ├── CommandCellView.cs
│ │ │ ├── CustomCellContent.cs
│ │ │ ├── CustomCellView.cs
│ │ │ ├── DatePickerCellView.cs
│ │ │ ├── EntryCellView.cs
│ │ │ ├── LabelCellView.cs
│ │ │ ├── NumberPickerCellView.cs
│ │ │ ├── NumberPickerSource.cs
│ │ │ ├── RadioCellView.cs
│ │ │ ├── SimpleCheckCellView.cs
│ │ │ ├── SwitchCellView.cs
│ │ │ ├── TextPickerCellView.cs
│ │ │ ├── TextPickerSource.cs
│ │ │ └── TimePickerCellView.cs
│ │ ├── CustomHeaderFooterView.cs
│ │ ├── Extensions/
│ │ │ ├── DisposeHelpers.cs
│ │ │ ├── NSObjectExtension.cs
│ │ │ ├── StackViewAlignmentExtensions.cs
│ │ │ ├── TextAlignmentExtensions.cs
│ │ │ └── ThicknessExtensions.cs
│ │ ├── KeyboardInsetTracker.cs
│ │ ├── PaddingLabel.cs
│ │ ├── SettingsTableSource.cs
│ │ ├── TextFooterView.cs
│ │ └── TextHeaderView.cs
│ ├── NaturalComparer.cs
│ ├── Pages/
│ │ ├── PickerPage.xaml
│ │ └── PickerPage.xaml.cs
│ ├── Platforms/
│ │ └── Android/
│ │ └── Resources/
│ │ ├── drawable/
│ │ │ ├── divider.xml
│ │ │ └── ic_navigate_next.xml
│ │ ├── layout/
│ │ │ ├── cellbaseview.axml
│ │ │ ├── contentcell.axml
│ │ │ ├── footercell.axml
│ │ │ └── headercell.axml
│ │ └── values/
│ │ ├── Strings.xml
│ │ ├── attrs.xml
│ │ └── styles.xml
│ ├── Section.cs
│ ├── SectionBase.cs
│ ├── SettingsModel.cs
│ ├── SettingsRoot.cs
│ ├── SettingsView.DefineProperites.cs
│ ├── SettingsView.cs
│ ├── SettingsView.csproj
│ ├── SettingsViewConfiguration.cs
│ └── SizeTypeConverter.cs
└── global.json
================================================
FILE CONTENTS
================================================
================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms
github: [muak]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
---
name: Bug report
about: Create a report to help us improve
---
### Description
### Steps to Reproduce
1.
2.
3.
### Expected Behavior
### Actual Behavior
### Platforms
- [ ] Android
- [ ] iOS
### Basic Information
- AiForms.SettingsView x.x.x
- Xamarin.Forms x.x.x
- Android Support Library Version:
- Affected Devices:
### Screenshots
### Reproduction Link
### Workaround
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
---
name: Feature request
about: Suggest an idea for this project
title: "[Enhancement] YOUR IDEA!"
---
## Summary
Please provide a brief summary of your proposal. Two to three sentences is best here.
## API Changes
Include a list of all API changes, additions, subtractions as would be required by your proposal. These APIs should be considered placeholders, so the naming is not as important as getting the concepts correct. If possible you should include some "example" code of usage of your new API.
e.g.
In order to facilitate the new Shiny Button api, a bool is added to the Button class. This is done as a bool because it is simpler to data bind and other reasons...
var button = new Button ();
button.MakeShiny = true; // new API
The MakeShiny API works even if the button is already visible.
## Intended Use Case
Provide a detailed example of where your proposal would be used and for what purpose.
================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
.vs/
.vscode/
mono_crash.*
.idea/
# User-specific files
*.suo
*.user
*.sln.docstates
*.userprefs
# ignore Xamarin.Android Resource.Designer.cs files
**/*.Droid/**/[Rr]esource.[Dd]esigner.cs
**/*.Android/**/[Rr]esource.[Dd]esigner.cs
**/Android/**/[Rr]esource.[Dd]esigner.cs
# Xamarin Components
Components/
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
x64/
build/
bld/
[Bb]in/
[Oo]bj/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
#NUNIT
*.VisualState.xml
TestResult.xml
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
*_i.c
*_p.c
*_i.h
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*.log
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf
*.cachefile
# Visual Studio profiler
*.psess
*.vsp
*.vspx
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# JustCode is a .NET coding addin-in
.JustCode
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# NCrunch
*.ncrunch*
_NCrunch_*
.*crunch*.local.xml
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# NuGet Packages Directory
packages/
## TODO: If the tool you use requires repositories.config uncomment the next line
#!packages/repositories.config
# Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets
# This line needs to be after the ignore of the build folder (and the packages folder if the line above has been uncommented)
!packages/build/
# Windows Azure Build Output
csx/
*.build.csdef
# Windows Store app package directory
AppPackages/
# Others
sql/
*.Cache
ClientBin/
[Ss]tyle[Cc]op.*
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/
.DS_Store
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file to a newer
# Visual Studio version. Backup files are not needed, because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
# SQL Server files
*.mdf
*.ldf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
# Microsoft Fakes
FakesAssemblies/
project.lock.json
================================================
FILE: AiForms.Maui.SettingsView.slnx
================================================
================================================
FILE: CONTRIBUTING-ja.md
================================================
# How to contribute
[English contribution guideline is here!](CONTRIBUTING.md)
我々は皆さんの AiForms.SettingsView へ貢献を歓迎します。
我々は、皆さんによる貢献を出来るだけ簡単にできるようにしたいと考えています。
その為に、貢献しようとする人は以下の方針に従うよう、お願いします。
## Getting Started
* AiForms.SettingsView に貢献する為には [GitHub アカウント](https://github.com/signup/free) が必要です。
* 問題や機能要望には Issue を作ってください(まだ Issue が作られていない場合)。
* Issue や Pull request を送るのに、事前の連絡は必要ありません。
* バグを issue で報告する場合、バグを再現する為の説明、エラーの情報、環境を書いてください。
* Issue のタイトルと本文はできるだけ英語で書いてください(不可能な場合は日本語でも OK です)。
* [Issue テンプレート](https://github.com/muak/AiForms.SettingsView/issues/new/choose) が用意されているので、必要な箇所を切り取って使用してください。
* GitHub でリポジトリの fork を作ってください。
* ローカルにクローンしたあと、 ``git config user.name yourname`` と ``git config user.email your@ema.il`` を設定してください。特に、``user.email`` は必ず GitHub のアカウントで使用している e-mail アドレスを設定してください。
## Making Changes
* コードやドキュメントを AiForms.SettingsView に貢献するにはベースとなるブランチから、トピック・ブランチを作ってください。
* 通常、これ(ベースとなるブランチ)は development ブランチです。
* development ブランチから、トピック・ブランチを作るには: `git branch
issue_999 development` してから `git
checkout issue_999`で新しいブランチに切り替えます。development ブランチ上で作業するのを避けてください。
* commit は合理的(ロジック単位)に分けてください。また目的と関係のないコードの変更は含めないでください(コードフォーマットの変更、不要コードの削除など)。
* commit メッセージが正しいフォーマットにあることを確認してください。commit メッセージはできるだけ英語でお願いします。
````
必須なコミット情報はここに(できるだけ英語で)。
上にある最初の列はパッチ/コミットの概要を説明します。
この本文はパッチが無い状態のプログラムの行動、なんでこの行動は問題なのか、どうやってパッチが問題を解決するのかを説明します。
````
* 変更の為にテストが必要ならそのテストが追加されているよう確認してください。
## Coding Style
我々は [.NET Foundation](https://github.com/dotnet/corefx/blob/master/Documentation/coding-guidelines/coding-style.md) のコーディングスタイルを使用します。ただし、1点違いがあります。
> We use Allman style braces, where each brace begins on a new line. ~~A single line statement block can go without braces~~
我々は、**常に** 中括弧を使用します、1行の ``if/for/while/etc`` でも ``{ }`` を省略しないでください。
**例:**
```csharp
// 👎🏽 DO NOT USE
if (source == null)
throw new ArgumentNullException("source");
// 👍🏽 GOOD
if (source == null)
{
throw new ArgumentNullException("source");
}
```
コード中には、コメントも含めて日本語は使わないでください。
## Submitting Changes
* 自分の fork で、変更をトピック・ブランチに push してください。
* AiForms.SettingsView のリポジトリに pull request を投稿してください。
pull request は、以下のように作成してください。
* タイトルは変更の要約を分かりやすく書いてください。
* 本文には、関連する issue の番号を本文に含めてください。( ref #199 など)
* 本文には、その変更が確認できるコードの場所を明記してください。通常これは [サンプルプログラム](https://github.com/muak/AiForms.SettingsView/tree/development/Sample) に追加することを推奨します。
* 機能の追加・修正の場合は[ReadMe-ja.md](https://github.com/muak/AiForms.SettingsView/blob/development/README-ja.md)の対応する箇所に加筆・修正してください。
* まだ作業中である場合、タイトルの先頭に [WIP] を付けてください。マージ可能になったら、[WIP] を除去し、コメントでお知らせください。
* 作業中に development ブランチが変更された場合は、コンフリクトを解消してから [WIP] を除去してください。
* その作業を予約する意味で、まず [WIP] の付いた pull request を投稿することを許可します。ただし、長い間活動が見られない場合は、クローズされる場合があります。
# Thanks
このドキュメントは、[MMP/CONTRIBUTING.md · sn0w75/MMP](https://github.com/sn0w75/MMP/blob/master/CONTRIBUTING.md) と [CONTRIBUTING.md · amay077/
Xamarin.Forms.GoogleMaps](https://github.com/amay077/Xamarin.Forms.GoogleMaps/blob/master/CONTRIBUTING.md) をベースに作成しました。
================================================
FILE: CONTRIBUTING.md
================================================
# How to contribute
[日本語のコントリビューションガイドはこちら!](CONTRIBUTING-ja.md)
Third-party contributions are essential for the future development of AiForms.SettingsView.
We would like to keep it as easy as possible to contribute changes that get things working
on your environment. There are some guidelines that we need contributors to follow
so that we can keep on top of things.
## Getting Started
* Make sure you have a [GitHub account](https://github.com/signup/free).
* Create an Issue for your problem, assuming one does not already exist.
* Clearly describe the issue including steps to reproduce, stacktrace and environments when it is a bug.
* We have an [issue template](https://github.com/muak/AiForms.SettingsView/issues/new/choose), you can use some part of it.
* Fork the repository on GitHub.
* After cloning your repogitory to local, you should set ``git config user.name`` and `` git config user.email your@ema.il`` . Especially you **MUST** set ``user.email`` as same as your GitHub account's e-mail.
## Making Changes
* Create a topic branch from where you want to base your work.
* It would be usually from the development branch.
* To quickly create a topic branch based on development; `git branch
issue_999 development` then checkout the new branch with `git
checkout issue_999`. Please avoid working directly on the
`development` branch.
* Make commits of logical units. **Do not contain unrelated file changes(e.g. code formatting).**
* Check for unnecessary whitespace with `git diff --check` before committing.
* Make sure your commit messages are in the proper format.
````
Essential commit summary here.
The body paragraph describes the behavior without the patch,
why this is a problem, and how the patch fixes the problem when applied.
````
* Make sure you have added the necessary tests for your changes.
* Run _all_ the tests to assure nothing else was accidentally broken.
### Coding Style
We follow the style used by the [.NET Foundation](https://github.com/dotnet/corefx/blob/master/Documentation/coding-guidelines/coding-style.md), with one primary exception:
> We use Allman style braces, where each brace begins on a new line. ~~A single line statement block can go without braces~~
We **always** need braces, you can not go without braces.
**Examples:**
```csharp
// 👎🏽 DO NOT WRITE
if (source == null)
throw new ArgumentNullException("source");
// 👍🏽 GOOD
if (source == null)
{
throw new ArgumentNullException("source");
}
```
## Submitting Changes
* Push your changes to a topic branch in your fork of the repository.
* Submit a pull request to the AiForms.SettingsView repository.
Make pull request guide line
* Write a summary of the changes in easy-to-understand manner for the title.
* Show some usage or test code for your changes. We storongly recommend to add usage of new feature to the [sample apps](https://github.com/muak/AiForms.SettingsView/tree/development/Sample).
* Reflect the changes on [ReadMe.md](https://github.com/muak/AiForms.SettingsView/blob/development/README.md).
* Include related issue number for the contents. (e.g. ref #199)
* If your changes are work in progress, the title should start with [WIP]. If you worked out, delete the [WIP] and please let us know.
* If we changed the development before you completed the work, you should resolve conflicts.
* We accept your [WIP] pull request first, which means issue reservation. But if you became no longer active, we will close it.
# Thanks
This guide is based on [MMP/CONTRIBUTING.en.md · sn0w75/MMP](https://github.com/sn0w75/MMP/blob/master/CONTRIBUTING.en.md) and [CONTRIBUTING.md · amay077/
Xamarin.Forms.GoogleMaps](https://github.com/amay077/Xamarin.Forms.GoogleMaps/blob/master/CONTRIBUTING.md).
================================================
FILE: LICENSE.txt
================================================
MIT License
Copyright (c) 2022 kamu
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README-ja.md
================================================
# AiForms.SettingsView for .NET MAUI
SettingViewは.NET MAUIで使用できる設定に特化した柔軟なTableViewです。
AndroidとiOSに対応しています。
**現在プレビュー版です。動作は安定しませんので調査・検証用としてお使いください。**

## SettingsViewでできること(標準のTableViewとの違い)
### 全般
* Separatorの色の設定
* 選択された時の色の指定
* リストの先頭・最後へのスクロール
### セクション
* セクションごとの表示・非表示の設定
* セクションのフッターの設定
* ヘッダーとフッターの様々な設定
* ヘッダーとフッターにFormsのViewを設定
* セクション内にDataTemplateおよびDataTemplateSelectorを適用
* セクション内でドラッグドラッグによる並べ替え
### Cells
* すべてのセルの外観などをSettingsViewで一括で指定
* 個別のセルの設定(個別の設定は全体の設定より優先されます)
* Cell右上にヒントテキストの設定
* 全てのセルでのアイコン設定、それらすべてにメモリキャッシュを適用
* アイコンの角丸設定
* 様々な定義済みCellの使用
* Xamarin.FormsのViewCell、それ以外の定義済みCellの使用
### デモ動画
[https://youtu.be/FTMOqNILxBE](https://youtu.be/FTMOqNILxBE)
## 最小デバイス・バージョン等
iOS13
Android8.0
## インストール
[https://www.nuget.org/packages/AiForms.Maui.SettingsView/](https://www.nuget.org/packages/AiForms.Maui.SettingsView/)
```bash
Install-Package AiForms.Maui.SettingsView
```
```cs
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp()
.ConfigureMauiHandlers(handlers =>
{
handlers.AddSettingsViewHandler(); // write this
});
...
}
```
## Xamlでの使用方法
```xml
```
SettingsViewのプロパティ設定はApp.xamlに記述した方が良いかもしれません。
```xml
#FFBF00
#E6DAB9
#CC9900
#F2EFE6
#F2EDDA
#555555
#666666
#999999
12
14
17
11
```
こんな感じに書くことでアプリ内の全てのSettingsViewを同じ設定にすることができます。
## SettingsViewのプロパティ
* BackgroundColor
* View全体と領域外の背景色。ヘッダーやフッターの背景色も含みます。(Androidの場合はCellの背景色も)
* SeparatorColor
* セパレータの線の色
* SelectedColor
* 行(セル)を選択した時の背景色(AndroidはRipple色も含む)
> AndroidのRipple効果はセルの背景色が設定されていない(透明の)場合は発動しません。
* HeaderPadding
* HeaderTextColor
* HeaderFontSize
* HeaderFontFamily
* HeaderFontAttributes
* HeaderTextVerticalAlign
> HeaderHeightを設定した場合のみ有効です。
* HeaderBackgroundColor
* HeaderHeight
* ヘッダーに関する設定
* FooterTextColor
* FooterFontSize
* FooterFontFamily
* FooterFontAttributes
* FooterBackgroundColor
* FooterPadding
* フッターに関する設定
* RowHeight
* HasUnevenRowがfalseの時は、全行の高さ
* それ以外は最小の行の高さ
* HasUnevenRows
* 行の高さを固定にするかどうか。デフォルトはfalse。true推奨。
* CellTitleColor
* CellTitleFontSize
* CellTitleFontFamily
* CellTitleFontAttributes
* CellValueTextColor
* CellValueTextFontSize
* CellValueTextFontFamily
* CellValueTextFontAttributes
* CellDescriptionColor
* CellDescriptionFontSize
* CellDescriptionFontFamily
* CellDescriptionFontAttributes
* CellBackgroundColor
* CellIconSize
* CellIconRadius
* CellAccentColor
* CellHintTextColor
* CellHintFontSize
* CellHintFontFamily
* CellHintFontAttributes
* 一括セル設定。どこがどのパーツかは後述のLayoutを参照。
* UseDescriptionAsValue (Androidのみ有効)
* Description項目をValue項目として使用するかどうか。
* (一般的なAndroidアプリにありがちな設定値を下に書くレイアウトにするかどうか)
* デフォルトはfalse(DescriptionとValueは個別に使う)
* ShowSectionTopBottomBorder (Androidのみ有効)
* 行の境界線をセクションの上と下にも表示するかどうか
* (一般的なAndroidアプリでありがちな上と下は表示しないようにしないかどうか)
* デフォルトはtrue(表示する)
* ShowArrowIndicatorForAndroid
* CommandCell や PickerCell で 右端の矢印アイコンを Android でも表示するかどうか
* デフォルトは false (表示しない)
* ScrollToTop
* ScrollToBottom
* このプロパティにtrueをセットすると先頭または末尾までスクロールします。
* スクロール完了後は自動でfalseがセットされます。
* VisibleContentHeight
* 表示されているコンテンツの高さです。この値を使って SettingsView 自体の高さを表示されているセルの合計の高さに合わせることができます。
* ItemsSource
* ItemTemplate
* SettingsView全体のDataTemplateを使用できます。SectionのDataTemplateと組み合わせることで単純な構造のセルを短いコードで実現できます。
* TemplateStartIndex
* Templateの挿入を開始するインデックスを指定。デフォルトは0で最初からTemplateを適用します。1以上の値を指定すると、その位置からTemplateが挿入されるようになり、XAML等で挿入したデータはそのままの状態で残ります。任意の位置から繰り返しのセクションを設置した場合などに利用できます。
### SettingsView の高さを内容の高さに合わせるには
SettingsView の内容のセルの合計の高さが、親のViewよりも低い場合は、次のように HeightRequest と VisibleContentHeight を使って、自身の高さを内容の高さに合わせることができます。
```xml
```
### SetttingsView自身のItemsSourceとItemTemplateの使用例
```csharp
public class SomeViewModel
{
public List ItemsSource {get;set;}
public SomeViewModel()
{
ItemsSource = new List{
new new MenuSection("Select number",3){
new MenuItem{Title = "3",Value=3},
new MenuItem{Title = "4",Value=4},
},
new MenuSection("Select mode",1){
new MenuItem{Title = "A",Value = 1},
new MenuItem{Title = "B",Value = 2}
}
}
}
}
public class MenuItem
{
public string Title { get; set; }
public int Value { get; set; }
}
public class MenuSection:List