diff --git a/FeatureAreas.props b/FeatureAreas.props index 6b92154fee..643bb2a819 100644 --- a/FeatureAreas.props +++ b/FeatureAreas.props @@ -107,9 +107,9 @@ productOnly - - - + + + productOnly productOnly productOnly @@ -232,7 +232,6 @@ true true true - true true true true @@ -263,12 +262,12 @@ true true true + true $(DefineConstants);FEATURE_SCROLLPRESENTER_ENABLED $(DefineConstants);FEATURE_INFOBAR_ENABLED $(DefineConstants);FEATURE_NAVIGATIONVIEW_ENABLED - $(DefineConstants);FEATURE_PAGER_ENABLED $(DefineConstants);INNERLOOP_BUILD \ No newline at end of file diff --git a/MUXControls.sln b/MUXControls.sln index 8e1141d583..4fd22e73a1 100644 --- a/MUXControls.sln +++ b/MUXControls.sln @@ -658,13 +658,18 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{10183D43-1 dev\NavigationView\docs\rendering.md = dev\NavigationView\docs\rendering.md EndProjectSection EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Pager", "Pager", "{804CD8D0-F381-4E1B-A5FD-E9D7CE788F55}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "PagerControl", "PagerControl", "{11DC7B03-88FB-4985-BF77-2BB3A13C75A8}" + ProjectSection(SolutionItems) = preProject + dev\PagerControl\readme.md = dev\PagerControl\readme.md + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PagerControl", "dev\PagerControl\PagerControl.vcxitems", "{AB3261A7-9A8D-4A27-AEA2-3AAC0419C889}" EndProject -Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Pager_TestUI", "dev\Pager\TestUI\Pager_TestUI.shproj", "{675121BF-CABC-48E7-9C9D-4571BC507406}" +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "PagerControl_TestUI", "dev\PagerControl\TestUI\PagerControl_TestUI.shproj", "{225C4174-3141-49B8-ADE2-C7D3408D5103}" EndProject -Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Pager_InteractionTests", "dev\Pager\InteractionTests\Pager_InteractionTests.shproj", "{3566798E-9E24-44EF-B89D-2A62AE8F697A}" +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "PagerControl_InteractionTests", "dev\PagerControl\InteractionTests\PagerControl_InteractionTests.shproj", "{4F64C819-664F-436A-BCDB-8AB3019B9DD5}" EndProject -Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "PrototypePager", "dev\Pager\PrototypePager\PrototypePager.shproj", "{675373CE-6ACD-4C4B-A009-09A3C9B218E6}" +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "PagerControl_APITests", "dev\PagerControl\APITests\PagerControl_APITests.shproj", "{CB2352E2-D633-41A3-8CDC-B28731A4C490}" EndProject Global GlobalSection(SharedMSBuildProjectFiles) = preSolution @@ -694,6 +699,7 @@ Global dev\Pivot\Pivot.vcxitems*{1d9e0828-8e69-44ff-8f6f-edc3d858e42a}*SharedItemsImports = 9 dev\Materials\Reveal\InteractionTests\Reveal_InteractionTests\Reveal_InteractionTests.projitems*{1f2872e7-28c9-4c01-88ed-73c43ee1c9a4}*SharedItemsImports = 13 dev\ScrollView\TestUI\ScrollView_TestUI.projitems*{20c52fd5-62fd-53b4-a4a0-995c9b5a014d}*SharedItemsImports = 13 + dev\PagerControl\TestUI\PagerControl_TestUI.projitems*{225c4174-3141-49b8-ade2-c7d3408d5103}*SharedItemsImports = 13 dev\PullToRefresh\ScrollViewerIRefreshInfoProviderAdapter\ScrollViewerIRefreshInfoProviderAdapter.vcxitems*{22a3d1c4-4d1c-4b04-b695-8fec39bfed86}*SharedItemsImports = 9 dev\Slider\TestUI\Slider_TestUI.projitems*{22b10561-4e56-430c-bcaa-d3c8b21bf753}*SharedItemsImports = 13 dev\DatePicker\DatePicker.vcxitems*{239f3422-24b8-433a-9d49-dd9c12f0dbfc}*SharedItemsImports = 9 @@ -708,7 +714,6 @@ Global dev\ParallaxView\ParallaxView.vcxitems*{3095445a-afcd-5154-ac36-9770e6ec1aa5}*SharedItemsImports = 9 dev\RadioMenuFlyoutItem\RadioMenuFlyoutItem.vcxitems*{3353a4a7-87b3-4e43-8f8d-43c7380d1d56}*SharedItemsImports = 9 dev\Lights\Lights.vcxitems*{3479a3ae-2854-4bec-80ab-eab0772cb90a}*SharedItemsImports = 9 - dev\Pager\InteractionTests\Pager_InteractionTests.projitems*{3566798e-9e24-44ef-b89d-2a62ae8f697a}*SharedItemsImports = 13 dev\ScrollPresenter\ScrollPresenter.vcxitems*{359544aa-a8cd-715c-cc36-f770e6e81aa0}*SharedItemsImports = 9 dev\ParallaxView\APITests\ParallaxView_APITests.projitems*{374b93f7-cd18-4ed9-b569-0640529d187c}*SharedItemsImports = 13 dev\ScrollView\APITests\ScrollView_APITests.projitems*{374b93f8-dd19-5eda-c56a-1640529d187c}*SharedItemsImports = 13 @@ -732,6 +737,7 @@ Global dev\TeachingTip\TeachingTip.vcxitems*{499b8bf7-bca1-4c23-baa7-59e2c551be4b}*SharedItemsImports = 9 dev\ColorPicker\TestUI\ColorPicker_TestUI.projitems*{4a87b4f1-4b6f-435a-950e-b2bb32a16001}*SharedItemsImports = 13 dev\CalendarDatePicker\CalendarDatePicker.vcxitems*{4da91b32-6723-4377-9287-ca403ef00ce4}*SharedItemsImports = 9 + dev\PagerControl\InteractionTests\PagerControl_InteractionTests.projitems*{4f64c819-664f-436a-bcdb-8ab3019b9dd5}*SharedItemsImports = 13 dev\Materials\Reveal\APITests\Reveal_APITests.projitems*{5049ea6c-88ce-4ed5-8692-947eec9e52bc}*SharedItemsImports = 13 dev\RadioMenuFlyoutItem\TestUI\RadioMenuFlyoutItem_TestUI.projitems*{50e838a2-a886-46c9-ab0b-a57f510ce643}*SharedItemsImports = 13 dev\PersonPicture\APITests\PersonPicture_APITests.projitems*{5243ef2c-f250-48bd-b633-39cc2a0a38aa}*SharedItemsImports = 13 @@ -744,8 +750,6 @@ Global dev\ScrollBar\TestUI\ScrollBar_TestUI.projitems*{6075e2d2-46d6-4000-bb77-56f0efe37389}*SharedItemsImports = 13 dev\ProgressRing\ProgressRing.vcxitems*{64447efa-19b4-4bf2-9d63-618635c483ec}*SharedItemsImports = 9 dev\RatingControl\RatingControl.vcxitems*{655f5da8-f87b-45af-88d1-a884881c3edf}*SharedItemsImports = 9 - dev\Pager\TestUI\Pager_TestUI.projitems*{675121bf-cabc-48e7-9c9d-4571bc507406}*SharedItemsImports = 13 - dev\Pager\PrototypePager\PrototypePager.projitems*{675373ce-6acd-4c4b-a009-09a3c9b218e6}*SharedItemsImports = 13 test\MUXControlsTestApp\MUXControlsTestApp.Shared.projitems*{6aa772a6-cbf7-4ff3-8864-bc9366015dc2}*SharedItemsImports = 13 dev\RadialGradientBrush\InteractionTests\RadialGradientBrush_InteractionTests.projitems*{74d18b1b-5f6b-4534-945b-131e8e3206fb}*SharedItemsImports = 13 dev\CommonManaged\CommonManaged.projitems*{74f24bc4-794d-4cb2-8420-80ff7fdacfe9}*SharedItemsImports = 4 @@ -789,6 +793,7 @@ Global dev\CommonStyles\TestUI\CommonStyles_TestUI.projitems*{a7f6d6c4-a5a9-43eb-930c-b766417a5e5c}*SharedItemsImports = 13 dev\Materials\Acrylic\TestUI\AcrylicBrush_TestUI.projitems*{a800e818-7212-4fd7-ae3a-1dcab539db87}*SharedItemsImports = 13 dev\CalendarView\APITests\CalendarView_APITests.projitems*{aa73fbeb-6b3b-490c-b582-3993f0040061}*SharedItemsImports = 13 + dev\PagerControl\PagerControl.vcxitems*{ab3261a7-9a8d-4a27-aea2-3aac0419c889}*SharedItemsImports = 9 dev\InfoBar\TestUI\InfoBar_TestUI.projitems*{abbc2446-9b41-4400-8cf6-af2cf8c597b2}*SharedItemsImports = 13 dev\AnimatedVisualPlayer\AnimatedVisualPlayer.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 dev\AutoSuggestBox\AutoSuggestBox.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 @@ -817,6 +822,7 @@ Global dev\MenuFlyout\MenuFlyout.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 dev\NavigationView\NavigationView.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 dev\NumberBox\NumberBox.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 + dev\PagerControl\PagerControl.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 dev\ParallaxView\ParallaxView.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 dev\PersonPicture\PersonPicture.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 dev\Pivot\Pivot.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 @@ -871,11 +877,11 @@ Global dev\TeachingTip\InteractionTests\TeachingTip_InteractionTests.projitems*{c4421632-51bc-469d-bc49-f1cbd9269d49}*SharedItemsImports = 13 dev\CheckBox\CheckBox.vcxitems*{c5c4a801-1f48-461c-a817-233d5fbd77aa}*SharedItemsImports = 9 dev\ComboBox\APITests\ComboBox_APITests.projitems*{ca704a8c-2624-4630-89a0-d86cb1ee409a}*SharedItemsImports = 13 + dev\PagerControl\APITests\PagerControl_APITests.projitems*{cb2352e2-d633-41a3-8cdc-b28731a4c490}*SharedItemsImports = 13 dev\AnimatedVisualPlayer\InteractionTests\AnimatedVisualPlayer_InteractionTests.projitems*{cbaaccf6-a27d-40b3-980b-adf51a2ebb89}*SharedItemsImports = 13 dev\LayoutPanel\APITests\LayoutPanel_APITests.projitems*{cddf46ef-aa2d-4bb3-b33e-98b3dbb3c41b}*SharedItemsImports = 13 dev\Interactions\SliderInteraction\SliderInteraction.vcxitems*{d097a4d5-6b61-424d-99f0-f335eff41665}*SharedItemsImports = 9 dev\TabView\InteractionTests\TabView_InteractionTests.projitems*{d1e297b4-5e5b-4807-8624-4141c817a98a}*SharedItemsImports = 13 - dev\Pager\InteractionTests\Pager_InteractionTests.projitems*{d59c7b8e-5c09-4856-8af3-25585a888707}*SharedItemsImports = 5 dev\MenuFlyout\MenuFlyout.vcxitems*{d5c2b2a0-50af-4ace-939d-17d1ed79fd6f}*SharedItemsImports = 9 dev\IconSource\APITests\IconSource_APITests.projitems*{d73627e9-564c-4a72-a12d-f6c82f17ad0d}*SharedItemsImports = 13 dev\SplitView\TestUI\SplitView_TestUI.projitems*{d8cea3b7-0012-4f74-b50f-b46e9a93c979}*SharedItemsImports = 13 @@ -919,8 +925,8 @@ Global dev\NavigationView\TestUI\NavigationView_TestUI.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4 dev\NumberBox\APITests\NumberBox_APITests.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4 dev\NumberBox\TestUI\NumberBox_TestUI.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4 - dev\Pager\PrototypePager\PrototypePager.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4 - dev\Pager\TestUI\Pager_TestUI.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4 + dev\PagerControl\APITests\PagerControl_APITests.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4 + dev\PagerControl\TestUI\PagerControl_TestUI.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4 dev\ParallaxView\APITests\ParallaxView_APITests.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4 dev\ParallaxView\TestUI\ParallaxView_TestUI.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4 dev\PersonPicture\APITests\PersonPicture_APITests.projitems*{dedc1e4f-cfa5-4443-83eb-e79d425df7e7}*SharedItemsImports = 4 @@ -1013,8 +1019,8 @@ Global dev\NavigationView\TestUI\NavigationView_TestUI.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4 dev\NumberBox\APITests\NumberBox_APITests.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4 dev\NumberBox\TestUI\NumberBox_TestUI.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4 - dev\Pager\PrototypePager\PrototypePager.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4 - dev\Pager\TestUI\Pager_TestUI.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4 + dev\PagerControl\APITests\PagerControl_APITests.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4 + dev\PagerControl\TestUI\PagerControl_TestUI.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4 dev\ParallaxView\APITests\ParallaxView_APITests.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4 dev\ParallaxView\TestUI\ParallaxView_TestUI.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4 dev\PersonPicture\APITests\PersonPicture_APITests.projitems*{fbc396f5-26dd-4ca3-981e-c7bc9fea4546}*SharedItemsImports = 4 @@ -1680,10 +1686,11 @@ Global {DB2DBB48-C807-4F7C-943E-385E77DF7BDE} = {C0215617-A17B-45DB-9CDA-C46C0923DA55} {6B4C9F2E-6A2C-48AD-944B-49B9E9BF028D} = {C0215617-A17B-45DB-9CDA-C46C0923DA55} {10183D43-1785-443E-AEB7-C426FDF14964} = {05CB5DBD-A481-4DFF-B1A3-642F049D165C} - {804CD8D0-F381-4E1B-A5FD-E9D7CE788F55} = {67599AD5-51EC-44CB-85CE-B60CD8CBA270} - {675121BF-CABC-48E7-9C9D-4571BC507406} = {804CD8D0-F381-4E1B-A5FD-E9D7CE788F55} - {3566798E-9E24-44EF-B89D-2A62AE8F697A} = {804CD8D0-F381-4E1B-A5FD-E9D7CE788F55} - {675373CE-6ACD-4C4B-A009-09A3C9B218E6} = {804CD8D0-F381-4E1B-A5FD-E9D7CE788F55} + {11DC7B03-88FB-4985-BF77-2BB3A13C75A8} = {67599AD5-51EC-44CB-85CE-B60CD8CBA270} + {AB3261A7-9A8D-4A27-AEA2-3AAC0419C889} = {11DC7B03-88FB-4985-BF77-2BB3A13C75A8} + {225C4174-3141-49B8-ADE2-C7D3408D5103} = {11DC7B03-88FB-4985-BF77-2BB3A13C75A8} + {4F64C819-664F-436A-BCDB-8AB3019B9DD5} = {11DC7B03-88FB-4985-BF77-2BB3A13C75A8} + {CB2352E2-D633-41A3-8CDC-B28731A4C490} = {11DC7B03-88FB-4985-BF77-2BB3A13C75A8} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {D93836AB-52D3-4DE2-AE25-23F26F55ECED} diff --git a/MUXControlsInnerLoop.sln b/MUXControlsInnerLoop.sln index 39f008bf6c..543323cd75 100644 --- a/MUXControlsInnerLoop.sln +++ b/MUXControlsInnerLoop.sln @@ -467,13 +467,18 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{6F7831A4-4 dev\NavigationView\docs\rendering.md = dev\NavigationView\docs\rendering.md EndProjectSection EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Pager", "Pager", "{0EC260CC-03C7-4790-B16A-43428EBCF5AD}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "PagerControl", "PagerControl", "{E7C2104F-770D-4375-8D3A-D173F222273A}" + ProjectSection(SolutionItems) = preProject + dev\PagerControl\readme.md = dev\PagerControl\readme.md + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PagerControl", "dev\PagerControl\PagerControl.vcxitems", "{AB3261A7-9A8D-4A27-AEA2-3AAC0419C889}" EndProject -Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Pager_InteractionTests", "dev\Pager\InteractionTests\Pager_InteractionTests.shproj", "{3566798E-9E24-44EF-B89D-2A62AE8F697A}" +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "PagerControl_TestUI", "dev\PagerControl\TestUI\PagerControl_TestUI.shproj", "{225C4174-3141-49B8-ADE2-C7D3408D5103}" EndProject -Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Pager_TestUI", "dev\Pager\TestUI\Pager_TestUI.shproj", "{675121BF-CABC-48E7-9C9D-4571BC507406}" +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "PagerControl_InteractionTests", "dev\PagerControl\InteractionTests\PagerControl_InteractionTests.shproj", "{4F64C819-664F-436A-BCDB-8AB3019B9DD5}" EndProject -Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "PrototypePager", "dev\Pager\PrototypePager\PrototypePager.shproj", "{675373CE-6ACD-4C4B-A009-09A3C9B218E6}" +Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "PagerControl_APITests", "dev\PagerControl\APITests\PagerControl_APITests.shproj", "{CB2352E2-D633-41A3-8CDC-B28731A4C490}" EndProject Global GlobalSection(SharedMSBuildProjectFiles) = preSolution @@ -502,6 +507,7 @@ Global dev\Pivot\Pivot.vcxitems*{1d9e0828-8e69-44ff-8f6f-edc3d858e42a}*SharedItemsImports = 9 dev\Materials\Reveal\InteractionTests\Reveal_InteractionTests\Reveal_InteractionTests.projitems*{1f2872e7-28c9-4c01-88ed-73c43ee1c9a4}*SharedItemsImports = 13 dev\ScrollView\TestUI\ScrollView_TestUI.projitems*{20c52fd5-62fd-53b4-a4a0-995c9b5a014d}*SharedItemsImports = 13 + dev\PagerControl\TestUI\PagerControl_TestUI.projitems*{225c4174-3141-49b8-ade2-c7d3408d5103}*SharedItemsImports = 13 dev\PullToRefresh\ScrollViewerIRefreshInfoProviderAdapter\ScrollViewerIRefreshInfoProviderAdapter.vcxitems*{22a3d1c4-4d1c-4b04-b695-8fec39bfed86}*SharedItemsImports = 9 dev\Slider\TestUI\Slider_TestUI.projitems*{22b10561-4e56-430c-bcaa-d3c8b21bf753}*SharedItemsImports = 13 dev\DatePicker\DatePicker.vcxitems*{239f3422-24b8-433a-9d49-dd9c12f0dbfc}*SharedItemsImports = 9 @@ -514,7 +520,6 @@ Global dev\ParallaxView\ParallaxView.vcxitems*{3095445a-afcd-5154-ac36-9770e6ec1aa5}*SharedItemsImports = 9 dev\RadioMenuFlyoutItem\RadioMenuFlyoutItem.vcxitems*{3353a4a7-87b3-4e43-8f8d-43c7380d1d56}*SharedItemsImports = 9 dev\Lights\Lights.vcxitems*{3479a3ae-2854-4bec-80ab-eab0772cb90a}*SharedItemsImports = 9 - dev\Pager\InteractionTests\Pager_InteractionTests.projitems*{3566798e-9e24-44ef-b89d-2a62ae8f697a}*SharedItemsImports = 13 dev\ScrollPresenter\ScrollPresenter.vcxitems*{359544aa-a8cd-715c-cc36-f770e6e81aa0}*SharedItemsImports = 9 dev\ParallaxView\APITests\ParallaxView_APITests.projitems*{374b93f7-cd18-4ed9-b569-0640529d187c}*SharedItemsImports = 13 dev\ScrollView\APITests\ScrollView_APITests.projitems*{374b93f8-dd19-5eda-c56a-1640529d187c}*SharedItemsImports = 13 @@ -538,6 +543,7 @@ Global dev\TeachingTip\TeachingTip.vcxitems*{499b8bf7-bca1-4c23-baa7-59e2c551be4b}*SharedItemsImports = 9 dev\ColorPicker\TestUI\ColorPicker_TestUI.projitems*{4a87b4f1-4b6f-435a-950e-b2bb32a16001}*SharedItemsImports = 13 dev\CalendarDatePicker\CalendarDatePicker.vcxitems*{4da91b32-6723-4377-9287-ca403ef00ce4}*SharedItemsImports = 9 + dev\PagerControl\InteractionTests\PagerControl_InteractionTests.projitems*{4f64c819-664f-436a-bcdb-8ab3019b9dd5}*SharedItemsImports = 13 dev\Materials\Reveal\APITests\Reveal_APITests.projitems*{5049ea6c-88ce-4ed5-8692-947eec9e52bc}*SharedItemsImports = 13 dev\RadioMenuFlyoutItem\TestUI\RadioMenuFlyoutItem_TestUI.projitems*{50e838a2-a886-46c9-ab0b-a57f510ce643}*SharedItemsImports = 13 dev\PersonPicture\APITests\PersonPicture_APITests.projitems*{5243ef2c-f250-48bd-b633-39cc2a0a38aa}*SharedItemsImports = 13 @@ -549,8 +555,6 @@ Global dev\ScrollBar\TestUI\ScrollBar_TestUI.projitems*{6075e2d2-46d6-4000-bb77-56f0efe37389}*SharedItemsImports = 13 dev\ProgressRing\ProgressRing.vcxitems*{64447efa-19b4-4bf2-9d63-618635c483ec}*SharedItemsImports = 9 dev\RatingControl\RatingControl.vcxitems*{655f5da8-f87b-45af-88d1-a884881c3edf}*SharedItemsImports = 9 - dev\Pager\TestUI\Pager_TestUI.projitems*{675121bf-cabc-48e7-9c9d-4571bc507406}*SharedItemsImports = 13 - dev\Pager\PrototypePager\PrototypePager.projitems*{675373ce-6acd-4c4b-a009-09a3c9b218e6}*SharedItemsImports = 13 test\MUXControlsTestApp\MUXControlsTestApp.Shared.projitems*{6aa772a6-cbf7-4ff3-8864-bc9366015dc2}*SharedItemsImports = 13 dev\RadialGradientBrush\InteractionTests\RadialGradientBrush_InteractionTests.projitems*{74d18b1b-5f6b-4534-945b-131e8e3206fb}*SharedItemsImports = 13 dev\ScrollView\ScrollView.vcxitems*{755f5da9-087c-55a0-98d2-b884881c3ed0}*SharedItemsImports = 9 @@ -590,6 +594,7 @@ Global dev\ColorPicker\InteractionTests\ColorPicker_InteractionTests.projitems*{a4d2fae8-e7fc-4100-91ff-2202fac91c70}*SharedItemsImports = 13 dev\CommonStyles\TestUI\CommonStyles_TestUI.projitems*{a7f6d6c4-a5a9-43eb-930c-b766417a5e5c}*SharedItemsImports = 13 dev\Materials\Acrylic\TestUI\AcrylicBrush_TestUI.projitems*{a800e818-7212-4fd7-ae3a-1dcab539db87}*SharedItemsImports = 13 + dev\PagerControl\PagerControl.vcxitems*{ab3261a7-9a8d-4a27-aea2-3aac0419c889}*SharedItemsImports = 9 dev\Collections\Collections.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 dev\CommonStyles\CommonStyles.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 dev\Common\Common.vcxitems*{ad0c90b0-4845-4d4b-88f1-86f653f8171b}*SharedItemsImports = 4 @@ -625,11 +630,11 @@ Global dev\Interactions\ButtonInteraction\InteractionTests\ButtonInteraction_InteractionTests.projitems*{c332ceaf-68b6-4980-b6f3-b15e350cdce0}*SharedItemsImports = 13 dev\TeachingTip\InteractionTests\TeachingTip_InteractionTests.projitems*{c4421632-51bc-469d-bc49-f1cbd9269d49}*SharedItemsImports = 13 dev\CheckBox\CheckBox.vcxitems*{c5c4a801-1f48-461c-a817-233d5fbd77aa}*SharedItemsImports = 9 + dev\PagerControl\APITests\PagerControl_APITests.projitems*{cb2352e2-d633-41a3-8cdc-b28731a4c490}*SharedItemsImports = 13 dev\AnimatedVisualPlayer\InteractionTests\AnimatedVisualPlayer_InteractionTests.projitems*{cbaaccf6-a27d-40b3-980b-adf51a2ebb89}*SharedItemsImports = 13 dev\LayoutPanel\APITests\LayoutPanel_APITests.projitems*{cddf46ef-aa2d-4bb3-b33e-98b3dbb3c41b}*SharedItemsImports = 13 dev\Interactions\SliderInteraction\SliderInteraction.vcxitems*{d097a4d5-6b61-424d-99f0-f335eff41665}*SharedItemsImports = 9 dev\TabView\InteractionTests\TabView_InteractionTests.projitems*{d1e297b4-5e5b-4807-8624-4141c817a98a}*SharedItemsImports = 13 - dev\Pager\InteractionTests\Pager_InteractionTests.projitems*{d59c7b8e-5c09-4856-8af3-25585a888707}*SharedItemsImports = 5 dev\MenuFlyout\MenuFlyout.vcxitems*{d5c2b2a0-50af-4ace-939d-17d1ed79fd6f}*SharedItemsImports = 9 dev\IconSource\APITests\IconSource_APITests.projitems*{d73627e9-564c-4a72-a12d-f6c82f17ad0d}*SharedItemsImports = 13 dev\DropDownButton\InteractionTests\DropDownButton_InteractionTests.projitems*{d9ac3716-5608-40d0-999f-26f4b544be33}*SharedItemsImports = 13 @@ -1100,10 +1105,11 @@ Global {990BBC65-1114-435D-B5CC-1EB8AAAD72DD} = {633B8D7A-3207-4BD3-8159-B65710AEA6FF} {128E6F7A-578C-48DC-BD3F-750EC662C268} = {633B8D7A-3207-4BD3-8159-B65710AEA6FF} {6F7831A4-48F8-41E8-A573-C567A1223CB5} = {05CB5DBD-A481-4DFF-B1A3-642F049D165C} - {0EC260CC-03C7-4790-B16A-43428EBCF5AD} = {67599AD5-51EC-44CB-85CE-B60CD8CBA270} - {3566798E-9E24-44EF-B89D-2A62AE8F697A} = {0EC260CC-03C7-4790-B16A-43428EBCF5AD} - {675121BF-CABC-48E7-9C9D-4571BC507406} = {0EC260CC-03C7-4790-B16A-43428EBCF5AD} - {675373CE-6ACD-4C4B-A009-09A3C9B218E6} = {0EC260CC-03C7-4790-B16A-43428EBCF5AD} + {E7C2104F-770D-4375-8D3A-D173F222273A} = {67599AD5-51EC-44CB-85CE-B60CD8CBA270} + {AB3261A7-9A8D-4A27-AEA2-3AAC0419C889} = {E7C2104F-770D-4375-8D3A-D173F222273A} + {225C4174-3141-49B8-ADE2-C7D3408D5103} = {E7C2104F-770D-4375-8D3A-D173F222273A} + {4F64C819-664F-436A-BCDB-8AB3019B9DD5} = {E7C2104F-770D-4375-8D3A-D173F222273A} + {CB2352E2-D633-41A3-8CDC-B28731A4C490} = {E7C2104F-770D-4375-8D3A-D173F222273A} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {D93836AB-52D3-4DE2-AE25-23F26F55ECED} diff --git a/dev/Generated/PagerControl.properties.cpp b/dev/Generated/PagerControl.properties.cpp new file mode 100644 index 0000000000..e97a52bea5 --- /dev/null +++ b/dev/Generated/PagerControl.properties.cpp @@ -0,0 +1,719 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +// DO NOT EDIT! This file was generated by CustomTasks.DependencyPropertyCodeGen +#include "pch.h" +#include "common.h" +#include "PagerControl.h" + +namespace winrt::Microsoft::UI::Xaml::Controls +{ + CppWinRTActivatableClassWithDPFactory(PagerControl) +} + +#include "PagerControl.g.cpp" + +GlobalDependencyProperty PagerControlProperties::s_ButtonPanelAlwaysShowFirstLastPageIndexProperty{ nullptr }; +GlobalDependencyProperty PagerControlProperties::s_DisplayModeProperty{ nullptr }; +GlobalDependencyProperty PagerControlProperties::s_FirstButtonCommandProperty{ nullptr }; +GlobalDependencyProperty PagerControlProperties::s_FirstButtonStyleProperty{ nullptr }; +GlobalDependencyProperty PagerControlProperties::s_FirstButtonVisibilityProperty{ nullptr }; +GlobalDependencyProperty PagerControlProperties::s_LastButtonCommandProperty{ nullptr }; +GlobalDependencyProperty PagerControlProperties::s_LastButtonStyleProperty{ nullptr }; +GlobalDependencyProperty PagerControlProperties::s_LastButtonVisibilityProperty{ nullptr }; +GlobalDependencyProperty PagerControlProperties::s_NextButtonCommandProperty{ nullptr }; +GlobalDependencyProperty PagerControlProperties::s_NextButtonStyleProperty{ nullptr }; +GlobalDependencyProperty PagerControlProperties::s_NextButtonVisibilityProperty{ nullptr }; +GlobalDependencyProperty PagerControlProperties::s_NumberOfPagesProperty{ nullptr }; +GlobalDependencyProperty PagerControlProperties::s_PagerInputCommandProperty{ nullptr }; +GlobalDependencyProperty PagerControlProperties::s_PrefixTextProperty{ nullptr }; +GlobalDependencyProperty PagerControlProperties::s_PreviousButtonCommandProperty{ nullptr }; +GlobalDependencyProperty PagerControlProperties::s_PreviousButtonStyleProperty{ nullptr }; +GlobalDependencyProperty PagerControlProperties::s_PreviousButtonVisibilityProperty{ nullptr }; +GlobalDependencyProperty PagerControlProperties::s_SelectedPageIndexProperty{ nullptr }; +GlobalDependencyProperty PagerControlProperties::s_SuffixTextProperty{ nullptr }; +GlobalDependencyProperty PagerControlProperties::s_TemplateSettingsProperty{ nullptr }; + +PagerControlProperties::PagerControlProperties() + : m_selectedIndexChangedEventSource{static_cast(this)} +{ + EnsureProperties(); +} + +void PagerControlProperties::EnsureProperties() +{ + if (!s_ButtonPanelAlwaysShowFirstLastPageIndexProperty) + { + s_ButtonPanelAlwaysShowFirstLastPageIndexProperty = + InitializeDependencyProperty( + L"ButtonPanelAlwaysShowFirstLastPageIndex", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxValueIfNecessary(true), + winrt::PropertyChangedCallback(&OnButtonPanelAlwaysShowFirstLastPageIndexPropertyChanged)); + } + if (!s_DisplayModeProperty) + { + s_DisplayModeProperty = + InitializeDependencyProperty( + L"DisplayMode", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnDisplayModePropertyChanged)); + } + if (!s_FirstButtonCommandProperty) + { + s_FirstButtonCommandProperty = + InitializeDependencyProperty( + L"FirstButtonCommand", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnFirstButtonCommandPropertyChanged)); + } + if (!s_FirstButtonStyleProperty) + { + s_FirstButtonStyleProperty = + InitializeDependencyProperty( + L"FirstButtonStyle", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnFirstButtonStylePropertyChanged)); + } + if (!s_FirstButtonVisibilityProperty) + { + s_FirstButtonVisibilityProperty = + InitializeDependencyProperty( + L"FirstButtonVisibility", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnFirstButtonVisibilityPropertyChanged)); + } + if (!s_LastButtonCommandProperty) + { + s_LastButtonCommandProperty = + InitializeDependencyProperty( + L"LastButtonCommand", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnLastButtonCommandPropertyChanged)); + } + if (!s_LastButtonStyleProperty) + { + s_LastButtonStyleProperty = + InitializeDependencyProperty( + L"LastButtonStyle", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnLastButtonStylePropertyChanged)); + } + if (!s_LastButtonVisibilityProperty) + { + s_LastButtonVisibilityProperty = + InitializeDependencyProperty( + L"LastButtonVisibility", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnLastButtonVisibilityPropertyChanged)); + } + if (!s_NextButtonCommandProperty) + { + s_NextButtonCommandProperty = + InitializeDependencyProperty( + L"NextButtonCommand", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnNextButtonCommandPropertyChanged)); + } + if (!s_NextButtonStyleProperty) + { + s_NextButtonStyleProperty = + InitializeDependencyProperty( + L"NextButtonStyle", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnNextButtonStylePropertyChanged)); + } + if (!s_NextButtonVisibilityProperty) + { + s_NextButtonVisibilityProperty = + InitializeDependencyProperty( + L"NextButtonVisibility", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnNextButtonVisibilityPropertyChanged)); + } + if (!s_NumberOfPagesProperty) + { + s_NumberOfPagesProperty = + InitializeDependencyProperty( + L"NumberOfPages", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxValueIfNecessary(0), + winrt::PropertyChangedCallback(&OnNumberOfPagesPropertyChanged)); + } + if (!s_PagerInputCommandProperty) + { + s_PagerInputCommandProperty = + InitializeDependencyProperty( + L"PagerInputCommand", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnPagerInputCommandPropertyChanged)); + } + if (!s_PrefixTextProperty) + { + s_PrefixTextProperty = + InitializeDependencyProperty( + L"PrefixText", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnPrefixTextPropertyChanged)); + } + if (!s_PreviousButtonCommandProperty) + { + s_PreviousButtonCommandProperty = + InitializeDependencyProperty( + L"PreviousButtonCommand", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnPreviousButtonCommandPropertyChanged)); + } + if (!s_PreviousButtonStyleProperty) + { + s_PreviousButtonStyleProperty = + InitializeDependencyProperty( + L"PreviousButtonStyle", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnPreviousButtonStylePropertyChanged)); + } + if (!s_PreviousButtonVisibilityProperty) + { + s_PreviousButtonVisibilityProperty = + InitializeDependencyProperty( + L"PreviousButtonVisibility", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnPreviousButtonVisibilityPropertyChanged)); + } + if (!s_SelectedPageIndexProperty) + { + s_SelectedPageIndexProperty = + InitializeDependencyProperty( + L"SelectedPageIndex", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxValueIfNecessary(0), + winrt::PropertyChangedCallback(&OnSelectedPageIndexPropertyChanged)); + } + if (!s_SuffixTextProperty) + { + s_SuffixTextProperty = + InitializeDependencyProperty( + L"SuffixText", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnSuffixTextPropertyChanged)); + } + if (!s_TemplateSettingsProperty) + { + s_TemplateSettingsProperty = + InitializeDependencyProperty( + L"TemplateSettings", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxedDefaultValue(), + winrt::PropertyChangedCallback(&OnTemplateSettingsPropertyChanged)); + } +} + +void PagerControlProperties::ClearProperties() +{ + s_ButtonPanelAlwaysShowFirstLastPageIndexProperty = nullptr; + s_DisplayModeProperty = nullptr; + s_FirstButtonCommandProperty = nullptr; + s_FirstButtonStyleProperty = nullptr; + s_FirstButtonVisibilityProperty = nullptr; + s_LastButtonCommandProperty = nullptr; + s_LastButtonStyleProperty = nullptr; + s_LastButtonVisibilityProperty = nullptr; + s_NextButtonCommandProperty = nullptr; + s_NextButtonStyleProperty = nullptr; + s_NextButtonVisibilityProperty = nullptr; + s_NumberOfPagesProperty = nullptr; + s_PagerInputCommandProperty = nullptr; + s_PrefixTextProperty = nullptr; + s_PreviousButtonCommandProperty = nullptr; + s_PreviousButtonStyleProperty = nullptr; + s_PreviousButtonVisibilityProperty = nullptr; + s_SelectedPageIndexProperty = nullptr; + s_SuffixTextProperty = nullptr; + s_TemplateSettingsProperty = nullptr; +} + +void PagerControlProperties::OnButtonPanelAlwaysShowFirstLastPageIndexPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void PagerControlProperties::OnDisplayModePropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void PagerControlProperties::OnFirstButtonCommandPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void PagerControlProperties::OnFirstButtonStylePropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void PagerControlProperties::OnFirstButtonVisibilityPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void PagerControlProperties::OnLastButtonCommandPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void PagerControlProperties::OnLastButtonStylePropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void PagerControlProperties::OnLastButtonVisibilityPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void PagerControlProperties::OnNextButtonCommandPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void PagerControlProperties::OnNextButtonStylePropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void PagerControlProperties::OnNextButtonVisibilityPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void PagerControlProperties::OnNumberOfPagesPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void PagerControlProperties::OnPagerInputCommandPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void PagerControlProperties::OnPrefixTextPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void PagerControlProperties::OnPreviousButtonCommandPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void PagerControlProperties::OnPreviousButtonStylePropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void PagerControlProperties::OnPreviousButtonVisibilityPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void PagerControlProperties::OnSelectedPageIndexPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void PagerControlProperties::OnSuffixTextPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void PagerControlProperties::OnTemplateSettingsPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args) +{ + auto owner = sender.as(); + winrt::get_self(owner)->OnPropertyChanged(args); +} + +void PagerControlProperties::ButtonPanelAlwaysShowFirstLastPageIndex(bool value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_ButtonPanelAlwaysShowFirstLastPageIndexProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +bool PagerControlProperties::ButtonPanelAlwaysShowFirstLastPageIndex() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_ButtonPanelAlwaysShowFirstLastPageIndexProperty)); +} + +void PagerControlProperties::DisplayMode(winrt::PagerControlDisplayMode const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_DisplayModeProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +winrt::PagerControlDisplayMode PagerControlProperties::DisplayMode() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_DisplayModeProperty)); +} + +void PagerControlProperties::FirstButtonCommand(winrt::ICommand const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_FirstButtonCommandProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +winrt::ICommand PagerControlProperties::FirstButtonCommand() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_FirstButtonCommandProperty)); +} + +void PagerControlProperties::FirstButtonStyle(winrt::Style const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_FirstButtonStyleProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +winrt::Style PagerControlProperties::FirstButtonStyle() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_FirstButtonStyleProperty)); +} + +void PagerControlProperties::FirstButtonVisibility(winrt::PagerControlButtonVisibility const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_FirstButtonVisibilityProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +winrt::PagerControlButtonVisibility PagerControlProperties::FirstButtonVisibility() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_FirstButtonVisibilityProperty)); +} + +void PagerControlProperties::LastButtonCommand(winrt::ICommand const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_LastButtonCommandProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +winrt::ICommand PagerControlProperties::LastButtonCommand() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_LastButtonCommandProperty)); +} + +void PagerControlProperties::LastButtonStyle(winrt::Style const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_LastButtonStyleProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +winrt::Style PagerControlProperties::LastButtonStyle() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_LastButtonStyleProperty)); +} + +void PagerControlProperties::LastButtonVisibility(winrt::PagerControlButtonVisibility const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_LastButtonVisibilityProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +winrt::PagerControlButtonVisibility PagerControlProperties::LastButtonVisibility() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_LastButtonVisibilityProperty)); +} + +void PagerControlProperties::NextButtonCommand(winrt::ICommand const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_NextButtonCommandProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +winrt::ICommand PagerControlProperties::NextButtonCommand() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_NextButtonCommandProperty)); +} + +void PagerControlProperties::NextButtonStyle(winrt::Style const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_NextButtonStyleProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +winrt::Style PagerControlProperties::NextButtonStyle() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_NextButtonStyleProperty)); +} + +void PagerControlProperties::NextButtonVisibility(winrt::PagerControlButtonVisibility const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_NextButtonVisibilityProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +winrt::PagerControlButtonVisibility PagerControlProperties::NextButtonVisibility() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_NextButtonVisibilityProperty)); +} + +void PagerControlProperties::NumberOfPages(int value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_NumberOfPagesProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +int PagerControlProperties::NumberOfPages() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_NumberOfPagesProperty)); +} + +void PagerControlProperties::PagerInputCommand(winrt::ICommand const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_PagerInputCommandProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +winrt::ICommand PagerControlProperties::PagerInputCommand() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_PagerInputCommandProperty)); +} + +void PagerControlProperties::PrefixText(winrt::hstring const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_PrefixTextProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +winrt::hstring PagerControlProperties::PrefixText() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_PrefixTextProperty)); +} + +void PagerControlProperties::PreviousButtonCommand(winrt::ICommand const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_PreviousButtonCommandProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +winrt::ICommand PagerControlProperties::PreviousButtonCommand() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_PreviousButtonCommandProperty)); +} + +void PagerControlProperties::PreviousButtonStyle(winrt::Style const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_PreviousButtonStyleProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +winrt::Style PagerControlProperties::PreviousButtonStyle() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_PreviousButtonStyleProperty)); +} + +void PagerControlProperties::PreviousButtonVisibility(winrt::PagerControlButtonVisibility const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_PreviousButtonVisibilityProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +winrt::PagerControlButtonVisibility PagerControlProperties::PreviousButtonVisibility() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_PreviousButtonVisibilityProperty)); +} + +void PagerControlProperties::SelectedPageIndex(int value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_SelectedPageIndexProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +int PagerControlProperties::SelectedPageIndex() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_SelectedPageIndexProperty)); +} + +void PagerControlProperties::SuffixText(winrt::hstring const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_SuffixTextProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +winrt::hstring PagerControlProperties::SuffixText() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_SuffixTextProperty)); +} + +void PagerControlProperties::TemplateSettings(winrt::PagerControlTemplateSettings const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_TemplateSettingsProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +winrt::PagerControlTemplateSettings PagerControlProperties::TemplateSettings() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_TemplateSettingsProperty)); +} + +winrt::event_token PagerControlProperties::SelectedIndexChanged(winrt::TypedEventHandler const& value) +{ + return m_selectedIndexChangedEventSource.add(value); +} + +void PagerControlProperties::SelectedIndexChanged(winrt::event_token const& token) +{ + m_selectedIndexChangedEventSource.remove(token); +} diff --git a/dev/Generated/PagerControl.properties.h b/dev/Generated/PagerControl.properties.h new file mode 100644 index 0000000000..14c8d23059 --- /dev/null +++ b/dev/Generated/PagerControl.properties.h @@ -0,0 +1,201 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +// DO NOT EDIT! This file was generated by CustomTasks.DependencyPropertyCodeGen +#pragma once + +class PagerControlProperties +{ +public: + PagerControlProperties(); + + void ButtonPanelAlwaysShowFirstLastPageIndex(bool value); + bool ButtonPanelAlwaysShowFirstLastPageIndex(); + + void DisplayMode(winrt::PagerControlDisplayMode const& value); + winrt::PagerControlDisplayMode DisplayMode(); + + void FirstButtonCommand(winrt::ICommand const& value); + winrt::ICommand FirstButtonCommand(); + + void FirstButtonStyle(winrt::Style const& value); + winrt::Style FirstButtonStyle(); + + void FirstButtonVisibility(winrt::PagerControlButtonVisibility const& value); + winrt::PagerControlButtonVisibility FirstButtonVisibility(); + + void LastButtonCommand(winrt::ICommand const& value); + winrt::ICommand LastButtonCommand(); + + void LastButtonStyle(winrt::Style const& value); + winrt::Style LastButtonStyle(); + + void LastButtonVisibility(winrt::PagerControlButtonVisibility const& value); + winrt::PagerControlButtonVisibility LastButtonVisibility(); + + void NextButtonCommand(winrt::ICommand const& value); + winrt::ICommand NextButtonCommand(); + + void NextButtonStyle(winrt::Style const& value); + winrt::Style NextButtonStyle(); + + void NextButtonVisibility(winrt::PagerControlButtonVisibility const& value); + winrt::PagerControlButtonVisibility NextButtonVisibility(); + + void NumberOfPages(int value); + int NumberOfPages(); + + void PagerInputCommand(winrt::ICommand const& value); + winrt::ICommand PagerInputCommand(); + + void PrefixText(winrt::hstring const& value); + winrt::hstring PrefixText(); + + void PreviousButtonCommand(winrt::ICommand const& value); + winrt::ICommand PreviousButtonCommand(); + + void PreviousButtonStyle(winrt::Style const& value); + winrt::Style PreviousButtonStyle(); + + void PreviousButtonVisibility(winrt::PagerControlButtonVisibility const& value); + winrt::PagerControlButtonVisibility PreviousButtonVisibility(); + + void SelectedPageIndex(int value); + int SelectedPageIndex(); + + void SuffixText(winrt::hstring const& value); + winrt::hstring SuffixText(); + + void TemplateSettings(winrt::PagerControlTemplateSettings const& value); + winrt::PagerControlTemplateSettings TemplateSettings(); + + static winrt::DependencyProperty ButtonPanelAlwaysShowFirstLastPageIndexProperty() { return s_ButtonPanelAlwaysShowFirstLastPageIndexProperty; } + static winrt::DependencyProperty DisplayModeProperty() { return s_DisplayModeProperty; } + static winrt::DependencyProperty FirstButtonCommandProperty() { return s_FirstButtonCommandProperty; } + static winrt::DependencyProperty FirstButtonStyleProperty() { return s_FirstButtonStyleProperty; } + static winrt::DependencyProperty FirstButtonVisibilityProperty() { return s_FirstButtonVisibilityProperty; } + static winrt::DependencyProperty LastButtonCommandProperty() { return s_LastButtonCommandProperty; } + static winrt::DependencyProperty LastButtonStyleProperty() { return s_LastButtonStyleProperty; } + static winrt::DependencyProperty LastButtonVisibilityProperty() { return s_LastButtonVisibilityProperty; } + static winrt::DependencyProperty NextButtonCommandProperty() { return s_NextButtonCommandProperty; } + static winrt::DependencyProperty NextButtonStyleProperty() { return s_NextButtonStyleProperty; } + static winrt::DependencyProperty NextButtonVisibilityProperty() { return s_NextButtonVisibilityProperty; } + static winrt::DependencyProperty NumberOfPagesProperty() { return s_NumberOfPagesProperty; } + static winrt::DependencyProperty PagerInputCommandProperty() { return s_PagerInputCommandProperty; } + static winrt::DependencyProperty PrefixTextProperty() { return s_PrefixTextProperty; } + static winrt::DependencyProperty PreviousButtonCommandProperty() { return s_PreviousButtonCommandProperty; } + static winrt::DependencyProperty PreviousButtonStyleProperty() { return s_PreviousButtonStyleProperty; } + static winrt::DependencyProperty PreviousButtonVisibilityProperty() { return s_PreviousButtonVisibilityProperty; } + static winrt::DependencyProperty SelectedPageIndexProperty() { return s_SelectedPageIndexProperty; } + static winrt::DependencyProperty SuffixTextProperty() { return s_SuffixTextProperty; } + static winrt::DependencyProperty TemplateSettingsProperty() { return s_TemplateSettingsProperty; } + + static GlobalDependencyProperty s_ButtonPanelAlwaysShowFirstLastPageIndexProperty; + static GlobalDependencyProperty s_DisplayModeProperty; + static GlobalDependencyProperty s_FirstButtonCommandProperty; + static GlobalDependencyProperty s_FirstButtonStyleProperty; + static GlobalDependencyProperty s_FirstButtonVisibilityProperty; + static GlobalDependencyProperty s_LastButtonCommandProperty; + static GlobalDependencyProperty s_LastButtonStyleProperty; + static GlobalDependencyProperty s_LastButtonVisibilityProperty; + static GlobalDependencyProperty s_NextButtonCommandProperty; + static GlobalDependencyProperty s_NextButtonStyleProperty; + static GlobalDependencyProperty s_NextButtonVisibilityProperty; + static GlobalDependencyProperty s_NumberOfPagesProperty; + static GlobalDependencyProperty s_PagerInputCommandProperty; + static GlobalDependencyProperty s_PrefixTextProperty; + static GlobalDependencyProperty s_PreviousButtonCommandProperty; + static GlobalDependencyProperty s_PreviousButtonStyleProperty; + static GlobalDependencyProperty s_PreviousButtonVisibilityProperty; + static GlobalDependencyProperty s_SelectedPageIndexProperty; + static GlobalDependencyProperty s_SuffixTextProperty; + static GlobalDependencyProperty s_TemplateSettingsProperty; + + winrt::event_token SelectedIndexChanged(winrt::TypedEventHandler const& value); + void SelectedIndexChanged(winrt::event_token const& token); + + event_source> m_selectedIndexChangedEventSource; + + static void EnsureProperties(); + static void ClearProperties(); + + static void OnButtonPanelAlwaysShowFirstLastPageIndexPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); + + static void OnDisplayModePropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); + + static void OnFirstButtonCommandPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); + + static void OnFirstButtonStylePropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); + + static void OnFirstButtonVisibilityPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); + + static void OnLastButtonCommandPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); + + static void OnLastButtonStylePropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); + + static void OnLastButtonVisibilityPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); + + static void OnNextButtonCommandPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); + + static void OnNextButtonStylePropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); + + static void OnNextButtonVisibilityPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); + + static void OnNumberOfPagesPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); + + static void OnPagerInputCommandPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); + + static void OnPrefixTextPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); + + static void OnPreviousButtonCommandPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); + + static void OnPreviousButtonStylePropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); + + static void OnPreviousButtonVisibilityPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); + + static void OnSelectedPageIndexPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); + + static void OnSuffixTextPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); + + static void OnTemplateSettingsPropertyChanged( + winrt::DependencyObject const& sender, + winrt::DependencyPropertyChangedEventArgs const& args); +}; diff --git a/dev/Generated/PagerControlAutomationPeer.properties.cpp b/dev/Generated/PagerControlAutomationPeer.properties.cpp new file mode 100644 index 0000000000..eb4e2c6356 --- /dev/null +++ b/dev/Generated/PagerControlAutomationPeer.properties.cpp @@ -0,0 +1,16 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +// DO NOT EDIT! This file was generated by CustomTasks.DependencyPropertyCodeGen +#include "pch.h" +#include "common.h" +#include "PagerControlAutomationPeer.h" + +namespace winrt::Microsoft::UI::Xaml::Automation::Peers +{ + CppWinRTActivatableClassWithBasicFactory(PagerControlAutomationPeer) +} + +#include "PagerControlAutomationPeer.g.cpp" + + diff --git a/dev/Generated/PagerControlTemplateSettings.properties.cpp b/dev/Generated/PagerControlTemplateSettings.properties.cpp new file mode 100644 index 0000000000..361c539553 --- /dev/null +++ b/dev/Generated/PagerControlTemplateSettings.properties.cpp @@ -0,0 +1,106 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +// DO NOT EDIT! This file was generated by CustomTasks.DependencyPropertyCodeGen +#include "pch.h" +#include "common.h" +#include "PagerControlTemplateSettings.h" + +namespace winrt::Microsoft::UI::Xaml::Controls +{ + CppWinRTActivatableClassWithDPFactory(PagerControlTemplateSettings) +} + +#include "PagerControlTemplateSettings.g.cpp" + +GlobalDependencyProperty PagerControlTemplateSettingsProperties::s_DispatcherProperty{ nullptr }; +GlobalDependencyProperty PagerControlTemplateSettingsProperties::s_NumberPanelItemsProperty{ nullptr }; +GlobalDependencyProperty PagerControlTemplateSettingsProperties::s_PagesProperty{ nullptr }; + +PagerControlTemplateSettingsProperties::PagerControlTemplateSettingsProperties() +{ + EnsureProperties(); +} + +void PagerControlTemplateSettingsProperties::EnsureProperties() +{ + if (!s_DispatcherProperty) + { + s_DispatcherProperty = + InitializeDependencyProperty( + L"Dispatcher", + winrt::name_of(), + winrt::name_of(), + false /* isAttached */, + ValueHelper::BoxedDefaultValue(), + nullptr); + } + if (!s_NumberPanelItemsProperty) + { + s_NumberPanelItemsProperty = + InitializeDependencyProperty( + L"NumberPanelItems", + winrt::name_of>(), + winrt::name_of(), + false /* isAttached */, + ValueHelper>::BoxedDefaultValue(), + nullptr); + } + if (!s_PagesProperty) + { + s_PagesProperty = + InitializeDependencyProperty( + L"Pages", + winrt::name_of>(), + winrt::name_of(), + false /* isAttached */, + ValueHelper>::BoxedDefaultValue(), + nullptr); + } +} + +void PagerControlTemplateSettingsProperties::ClearProperties() +{ + s_DispatcherProperty = nullptr; + s_NumberPanelItemsProperty = nullptr; + s_PagesProperty = nullptr; +} + +void PagerControlTemplateSettingsProperties::Dispatcher(winrt::CoreDispatcher const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_DispatcherProperty, ValueHelper::BoxValueIfNecessary(value)); + } +} + +winrt::CoreDispatcher PagerControlTemplateSettingsProperties::Dispatcher() +{ + return ValueHelper::CastOrUnbox(static_cast(this)->GetValue(s_DispatcherProperty)); +} + +void PagerControlTemplateSettingsProperties::NumberPanelItems(winrt::IVector const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_NumberPanelItemsProperty, ValueHelper>::BoxValueIfNecessary(value)); + } +} + +winrt::IVector PagerControlTemplateSettingsProperties::NumberPanelItems() +{ + return ValueHelper>::CastOrUnbox(static_cast(this)->GetValue(s_NumberPanelItemsProperty)); +} + +void PagerControlTemplateSettingsProperties::Pages(winrt::IVector const& value) +{ + [[gsl::suppress(con)]] + { + static_cast(this)->SetValue(s_PagesProperty, ValueHelper>::BoxValueIfNecessary(value)); + } +} + +winrt::IVector PagerControlTemplateSettingsProperties::Pages() +{ + return ValueHelper>::CastOrUnbox(static_cast(this)->GetValue(s_PagesProperty)); +} diff --git a/dev/Generated/PagerControlTemplateSettings.properties.h b/dev/Generated/PagerControlTemplateSettings.properties.h new file mode 100644 index 0000000000..7005a4e470 --- /dev/null +++ b/dev/Generated/PagerControlTemplateSettings.properties.h @@ -0,0 +1,31 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +// DO NOT EDIT! This file was generated by CustomTasks.DependencyPropertyCodeGen +#pragma once + +class PagerControlTemplateSettingsProperties +{ +public: + PagerControlTemplateSettingsProperties(); + + void Dispatcher(winrt::CoreDispatcher const& value); + winrt::CoreDispatcher Dispatcher(); + + void NumberPanelItems(winrt::IVector const& value); + winrt::IVector NumberPanelItems(); + + void Pages(winrt::IVector const& value); + winrt::IVector Pages(); + + static winrt::DependencyProperty DispatcherProperty() { return s_DispatcherProperty; } + static winrt::DependencyProperty NumberPanelItemsProperty() { return s_NumberPanelItemsProperty; } + static winrt::DependencyProperty PagesProperty() { return s_PagesProperty; } + + static GlobalDependencyProperty s_DispatcherProperty; + static GlobalDependencyProperty s_NumberPanelItemsProperty; + static GlobalDependencyProperty s_PagesProperty; + + static void EnsureProperties(); + static void ClearProperties(); +}; diff --git a/dev/Pager/InteractionTests/PagerTests.cs b/dev/Pager/InteractionTests/PagerTests.cs deleted file mode 100644 index d49db562bc..0000000000 --- a/dev/Pager/InteractionTests/PagerTests.cs +++ /dev/null @@ -1,942 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -using System; -using Common; -using Windows.UI.Xaml.Tests.MUXControls.InteractionTests.Infra; -using Windows.UI.Xaml.Tests.MUXControls.InteractionTests.Common; -using System.Collections.Generic; - -#if USING_TAEF -using WEX.TestExecution; -using WEX.TestExecution.Markup; -using WEX.Logging.Interop; -#else -using Microsoft.VisualStudio.TestTools.UnitTesting; -using Microsoft.VisualStudio.TestTools.UnitTesting.Logging; -#endif - -using Microsoft.Windows.Apps.Test.Automation; -using Microsoft.Windows.Apps.Test.Foundation; -using Microsoft.Windows.Apps.Test.Foundation.Controls; -using Microsoft.Windows.Apps.Test.Foundation.Patterns; -using Microsoft.Windows.Apps.Test.Foundation.Waiters; -using static Windows.UI.Xaml.Tests.MUXControls.InteractionTests.PagerTestsPageElements; -using Windows.UI.Xaml.Controls.Primitives; -using System.Diagnostics; -using Windows.UI.Xaml.Controls; -using Windows.UI.Core; - -namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests -{ - [TestClass] - public class PagerTests - { - PagerTestsPageElements elements; - int previousPage = -1; - int AutoDisplayModeThresholdValue = 10; - delegate void SetButtonVisibilityModeFunction(ButtonVisibilityModes mode); - - [ClassInitialize] - [TestProperty("RunAs", "User")] - [TestProperty("Classification", "Integration")] - [TestProperty("Platform", "Any")] - [TestProperty("MUXControlsTestSuite", "SuiteB")] - public static void ClassInitialize(TestContext testContext) - { - TestEnvironment.Initialize(testContext); - } - - public void TestCleanup() - { - TestCleanupHelper.Cleanup(); - } - - - [TestMethod] - [TestProperty("TestSuite", "A")] - public void NumberBoxDisplayChangingPageTest() - { - using (var setup = new TestSetupHelper("Pager Tests")) - { - elements = new PagerTestsPageElements(); - - SetNumberBoxDisplayMode(); - VerifyNumberBoxDisplayMode(); - VerifyPageChanged(0); - - SendValueToNumberBox("3"); // Note: Pager displays numbers starting at 1 but the page changed event sends 0-based numbers - VerifyPageChanged(2); - - SendValueToNumberBox("1"); - VerifyPageChanged(0); - - SendValueToNumberBox("5"); - VerifyPageChanged(4); - - SendValueToNumberBox("2"); - VerifyPageChanged(1); - - SendValueToNumberBox("100"); - Verify.AreEqual("5", FindTextBox(elements.GetPagerNumberBox()).GetText()); // If over max, value should be clamped down to the max. - VerifyPageChanged(4); - - SendValueToNumberBox("-100"); - Verify.AreEqual("1", FindTextBox(elements.GetPagerNumberBox()).GetText()); // If under min, value should be clamped up to the min. - VerifyPageChanged(0); - - } - } - - [TestMethod] - [TestProperty("TestSuite", "A")] - public void ComboBoxDisplayChangingPageTest() - { - using (var setup = new TestSetupHelper("Pager Tests")) - { - elements = new PagerTestsPageElements(); - VerifyPageChanged(0); - - SetComboBoxDisplayMode(); - VerifyComboBoxDisplayMode(); - - SelectValueInPagerComboBox(2); - VerifyPageChanged(2); - - SelectValueInPagerComboBox(4); - VerifyPageChanged(4); - - SelectValueInPagerComboBox(0); - VerifyPageChanged(0); - } - } - - [TestMethod] - [TestProperty("TestSuite", "B")] - public void AutoDisplayChangingPageTest() - { - using (var setup = new TestSetupHelper("Pager Tests")) - { - elements = new PagerTestsPageElements(); - VerifyPageChanged(0); - - SetAutoDisplayMode(); - VerifyAutoDisplayMode(); - - SelectValueInPagerComboBox(2); - VerifyPageChanged(2); - - SelectValueInPagerComboBox(4); - VerifyPageChanged(4); - - SelectValueInPagerComboBox(0); - VerifyPageChanged(0); - } - } - - [TestMethod] - [TestProperty("TestSuite", "D")] - public void NumberPanelChangingPageTest() - { - using (var setup = new TestSetupHelper("Pager Tests")) - { - elements = new PagerTestsPageElements(); - - VerifyPageChanged(0); - - SetNumberPanelDisplayMode(); - VerifyNumberPanelDisplayMode(); - - SelectPageInNumberPanel(2); - VerifyPageChanged(1); - VerifyNumberPanelContent("12345"); - - SelectPageInNumberPanel(5); - VerifyPageChanged(4); - VerifyNumberPanelContent("12345"); - - SelectPageInNumberPanel(4); - VerifyPageChanged(3); - VerifyNumberPanelContent("12345"); - - SelectPageInNumberPanel(3); - VerifyPageChanged(2); - VerifyNumberPanelContent("12345"); - - ChangeNumberOfPages(); - VerifyNumberOfPages("100"); - - - SelectPageInNumberPanel(1); - VerifyPageChanged(0); - VerifyNumberPanelContent("12345More100"); - - SelectPageInNumberPanel(2); - VerifyPageChanged(1); - VerifyNumberPanelContent("12345More100"); - - SelectPageInNumberPanel(3); - VerifyPageChanged(2); - VerifyNumberPanelContent("12345More100"); - - SelectPageInNumberPanel(4); - VerifyPageChanged(3); - VerifyNumberPanelContent("12345More100"); - - SelectPageInNumberPanel(5); - VerifyPageChanged(4); - VerifyNumberPanelContent("1More456More100"); - - SelectPageInNumberPanel(6); - VerifyPageChanged(5); - VerifyNumberPanelContent("1More567More100"); - - SelectPageInNumberPanel(100); - VerifyPageChanged(99); - - VerifyNumberPanelContent("1More96979899100"); - - SelectPageInNumberPanel(99); - VerifyPageChanged(98); - VerifyNumberPanelContent("1More96979899100"); - - SelectPageInNumberPanel(98); - VerifyPageChanged(97); - VerifyNumberPanelContent("1More96979899100"); - - SelectPageInNumberPanel(97); - VerifyPageChanged(96); - VerifyNumberPanelContent("1More96979899100"); - - SelectPageInNumberPanel(96); - VerifyPageChanged(95); - VerifyNumberPanelContent("1More959697More100"); - } - } - - [TestMethod] - [TestProperty("TestSuite", "C")] - public void NumberPanelChangingPageTest2() - { - using (var setup = new TestSetupHelper("Pager Tests")) - { - elements = new PagerTestsPageElements(); - - VerifyPageChanged(0); - - SetNumberPanelDisplayMode(); - VerifyNumberPanelDisplayMode(); - - InputHelper.LeftClick(elements.GetNextPageButton()); - VerifyPageChanged(1); - VerifyNumberPanelContent("12345"); - - InputHelper.LeftClick(elements.GetLastPageButton()); - VerifyPageChanged(4); - VerifyNumberPanelContent("12345"); - - InputHelper.LeftClick(elements.GetPreviousPageButton()); - VerifyPageChanged(3); - VerifyNumberPanelContent("12345"); - - InputHelper.LeftClick(elements.GetPreviousPageButton()); - VerifyPageChanged(2); - VerifyNumberPanelContent("12345"); - - ChangeNumberOfPages(); - VerifyNumberOfPages("100"); - - - InputHelper.LeftClick(elements.GetFirstPageButton()); - VerifyPageChanged(0); - VerifyNumberPanelContent("12345More100"); - - InputHelper.LeftClick(elements.GetNextPageButton()); - VerifyPageChanged(1); - VerifyNumberPanelContent("12345More100"); - - InputHelper.LeftClick(elements.GetNextPageButton()); - VerifyPageChanged(2); - VerifyNumberPanelContent("12345More100"); - - InputHelper.LeftClick(elements.GetNextPageButton()); - VerifyPageChanged(3); - VerifyNumberPanelContent("12345More100"); - - InputHelper.LeftClick(elements.GetNextPageButton()); - VerifyPageChanged(4); - VerifyNumberPanelContent("1More456More100"); - - InputHelper.LeftClick(elements.GetNextPageButton()); - VerifyPageChanged(5); - VerifyNumberPanelContent("1More567More100"); - - InputHelper.LeftClick(elements.GetLastPageButton()); - VerifyPageChanged(99); - - VerifyNumberPanelContent("1More96979899100"); - - InputHelper.LeftClick(elements.GetPreviousPageButton()); - VerifyPageChanged(98); - VerifyNumberPanelContent("1More96979899100"); - - InputHelper.LeftClick(elements.GetPreviousPageButton()); - VerifyPageChanged(97); - VerifyNumberPanelContent("1More96979899100"); - - InputHelper.LeftClick(elements.GetPreviousPageButton()); - VerifyPageChanged(96); - VerifyNumberPanelContent("1More96979899100"); - - InputHelper.LeftClick(elements.GetPreviousPageButton()); - VerifyPageChanged(95); - VerifyNumberPanelContent("1More959697More100"); - } - } - - [TestMethod] - [TestProperty("TestSuite", "C")] - public void FirstPageButtonChangingPageTest() - { - using (var setup = new TestSetupHelper("Pager Tests")) - { - elements = new PagerTestsPageElements(); - VerifyPageChanged(0); - InputHelper.LeftClick(elements.GetLastPageButton()); - - previousPage = 4; - InputHelper.LeftClick(elements.GetFirstPageButton()); - VerifyPageChanged(0); - - InputHelper.LeftClick(elements.GetNextPageButton()); - - previousPage = 1; - InputHelper.LeftClick(elements.GetFirstPageButton()); - VerifyPageChanged(0); - } - } - - [TestMethod] - [TestProperty("TestSuite", "B")] - public void PreviousPageButtonChangingPageTest() - { - using (var setup = new TestSetupHelper("Pager Tests")) - { - elements = new PagerTestsPageElements(); - VerifyPageChanged(0); - InputHelper.LeftClick(elements.GetNextPageButton()); - - previousPage = 1; - InputHelper.LeftClick(elements.GetPreviousPageButton()); - VerifyPageChanged(0); - - InputHelper.LeftClick(elements.GetLastPageButton()); - - previousPage = 4; - InputHelper.LeftClick(elements.GetPreviousPageButton()); - VerifyPageChanged(3); - - InputHelper.LeftClick(elements.GetPreviousPageButton()); - VerifyPageChanged(2); - - InputHelper.LeftClick(elements.GetPreviousPageButton()); - VerifyPageChanged(1); - - InputHelper.LeftClick(elements.GetPreviousPageButton()); - VerifyPageChanged(0); - - } - } - - [TestMethod] - [TestProperty("TestSuite", "B")] - public void NextPageButtonChangingPageTest() - { - using (var setup = new TestSetupHelper("Pager Tests")) - { - elements = new PagerTestsPageElements(); - VerifyPageChanged(0); - InputHelper.LeftClick(elements.GetNextPageButton()); - VerifyPageChanged(1); - - InputHelper.LeftClick(elements.GetNextPageButton()); - VerifyPageChanged(2); - - InputHelper.LeftClick(elements.GetNextPageButton()); - VerifyPageChanged(3); - - InputHelper.LeftClick(elements.GetNextPageButton()); - VerifyPageChanged(4); - } - } - - [TestMethod] - [TestProperty("TestSuite", "A")] - public void LastPageButtonChangingPageTest() - { - using (var setup = new TestSetupHelper("Pager Tests")) - { - elements = new PagerTestsPageElements(); - VerifyPageChanged(0); - InputHelper.LeftClick(elements.GetLastPageButton()); - VerifyPageChanged(4); - - InputHelper.LeftClick(elements.GetFirstPageButton()); - InputHelper.LeftClick(elements.GetNextPageButton()); - - previousPage = 1; - - InputHelper.LeftClick(elements.GetLastPageButton()); - VerifyPageChanged(4); - } - } - - [TestMethod] - [TestProperty("TestSuite", "D")] - public void FirstPageButtonVisibilityOptionsTest() - { - ButtonVisibilityOptionsTest(buttonNamePrefix: "First"); - } - - [TestMethod] - [TestProperty("TestSuite", "E")] - public void PreviousPageButtonVisibilityOptionsTest() - { - ButtonVisibilityOptionsTest(buttonNamePrefix: "Previous"); - } - - [TestMethod] - [TestProperty("TestSuite", "F")] - public void NextPageButtonVisibilityOptionsTest() - { - ButtonVisibilityOptionsTest(buttonNamePrefix: "Next"); - } - - [TestMethod] - [TestProperty("TestSuite", "G")] - public void LastPageButtonVisibilityOptionsTest() - { - ButtonVisibilityOptionsTest(buttonNamePrefix: "Last"); - } - - void ButtonVisibilityOptionsTest(string buttonNamePrefix) - { - SetButtonVisibilityModeFunction SetButtonVisibilityMode; - UIObject buttonBeingTested; - - using (var setup = new TestSetupHelper("Pager Tests")) - { - - elements = new PagerTestsPageElements(); - switch (buttonNamePrefix) - { - case "First": - SetButtonVisibilityMode = SetFirstPageButtonVisibilityMode; - buttonBeingTested = elements.GetFirstPageButton(); - break; - case "Previous": - SetButtonVisibilityMode = SetPreviousPageButtonVisibilityMode; - buttonBeingTested = elements.GetPreviousPageButton(); - break; - case "Next": - SetButtonVisibilityMode = SetNextPageButtonVisibilityMode; - buttonBeingTested = elements.GetNextPageButton(); - break; - case "Last": - SetButtonVisibilityMode = SetLastPageButtonVisibilityMode; - buttonBeingTested = elements.GetLastPageButton(); - break; - default: - Log.Warning("This test is being skipped because the button string was not one of these four strings: [First, Previous, Next, Last]"); - return; - } - - VerifyPageChanged(0); - - foreach (ButtonVisibilityModes visMode in Enum.GetValues(typeof(ButtonVisibilityModes))) - { - SetButtonVisibilityMode(visMode); - GetLastPage(); - // If we're not on the first page then navigate to the first page. - if (previousPage != 0) - { - SelectValueInPagerComboBox(0); - VerifyPageChanged(0); - } - - var expectedVisibility = ((visMode == ButtonVisibilityModes.None) || - (visMode == ButtonVisibilityModes.HiddenOnEdge && - (buttonNamePrefix == "First" || buttonNamePrefix == "Previous"))) ? Visibility.Collapsed : Visibility.Visible; - - var expectedIsEnableValue = (buttonNamePrefix == "First" || buttonNamePrefix == "Previous") ? false : true; - - VerifyButton(buttonBeingTested, expectedVisibility, expectedIsEnableValue); - - SelectValueInPagerComboBox(1); - VerifyPageChanged(1); - - expectedVisibility = (visMode == ButtonVisibilityModes.None) ? Visibility.Collapsed : Visibility.Visible; - expectedIsEnableValue = true; - - VerifyButton(buttonBeingTested, expectedVisibility, expectedIsEnableValue); - - SelectValueInPagerComboBox(GetLastPageAsInt() - 1); - VerifyPageChanged(GetLastPageAsInt() - 1); - - expectedVisibility = ((visMode == ButtonVisibilityModes.None) || - (visMode == ButtonVisibilityModes.HiddenOnEdge && - (buttonNamePrefix == "Next" || buttonNamePrefix == "Last"))) ? Visibility.Collapsed : Visibility.Visible; - - expectedIsEnableValue = (buttonNamePrefix == "Next" || buttonNamePrefix == "Last") ? false : true; - - VerifyButton(buttonBeingTested, expectedVisibility, expectedIsEnableValue); - } - } - } - - [TestMethod] - [TestProperty("TestSuite", "C")] - public void ChangingDisplayModeTest() - { - using (var setup = new TestSetupHelper("Pager Tests")) - { - elements = new PagerTestsPageElements(); - SetAutoDisplayMode(); - VerifyAutoDisplayMode(); - - SetComboBoxDisplayMode(); - VerifyComboBoxDisplayMode(); - - SetNumberBoxDisplayMode(); - VerifyNumberBoxDisplayMode(); - - SetNumberPanelDisplayMode(); - VerifyNumberPanelDisplayMode(); - - SetAutoDisplayMode(); - VerifyAutoDisplayMode(); - - SetNumberBoxDisplayMode(); - VerifyNumberBoxDisplayMode(); - - SetNumberPanelDisplayMode(); - VerifyNumberPanelDisplayMode(); - - SetComboBoxDisplayMode(); - VerifyComboBoxDisplayMode(); - - SetAutoDisplayMode(); - VerifyAutoDisplayMode(); - - SetNumberPanelDisplayMode(); - VerifyNumberPanelDisplayMode(); - - ChangeNumberOfPages(); - VerifyNumberOfPages("100"); - - SetAutoDisplayMode(); - VerifyAutoDisplayMode(); - - ChangeNumberOfPages(); - VerifyNumberOfPages("5"); - - VerifyAutoDisplayMode(); - - IncrementNumberOfPages(4); - VerifyNumberOfPages("9"); - - VerifyAutoDisplayMode(); - - IncrementNumberOfPages(1); - VerifyNumberOfPages("10"); - - VerifyAutoDisplayMode(); - - IncrementNumberOfPages(1); - VerifyNumberOfPages("11"); - - VerifyAutoDisplayMode(); - } - } - - void SelectValueInPagerComboBox(int index) - { - InputHelper.LeftClick(elements.GetPagerComboBox()); - InputHelper.LeftClick(elements.GetPagerComboBox().Children[index]); - } - - void SendValueToNumberBox(string value) - { - Edit textbox = FindTextBox(elements.GetPagerNumberBox()); - - Verify.IsNotNull(textbox); - - KeyboardHelper.EnterText(textbox, value); - KeyboardHelper.PressKey(Key.Enter); - Wait.ForIdle(); - } - - void SelectPageInNumberPanel(int index) - { - InputHelper.LeftClick(elements.GetNumberPanelButton("Page Button " + index)); - } - - Edit FindTextBox(UIObject parent) - { - foreach (UIObject elem in parent.Children) - { - if (elem.ClassName.Equals("TextBox")) - { - return new Edit(elem); - } - } - Log.Comment("Did not find TextBox for object " + parent.Name); - return null; - } - - int GetLastPageAsInt() - { - return Convert.ToInt32(GetLastPage()); - } - string GetLastPage() - { - return elements.GetNumberOfPagesTextBlock().GetText(); - } - - int GetPreviousPageAsInt() - { - return Convert.ToInt32(GetPreviousPage()); - } - string GetPreviousPage() - { - return elements.GetPreviousPageTextBlock().GetText(); - } - - int GetCurrentPageAsInt() - { - return Convert.ToInt32(GetCurrentPage()); - } - string GetCurrentPage() - { - return elements.GetCurrentPageTextBlock().GetText(); - } - - void ChangeNumberOfPages() - { - InputHelper.LeftClick(elements.GetNumberOfPagesSetterButton()); - } - - void IncrementNumberOfPages(int numberOfPagesToAdd) - { - for (int i = 0; i < numberOfPagesToAdd; i++) - { - InputHelper.LeftClick(elements.GetIncreaseNumberOfPagesButton()); - } - } - - void VerifyNumberOfPages(string expectedPages) - { - Verify.AreEqual(expectedPages, elements.GetNumberOfPagesTextBlock().GetText()); - } - - void VerifyNumberPanelContent(string expectedContent) - { - Verify.AreEqual(expectedContent, elements.GetNumberPanelContentTextBlock().GetText()); - } - - void VerifyPageChanged(int expectedPage) - { - Verify.AreEqual(expectedPage, GetCurrentPageAsInt()); - Verify.AreEqual(previousPage, GetPreviousPageAsInt()); - Log.Comment($"Changing to page {expectedPage} from {previousPage}"); - previousPage = expectedPage; - } - - void VerifyButton(UIObject button, Visibility expectedVisibility, bool shouldBeEnabled) - { - - if (button == elements.GetFirstPageButton()) - { - VerifyFirstPageButtonVisibility(expectedVisibility); - VerifyFirstPageButtonIsEnabled(shouldBeEnabled); - } - else if (button == elements.GetPreviousPageButton()) - { - VerifyPreviousPageButtonVisibility(expectedVisibility); - VerifyPreviousPageButtonIsEnabled(shouldBeEnabled); - } - else if (button == elements.GetNextPageButton()) - { - VerifyNextPageButtonVisibility(expectedVisibility); - VerifyNextPageButtonIsEnabled(shouldBeEnabled); - } - else if (button == elements.GetLastPageButton()) - { - VerifyLastPageButtonVisibility(expectedVisibility); - VerifyLastPageButtonIsEnabled(shouldBeEnabled); - } - } - - void VerifyFirstPageButtonVisibility(Visibility expected) - { - Verify.AreEqual(expected == Visibility.Visible, elements.GetFirstPageButtonVisibilityCheckBox().ToggleState == ToggleState.On); - } - - void VerifyFirstPageButtonIsEnabled(bool expected) - { - Verify.AreEqual(expected, elements.GetFirstPageButtonIsEnabledCheckBox().ToggleState == ToggleState.On); - } - - void VerifyPreviousPageButtonVisibility(Visibility expected) - { - Verify.AreEqual(expected == Visibility.Visible, elements.GetPreviousPageButtonVisibilityCheckBox().ToggleState == ToggleState.On); - } - - void VerifyPreviousPageButtonIsEnabled(bool expected) - { - Verify.AreEqual(expected, elements.GetPreviousPageButtonIsEnabledCheckBox().ToggleState == ToggleState.On); - } - - void VerifyNextPageButtonVisibility(Visibility expected) - { - Verify.AreEqual(expected == Visibility.Visible, elements.GetNextPageButtonVisibilityCheckBox().ToggleState == ToggleState.On); - } - - void VerifyNextPageButtonIsEnabled(bool expected) - { - Verify.AreEqual(expected, elements.GetNextPageButtonIsEnabledCheckBox().ToggleState == ToggleState.On); - } - - void VerifyLastPageButtonVisibility(Visibility expected) - { - Verify.AreEqual(expected == Visibility.Visible, elements.GetLastPageButtonVisibilityCheckBox().ToggleState == ToggleState.On); - } - - void VerifyLastPageButtonIsEnabled(bool expected) - { - Verify.AreEqual(expected, elements.GetLastPageButtonIsEnabledCheckBox().ToggleState == ToggleState.On); - } - - void SetFirstPageButtonVisibilityMode(ButtonVisibilityModes mode) - { - if (mode == ButtonVisibilityModes.Auto) - { - elements.GetFirstPageButtonVisibilityComboBox().SelectItemByName("AutoFirstPageButtonVisibilityItem"); - } - else if (mode == ButtonVisibilityModes.AlwaysVisible) - { - elements.GetFirstPageButtonVisibilityComboBox().SelectItemByName("AlwaysVisibleFirstPageButtonVisibilityItem"); - } - else if (mode == ButtonVisibilityModes.HiddenOnEdge) - { - elements.GetFirstPageButtonVisibilityComboBox().SelectItemByName("HiddenOnEdgeFirstPageButtonVisibilityItem"); - } - else if (mode == ButtonVisibilityModes.None) - { - elements.GetFirstPageButtonVisibilityComboBox().SelectItemByName("NoneFirstPageButtonVisibilityItem"); - } - } - - void SetPreviousPageButtonVisibilityMode(ButtonVisibilityModes mode) - { - if (mode == ButtonVisibilityModes.Auto) - { - elements.GetPreviousPageButtonVisibilityComboBox().SelectItemByName("AutoPreviousPageButtonVisibilityItem"); - } - else if (mode == ButtonVisibilityModes.AlwaysVisible) - { - elements.GetPreviousPageButtonVisibilityComboBox().SelectItemByName("AlwaysVisiblePreviousPageButtonVisibilityItem"); - } - else if (mode == ButtonVisibilityModes.HiddenOnEdge) - { - elements.GetPreviousPageButtonVisibilityComboBox().SelectItemByName("HiddenOnEdgePreviousPageButtonVisibilityItem"); - } - else if (mode == ButtonVisibilityModes.None) - { - elements.GetPreviousPageButtonVisibilityComboBox().SelectItemByName("NonePreviousPageButtonVisibilityItem"); - } - } - - void SetNextPageButtonVisibilityMode(ButtonVisibilityModes mode) - { - if (mode == ButtonVisibilityModes.Auto) - { - elements.GetNextPageButtonVisibilityComboBox().SelectItemByName("AutoNextPageButtonVisibilityItem"); - } - else if (mode == ButtonVisibilityModes.AlwaysVisible) - { - elements.GetNextPageButtonVisibilityComboBox().SelectItemByName("AlwaysVisibleNextPageButtonVisibilityItem"); - } - else if (mode == ButtonVisibilityModes.HiddenOnEdge) - { - elements.GetNextPageButtonVisibilityComboBox().SelectItemByName("HiddenOnEdgeNextPageButtonVisibilityItem"); - } - else if (mode == ButtonVisibilityModes.None) - { - elements.GetNextPageButtonVisibilityComboBox().SelectItemByName("NoneNextPageButtonVisibilityItem"); - } - } - - void SetLastPageButtonVisibilityMode(ButtonVisibilityModes mode) - { - if (mode == ButtonVisibilityModes.Auto) - { - elements.GetLastPageButtonVisibilityComboBox().SelectItemByName("AutoLastPageButtonVisibilityItem"); - } - else if (mode == ButtonVisibilityModes.AlwaysVisible) - { - elements.GetLastPageButtonVisibilityComboBox().SelectItemByName("AlwaysVisibleLastPageButtonVisibilityItem"); - } - else if (mode == ButtonVisibilityModes.HiddenOnEdge) - { - elements.GetLastPageButtonVisibilityComboBox().SelectItemByName("HiddenOnEdgeLastPageButtonVisibilityItem"); - } - else if (mode == ButtonVisibilityModes.None) - { - elements.GetLastPageButtonVisibilityComboBox().SelectItemByName("NoneLastPageButtonVisibilityItem"); - } - } - - void SetAutoDisplayMode() - { - SetDisplayMode("AutoDisplayModeItem"); - } - - void SetNumberBoxDisplayMode() - { - SetDisplayMode("NumberBoxDisplayModeItem"); - } - - void SetComboBoxDisplayMode() - { - SetDisplayMode("ComboBoxDisplayModeItem"); - } - - void SetNumberPanelDisplayMode() - { - SetDisplayMode("NumberPanelDisplayModeItem"); - } - - void SetDisplayMode(string mode) - { - elements.GetDisplayModeComboBox().SelectItemByName(mode); - } - - void VerifyAutoDisplayMode() - { - VerifyDisplayMode(DisplayModes.Auto); - } - - void VerifyNumberBoxDisplayMode() - { - VerifyDisplayMode(DisplayModes.NumberBox); - } - - void VerifyComboBoxDisplayMode() - { - VerifyDisplayMode(DisplayModes.ComboBox); - } - - void VerifyNumberPanelDisplayMode() - { - VerifyDisplayMode(DisplayModes.NumberPanel); - } - - void VerifyDisplayMode(DisplayModes mode) - { - switch (mode) - { - case DisplayModes.Auto: - if (Convert.ToInt32(elements.GetNumberOfPagesTextBlock().GetText()) < AutoDisplayModeThresholdValue) - { - VerifyComboBoxEnabled(); - VerifyNumberBoxDisabled(); - VerifyNumberPanelDisabled(); - } - else - { - VerifyNumberBoxEnabled(); - VerifyComboBoxDisabled(); - VerifyNumberPanelDisabled(); - } - break; - case DisplayModes.ComboBox: - VerifyComboBoxEnabled(); - VerifyNumberBoxDisabled(); - VerifyNumberPanelDisabled(); - break; - case DisplayModes.NumberBox: - VerifyComboBoxDisabled(); - VerifyNumberBoxEnabled(); - VerifyNumberPanelDisabled(); - break; - case DisplayModes.NumberPanel: - VerifyComboBoxDisabled(); - VerifyNumberBoxDisabled(); - VerifyNumberPanelEnabled(); - break; - default: - break; - } - } - - void VerifyComboBoxEnabled() - { - VerifyComboBoxVisibility(Visibility.Visible); - VerifyComboBoxIsEnabled(true); - } - - void VerifyNumberBoxEnabled() - { - VerifyNumberBoxVisibility(Visibility.Visible); - VerifyNumberBoxIsEnabled(true); - } - - void VerifyNumberPanelEnabled() - { - VerifyNumberPanelVisibility(Visibility.Visible); - } - - void VerifyComboBoxDisabled() - { - VerifyComboBoxVisibility(Visibility.Collapsed); - VerifyComboBoxIsEnabled(false); - } - - void VerifyNumberBoxDisabled() - { - VerifyNumberBoxVisibility(Visibility.Collapsed); - VerifyNumberBoxIsEnabled(false); - } - - void VerifyNumberPanelDisabled() - { - VerifyNumberPanelVisibility(Visibility.Collapsed); - } - - void VerifyComboBoxVisibility(Visibility expected) - { - Verify.AreEqual(expected == Visibility.Visible, elements.GetComboBoxVisibilityCheckBox().ToggleState == ToggleState.On); - } - - void VerifyComboBoxIsEnabled(bool expected) - { - Verify.AreEqual(expected, elements.GetComboBoxIsEnabledCheckBox().ToggleState == ToggleState.On); - } - - void VerifyNumberBoxVisibility(Visibility expected) - { - Verify.AreEqual(expected == Visibility.Visible, elements.GetNumberBoxVisibilityCheckBox().ToggleState == ToggleState.On); - } - - void VerifyNumberBoxIsEnabled(bool expected) - { - Verify.AreEqual(expected, elements.GetNumberBoxIsEnabledCheckBox().ToggleState == ToggleState.On); - } - - void VerifyNumberPanelVisibility(Visibility expected) - { - Verify.AreEqual(expected == Visibility.Visible, elements.GetNumberPanelVisibilityCheckBox().ToggleState == ToggleState.On); - } - } -} diff --git a/dev/Pager/PrototypePager/PageChangedEventArgs.cs b/dev/Pager/PrototypePager/PageChangedEventArgs.cs deleted file mode 100644 index 24ce1b3ec0..0000000000 --- a/dev/Pager/PrototypePager/PageChangedEventArgs.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; -using Windows.UI.Xaml; - -namespace MUXControlsTestApp -{ - public sealed class PageChangedEventArgs : EventArgs - { - public int CurrentPage { get; private set; } - public int PreviousPage { get; private set; } - - public PageChangedEventArgs(int OldIndex, int NewIndex) - { - PreviousPage = OldIndex; - CurrentPage = NewIndex; - } - } -} diff --git a/dev/Pager/PrototypePager/PrototypePager.Events.cs b/dev/Pager/PrototypePager/PrototypePager.Events.cs deleted file mode 100644 index ee6836e89e..0000000000 --- a/dev/Pager/PrototypePager/PrototypePager.Events.cs +++ /dev/null @@ -1,361 +0,0 @@ -using Microsoft.UI.Xaml.Controls; -using System; -using System.Collections; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.ComponentModel; -using System.Diagnostics; -using System.Linq; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices.ComTypes; -using System.Text; -using Windows.Foundation; -using Windows.UI; -using Windows.UI.Notifications; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Automation; -using Windows.UI.Xaml.Automation.Peers; -using Windows.UI.Xaml.Automation.Provider; -using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Controls.Primitives; -using Windows.UI.Xaml.Media; -using Windows.UI.Xaml.Media.Animation; - -namespace MUXControlsTestApp -{ - public sealed partial class PrototypePager : Control - { - private static void OnPropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args) - { - var sender = obj as PrototypePager; - DependencyProperty prop = args.Property; - - if (sender.templateApplied == false) - { - return; - } - else if (prop == FirstPageButtonVisibilityProperty) - { - sender.OnFirstPageButtonVisibilityChanged(); - } - else if (prop == PreviousPageButtonVisibilityProperty) - { - sender.OnPreviousPageButtonVisibilityChanged(); - } - else if (prop == NextPageButtonVisibilityProperty) - { - sender.OnNextPageButtonVisibilityChanged(); - } - else if (prop == LastPageButtonVisibilityProperty) - { - sender.OnLastPageButtonVisibilityChanged(); - } - else if (prop == PagerDisplayModeProperty) - { - sender.OnPagerDisplayModeChanged(); - } - else if (prop == NumberOfPagesProperty) - { - sender.OnNumberOfPagesChanged(); - } - else if (prop == SelectedIndexProperty) - { - sender.OnSelectedIndexChanged((int)args.OldValue - 1); - } - } - - private void OnSelectedIndexChanged(int previousIndex) - { - PreviousPageIndex = previousIndex; - if (PagerComboBox != null) - { - PagerComboBox.SelectedIndex = SelectedIndex - 1; - } - - DisablePageButtonsOnEdge(); - - if (PagerNumberPanel != null) - { - UpdateNumberPanel(); - } - PageChanged?.Invoke(this, new PageChangedEventArgs(PreviousPageIndex, SelectedIndex - 1)); - } - - private void OnNumberOfPagesChanged() - { - NumberPanelEndStateStartIndex = NumberOfPages - 3; - TemplateSettings.Pages?.Clear(); - foreach (var item in Enumerable.Range(1, NumberOfPages).Cast()) - { - TemplateSettings.Pages.Add(item); - } - - if (PagerNumberPanel != null) - { - UpdateNumberPanel(); - } - - DisablePageButtonsOnEdge(); - OnPagerDisplayModeChanged(); - } - - private void OnComboBoxSelectionChanged() - { - if (PagerComboBox.SelectedIndex == -1) - { - PagerComboBox.SelectedIndex = SelectedIndex - 1; - } - else - { - SelectedIndex = PagerComboBox.SelectedIndex + 1; - } - } - private void OnPagerDisplayModeChanged() - { - switch (this.PagerDisplayMode) - { - case PagerDisplayModes.Auto: - VisualStateManager.GoToState(this, NumberOfPages < AutoDisplayModeNumberOfPagesThreshold ? ComboBoxVisibleVisualState : NumberBoxVisibleVisualState, false); - break; - case PagerDisplayModes.NumberBox: - VisualStateManager.GoToState(this, NumberBoxVisibleVisualState, false); - break; - case PagerDisplayModes.ComboBox: - VisualStateManager.GoToState(this, ComboBoxVisibleVisualState, false); - break; - case PagerDisplayModes.NumberPanel: - VisualStateManager.GoToState(this, NumberPanelVisibleVisualState, false); - break; - } - } - - private void OnLastPageButtonVisibilityChanged() - { - - switch (this.LastPageButtonVisibility) - { - case ButtonVisibilityMode.Auto: - case ButtonVisibilityMode.AlwaysVisible: - VisualStateManager.GoToState(this, LastPageButtonVisibleVisualState, false); - break; - case ButtonVisibilityMode.None: - VisualStateManager.GoToState(this, LastPageButtonNotVisibleVisualState, false); - break; - case ButtonVisibilityMode.HiddenOnEdge: - UpdateHiddenOnEdgeButtons(); - break; - default: - break; - } - } - - private void OnNextPageButtonVisibilityChanged() - { - switch (this.NextPageButtonVisibility) - { - case ButtonVisibilityMode.Auto: - case ButtonVisibilityMode.AlwaysVisible: - VisualStateManager.GoToState(this, NextPageButtonVisibleVisualState, false); - break; - case ButtonVisibilityMode.None: - VisualStateManager.GoToState(this, NextPageButtonNotVisibleVisualState, false); - break; - case ButtonVisibilityMode.HiddenOnEdge: - UpdateHiddenOnEdgeButtons(); - break; - default: - break; - } - } - - private void OnPreviousPageButtonVisibilityChanged() - { - switch (this.PreviousPageButtonVisibility) - { - case ButtonVisibilityMode.Auto: - case ButtonVisibilityMode.AlwaysVisible: - VisualStateManager.GoToState(this, PreviousPageButtonVisibleVisualState, false); - break; - case ButtonVisibilityMode.None: - VisualStateManager.GoToState(this, PreviousPageButtonNotVisibleVisualState, false); - break; - case ButtonVisibilityMode.HiddenOnEdge: - UpdateHiddenOnEdgeButtons(); - break; - default: - break; - } - } - - private void OnFirstPageButtonVisibilityChanged() - { - switch (this.FirstPageButtonVisibility) - { - case ButtonVisibilityMode.Auto: - case ButtonVisibilityMode.AlwaysVisible: - VisualStateManager.GoToState(this, FirstPageButtonVisibleVisualState, false); - break; - case ButtonVisibilityMode.None: - VisualStateManager.GoToState(this, FirstPageButtonNotVisibleVisualState, false); - break; - case ButtonVisibilityMode.HiddenOnEdge: - UpdateHiddenOnEdgeButtons(); - break; - default: - break; - } - } - - private void DisablePageButtonsOnEdge() - { - if (SelectedIndex == 1) - { - VisualStateManager.GoToState(this, FirstPageButtonDisabledVisualState, false); - VisualStateManager.GoToState(this, PreviousPageButtonDisabledVisualState, false); - VisualStateManager.GoToState(this, NextPageButtonEnabledVisualState, false); - VisualStateManager.GoToState(this, LastPageButtonEnabledVisualState, false); - } - else if (SelectedIndex == NumberOfPages) - { - VisualStateManager.GoToState(this, FirstPageButtonEnabledVisualState, false); - VisualStateManager.GoToState(this, PreviousPageButtonEnabledVisualState, false); - VisualStateManager.GoToState(this, NextPageButtonDisabledVisualState, false); - VisualStateManager.GoToState(this, LastPageButtonDisabledVisualState, false); - } - else - { - VisualStateManager.GoToState(this, FirstPageButtonEnabledVisualState, false); - VisualStateManager.GoToState(this, PreviousPageButtonEnabledVisualState, false); - VisualStateManager.GoToState(this, NextPageButtonEnabledVisualState, false); - VisualStateManager.GoToState(this, LastPageButtonEnabledVisualState, false); - } - UpdateHiddenOnEdgeButtons(); - } - - private void UpdateHiddenOnEdgeButtons() - { - if (this.FirstPageButtonVisibility == ButtonVisibilityMode.HiddenOnEdge) - { - if (this.SelectedIndex != 1) - { - VisualStateManager.GoToState(this, FirstPageButtonVisibleVisualState, false); - } - else - { - VisualStateManager.GoToState(this, FirstPageButtonNotVisibleVisualState, false); - } - } - - if (this.PreviousPageButtonVisibility == ButtonVisibilityMode.HiddenOnEdge) - { - if (this.SelectedIndex != 1) - { - VisualStateManager.GoToState(this, PreviousPageButtonVisibleVisualState, false); - } - else - { - VisualStateManager.GoToState(this, PreviousPageButtonNotVisibleVisualState, false); - } - } - - if (this.NextPageButtonVisibility == ButtonVisibilityMode.HiddenOnEdge) - { - if (this.SelectedIndex != this.NumberOfPages) - { - VisualStateManager.GoToState(this, NextPageButtonVisibleVisualState, false); - } - else - { - VisualStateManager.GoToState(this, NextPageButtonNotVisibleVisualState, false); - } - } - - if (this.LastPageButtonVisibility == ButtonVisibilityMode.HiddenOnEdge) - { - if (this.SelectedIndex != this.NumberOfPages) - { - VisualStateManager.GoToState(this, LastPageButtonVisibleVisualState, false); - } - else - { - VisualStateManager.GoToState(this, LastPageButtonNotVisibleVisualState, false); - } - } - } - - /* Events regarding the number panel display mode */ - - private void OnElementPrepared(ItemsRepeater sender, ItemsRepeaterElementPreparedEventArgs args) - { - if (args.Element == null || args.Element.GetType() != typeof(Button)) - { - return; - } - - (args.Element as Button).Click += OnNumberPanelButtonClicked; - (args.Element as FrameworkElement).Loaded += MoveIdentifierToCurrentPage; - } - - private void OnElementClearing(ItemsRepeater sender, ItemsRepeaterElementClearingEventArgs args) - { - if (args.Element.GetType() == typeof(Button)) - { - (args.Element as Button).Click -= OnNumberPanelButtonClicked; - (args.Element as Button).Loaded -= MoveIdentifierToCurrentPage; - } - } - - private void OnNumberPanelButtonClicked(object sender, RoutedEventArgs args) - { - SelectedIndex = (int)(sender as Button).Content; - } - - private void MoveIdentifierToCurrentPage(object sender, RoutedEventArgs args) - { - var element = sender as FrameworkElement; - - if ((int)element.Tag == SelectedIndex) - { - var boundingRect = LayoutInformation.GetLayoutSlot(element); - var numberPanelRectMargins = NumberPanelCurrentPageIdentifier.Margin; - NumberPanelCurrentPageIdentifier.Margin = new Thickness(boundingRect.Left, numberPanelRectMargins.Top, numberPanelRectMargins.Right, numberPanelRectMargins.Bottom); - } - } - - private void MoveIdentifierToCurrentPage() - { - for (int i = 0; i < NumberOfPages; i++) - { - var element = PagerNumberPanel.TryGetElement(i); - if (element != null) - { - MoveIdentifierToCurrentPage(element, null); - } - } - } - - private void UpdateNumberPanel() - { - - if (NumberOfPages <= MaxNumberOfElementsInRepeater) // Show all pages - { - PagerNumberPanel.ItemsSource = TemplateSettings.Pages; - MoveIdentifierToCurrentPage(); - } - else if (SelectedIndex < NumberPanelMiddleStateStartIndex) // Start State - { - PagerNumberPanel.ItemsSource = NumberPanelLeftMostState; - } - else if (SelectedIndex >= NumberPanelEndStateStartIndex) // End State - { - PagerNumberPanel.ItemsSource = NumberPanelRightMostState; - } - else // Middle State - { - PagerNumberPanel.ItemsSource = NumberPanelMiddleState; - } - } - - - } -} diff --git a/dev/Pager/PrototypePager/PrototypePager.Properties.cs b/dev/Pager/PrototypePager/PrototypePager.Properties.cs deleted file mode 100644 index e9950b3644..0000000000 --- a/dev/Pager/PrototypePager/PrototypePager.Properties.cs +++ /dev/null @@ -1,187 +0,0 @@ -using Microsoft.UI.Xaml.Controls; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; - -namespace MUXControlsTestApp -{ - public sealed partial class PrototypePager : Control - { - public object PagerElementFactory - { - get { return (object)GetValue(PagerElementFactoryProperty); } - } - - private static readonly DependencyProperty PagerElementFactoryProperty = - DependencyProperty.Register("PagerElementFactory", typeof(object), typeof(PrototypePager), new PropertyMetadata(new PrototypePagerElementFactory())); - - public PagerDisplayModes PagerDisplayMode - { - get { return (PagerDisplayModes)GetValue(PagerDisplayModeProperty); } - set { SetValue(PagerDisplayModeProperty, value); } - } - public static readonly DependencyProperty PagerDisplayModeProperty = - DependencyProperty.Register("PagerDisplayMode", typeof(PagerDisplayModes), typeof(PrototypePager), new PropertyMetadata(PagerDisplayModes.Auto, OnPropertyChanged)); - - /* Universal Pager Properties - * - */ - public PagerTemplateSettings TemplateSettings - { - get { return (PagerTemplateSettings)GetValue(TemplateSettingsProperty); } - } - private static readonly DependencyProperty TemplateSettingsProperty = - DependencyProperty.Register("TemplateSettings", typeof(PagerTemplateSettings), typeof(PrototypePager), new PropertyMetadata(default(PagerTemplateSettings))); - - public int NumberOfPages - { - get { return (int)GetValue(NumberOfPagesProperty); } - set { SetValue(NumberOfPagesProperty, value); } - } - public static readonly DependencyProperty NumberOfPagesProperty = - DependencyProperty.Register("NumberOfPages", typeof(int), typeof(PrototypePager), new PropertyMetadata(5, OnPropertyChanged)); - - public int SelectedIndex - { - get { return (int)GetValue(SelectedIndexProperty); } - set { SetValue(SelectedIndexProperty, value); } - } - public static readonly DependencyProperty SelectedIndexProperty = - DependencyProperty.Register("SelectedIndex", typeof(int), typeof(PrototypePager), new PropertyMetadata(1, OnPropertyChanged)); - - /* NumberBox & ComboBox Text Properties - * - */ - public string PrefixText - { - get { return (string)GetValue(PrefixTextProperty); } - set { SetValue(PrefixTextProperty, value); } - } - public static readonly DependencyProperty PrefixTextProperty = - DependencyProperty.Register("PrefixText", typeof(string), typeof(PrototypePager), new PropertyMetadata("Page")); - - public string SuffixText - { - get { return (string)GetValue(SuffixTextProperty); } - set { SetValue(SuffixTextProperty, value); } - } - public static readonly DependencyProperty SuffixTextProperty = - DependencyProperty.Register("SuffixText", typeof(string), typeof(PrototypePager), new PropertyMetadata("/")); - - /* Chevron Buttons Text Properties - * - */ - public string FirstPageButtonText - { - get { return (string)GetValue(FirstPageButtonTextProperty); } - set { SetValue(FirstPageButtonTextProperty, value); } - } - public static readonly DependencyProperty FirstPageButtonTextProperty = - DependencyProperty.Register("FirstPageButtonText", typeof(string), typeof(PrototypePager), new PropertyMetadata("")); - public string PreviousPageButtonText - { - get { return (string)GetValue(PreviousPageButtonTextProperty); } - set { SetValue(PreviousPageButtonTextProperty, value); } - } - public static readonly DependencyProperty PreviousPageButtonTextProperty = - DependencyProperty.Register("PreviousPageButtonText", typeof(string), typeof(PrototypePager), new PropertyMetadata("")); - public string NextPageButtonText - { - get { return (string)GetValue(NextPageButtonTextProperty); } - set { SetValue(NextPageButtonTextProperty, value); } - } - public static readonly DependencyProperty NextPageButtonTextProperty = - DependencyProperty.Register("NextPageButtonText", typeof(string), typeof(PrototypePager), new PropertyMetadata("")); - public string LastPageButtonText - { - get { return (string)GetValue(LastPageButtonTextProperty); } - set { SetValue(LastPageButtonTextProperty, value); } - } - public static readonly DependencyProperty LastPageButtonTextProperty = - DependencyProperty.Register("LastPageButtonText", typeof(string), typeof(PrototypePager), new PropertyMetadata("")); - - /* Chevron Buttons Visibility Properties - * - */ - - public ButtonVisibilityMode FirstPageButtonVisibility - { - get { return (ButtonVisibilityMode)GetValue(FirstPageButtonVisibilityProperty); } - set { SetValue(FirstPageButtonVisibilityProperty, value); } - } - public static readonly DependencyProperty FirstPageButtonVisibilityProperty = - DependencyProperty.Register("FirstPageButtonVisibility", typeof(ButtonVisibilityMode), typeof(PrototypePager), new PropertyMetadata(ButtonVisibilityMode.Auto, OnPropertyChanged)); - - public ButtonVisibilityMode PreviousPageButtonVisibility - { - get { return (ButtonVisibilityMode)GetValue(PreviousPageButtonVisibilityProperty); } - set { SetValue(PreviousPageButtonVisibilityProperty, value); } - } - public static readonly DependencyProperty PreviousPageButtonVisibilityProperty = - DependencyProperty.Register("PreviousPageButtonVisibility", typeof(ButtonVisibilityMode), typeof(PrototypePager), new PropertyMetadata(ButtonVisibilityMode.Auto, OnPropertyChanged)); - - public ButtonVisibilityMode NextPageButtonVisibility - { - get { return (ButtonVisibilityMode)GetValue(NextPageButtonVisibilityProperty); } - set { SetValue(NextPageButtonVisibilityProperty, value); } - } - public static readonly DependencyProperty NextPageButtonVisibilityProperty = - DependencyProperty.Register("NextPageButtonVisibility", typeof(ButtonVisibilityMode), typeof(PrototypePager), new PropertyMetadata(ButtonVisibilityMode.Auto, OnPropertyChanged)); - - public ButtonVisibilityMode LastPageButtonVisibility - { - get { return (ButtonVisibilityMode)GetValue(LastPageButtonVisibilityProperty); } - set { SetValue(LastPageButtonVisibilityProperty, value); } - } - public static readonly DependencyProperty LastPageButtonVisibilityProperty = - DependencyProperty.Register("LastPageButtonVisibility", typeof(ButtonVisibilityMode), typeof(PrototypePager), new PropertyMetadata(ButtonVisibilityMode.Auto, OnPropertyChanged)); - - /* NumberPanel Properties - * - */ - public int NumberOfIndicesShowing - { - get { return (int)GetValue(NumberOfIndicesShowingProperty); } - set { SetValue(NumberOfIndicesShowingProperty, value); } - } - public static readonly DependencyProperty NumberOfIndicesShowingProperty = - DependencyProperty.Register("NumberOfIndicesShowing", typeof(int), typeof(PrototypePager), new PropertyMetadata(5)); - - public bool EllipsisEnabled - { - get { return (bool)GetValue(EllipsisEnabledProperty); } - set { SetValue(EllipsisEnabledProperty, value); } - } - public static readonly DependencyProperty EllipsisEnabledProperty = - DependencyProperty.Register("EllipsisEnabled", typeof(bool), typeof(PrototypePager), new PropertyMetadata(true)); - - public bool EllipsisShowFirstAndLast - { - get { return (bool)GetValue(EllipsisShowFirstAndLastProperty); } - set { SetValue(EllipsisShowFirstAndLastProperty, value); } - } - public static readonly DependencyProperty EllipsisShowFirstAndLastProperty = - DependencyProperty.Register("EllipsisShowFirstAndLast", typeof(bool), typeof(PrototypePager), new PropertyMetadata(true)); - - public int EllipsisMaxBefore - { - get { return (int)GetValue(EllipsisMaxBeforeProperty); } - set { SetValue(EllipsisMaxBeforeProperty, value); } - } - public static readonly DependencyProperty EllipsisMaxBeforeProperty = - DependencyProperty.Register("EllipsisMaxBefore", typeof(int), typeof(PrototypePager), new PropertyMetadata(0)); - - public int EllipsisMaxAfter - { - get { return (int)GetValue(EllipsisMaxAfterProperty); } - set { SetValue(EllipsisMaxAfterProperty, value); } - } - public static readonly DependencyProperty EllipsisMaxAfterProperty = - DependencyProperty.Register("EllipsisMaxAfter", typeof(int), typeof(PrototypePager), new PropertyMetadata(0)); - } -} diff --git a/dev/Pager/PrototypePager/PrototypePager.TestHooks.cs b/dev/Pager/PrototypePager/PrototypePager.TestHooks.cs deleted file mode 100644 index 94165feb55..0000000000 --- a/dev/Pager/PrototypePager/PrototypePager.TestHooks.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Microsoft.UI.Xaml.Controls; -using System; -using System.Collections.Generic; -using System.Text; -using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Shapes; - -namespace MUXControlsTestApp -{ - public sealed partial class PrototypePager : Control - { - public Button FirstPageButtonTestHook, PreviousPageButtonTestHook, NextPageButtonTestHook, LastPageButtonTestHook; - public NumberBox NumberBoxDisplayTestHook; - public ComboBox ComboBoxDisplayTestHook; - public ItemsRepeater NumberPanelDisplayTestHook; - public Rectangle NumberPanelCurrentPageIdentifierTestHook; - } -} diff --git a/dev/Pager/PrototypePager/PrototypePager.cs b/dev/Pager/PrototypePager/PrototypePager.cs deleted file mode 100644 index a55647a3d3..0000000000 --- a/dev/Pager/PrototypePager/PrototypePager.cs +++ /dev/null @@ -1,162 +0,0 @@ -using Microsoft.UI.Xaml.Controls; -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Diagnostics; -using System.Linq; -using System.Runtime.InteropServices.WindowsRuntime; -using Windows.Foundation; -using Windows.UI; -using Windows.UI.Core; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Data; -using Windows.UI.Xaml.Documents; -using Windows.UI.Xaml.Input; -using Windows.UI.Xaml.Media; -using Windows.UI.Xaml.Shapes; - -// The Templated Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234235 - -namespace MUXControlsTestApp -{ - public sealed partial class PrototypePager : Control - { - public enum PagerDisplayModes { Auto, ComboBox, NumberBox, NumberPanel, } - public enum ButtonVisibilityMode { Auto, AlwaysVisible, HiddenOnEdge, None, } - - private bool templateApplied = false; - - private Button FirstPageButton, PreviousPageButton, NextPageButton, LastPageButton; - private ComboBox PagerComboBox; - private NumberBox PagerNumberBox; - private ItemsRepeater PagerNumberPanel; - private Rectangle NumberPanelCurrentPageIdentifier; - - private static int AutoDisplayModeNumberOfPagesThreshold = 10; // This integer determines when to switch between NumberBoxDisplayMode and ComboBoxDisplayMode - private static int MaxNumberOfElementsInRepeater = 7; - private static int NumberPanelMiddleStateStartIndex = 5; - private int NumberPanelEndStateStartIndex; - - private static IconElement LeftEllipse = new SymbolIcon(Symbol.More); - private static IconElement RightEllipse = new SymbolIcon(Symbol.More); - - private ObservableCollection NumberPanelLeftMostState - { - get { return new ObservableCollection() { 1, 2, 3, 4, 5, RightEllipse, NumberOfPages }; } - } - private ObservableCollection NumberPanelRightMostState - { - get { return new ObservableCollection() { 1, LeftEllipse, NumberOfPages - 4, NumberOfPages - 3, NumberOfPages - 2, NumberOfPages - 1, NumberOfPages }; } - } - private ObservableCollection NumberPanelMiddleState - { - get { return new ObservableCollection() { 1, LeftEllipse, SelectedIndex - 1, SelectedIndex, SelectedIndex + 1, RightEllipse, NumberOfPages, }; } - } - - - private static string NumberBoxVisibleVisualState = "NumberBoxVisible"; - private static string ComboBoxVisibleVisualState = "ComboBoxVisible"; - private static string NumberPanelVisibleVisualState = "NumberPanelVisible"; - - private static string FirstPageButtonVisibleVisualState = "FirstPageButtonVisible"; - private static string FirstPageButtonNotVisibleVisualState = "FirstPageButtonCollapsed"; - private static string FirstPageButtonEnabledVisualState = "FirstPageButtonEnabled"; - private static string FirstPageButtonDisabledVisualState = "FirstPageButtonDisabled"; - - private static string PreviousPageButtonVisibleVisualState = "PreviousPageButtonVisible"; - private static string PreviousPageButtonNotVisibleVisualState = "PreviousPageButtonCollapsed"; - private static string PreviousPageButtonEnabledVisualState = "PreviousPageButtonEnabled"; - private static string PreviousPageButtonDisabledVisualState = "PreviousPageButtonDisabled"; - - private static string NextPageButtonVisibleVisualState = "NextPageButtonVisible"; - private static string NextPageButtonNotVisibleVisualState = "NextPageButtonCollapsed"; - private static string NextPageButtonEnabledVisualState = "NextPageButtonEnabled"; - private static string NextPageButtonDisabledVisualState = "NextPageButtonDisabled"; - - private static string LastPageButtonVisibleVisualState = "LastPageButtonVisible"; - private static string LastPageButtonNotVisibleVisualState = "LastPageButtonCollapsed"; - private static string LastPageButtonEnabledVisualState = "LastPageButtonEnabled"; - private static string LastPageButtonDisabledVisualState = "LastPageButtonDisabled"; - - private int PreviousPageIndex = -1; - - public event TypedEventHandler PageChanged; - - public PrototypePager() - { - this.DefaultStyleKey = typeof(PrototypePager); - } - - protected override void OnApplyTemplate() - { - SetValue(TemplateSettingsProperty, new PagerTemplateSettings(this)); - NumberPanelEndStateStartIndex = NumberOfPages - 3; - - // Grab UIElements for later - FirstPageButton = GetTemplateChild("FirstPageButton") as Button; - PreviousPageButton = GetTemplateChild("PreviousPageButton") as Button; - NextPageButton = GetTemplateChild("NextPageButton") as Button; - LastPageButton = GetTemplateChild("LastPageButton") as Button; - PagerComboBox = GetTemplateChild("ComboBoxDisplay") as ComboBox; - PagerNumberBox = GetTemplateChild("NumberBoxDisplay") as NumberBox; - PagerNumberPanel = GetTemplateChild("NumberPanelItemsRepeater") as ItemsRepeater; - NumberPanelCurrentPageIdentifier = GetTemplateChild("NumberPanelCurrentPageIdentifier") as Rectangle; - - // Attach TestHooks - FirstPageButtonTestHook = FirstPageButton; - PreviousPageButtonTestHook = PreviousPageButton; - NextPageButtonTestHook = NextPageButton; - LastPageButtonTestHook = LastPageButton; - NumberBoxDisplayTestHook = PagerNumberBox; - ComboBoxDisplayTestHook = PagerComboBox; - NumberPanelDisplayTestHook = PagerNumberPanel; - NumberPanelCurrentPageIdentifierTestHook = NumberPanelCurrentPageIdentifier; - - // Attach click events - if (FirstPageButton != null) - { - FirstPageButton.Click += (s, e) => { SelectedIndex = 1; }; - } - if (PreviousPageButton != null) - { - PreviousPageButton.Click += (s, e) => { SelectedIndex -= 1; }; - } - if (NextPageButton != null) - { - NextPageButton.Click += (s, e) => { SelectedIndex += 1; }; - } - if (LastPageButton != null) - { - LastPageButton.Click += (s, e) => { SelectedIndex = NumberOfPages; }; - } - if (PagerComboBox != null) - { - PagerComboBox.SelectedIndex = SelectedIndex - 1; - PagerComboBox.SelectionChanged += (s, e) => { OnComboBoxSelectionChanged(); }; - } - if (PagerNumberPanel != null) - { - UpdateNumberPanel(); - PagerNumberPanel.ElementPrepared += OnElementPrepared; - PagerNumberPanel.ElementClearing += OnElementClearing; - } - - OnPagerDisplayModeChanged(); - - templateApplied = true; - // This is for the initial page being loaded whatever page that might be. - PageChanged?.Invoke(this, new PageChangedEventArgs(PreviousPageIndex, SelectedIndex - 1)); - } - } - - public sealed class PagerTemplateSettings : DependencyObject - { - public ObservableCollection Pages { get; set; } - - public PagerTemplateSettings(PrototypePager pager) - { - Pages = new ObservableCollection(Enumerable.Range(1, pager.NumberOfPages).Cast()); - } - } -} diff --git a/dev/Pager/PrototypePager/PrototypePager.projitems b/dev/Pager/PrototypePager/PrototypePager.projitems deleted file mode 100644 index 7fe7181e8e..0000000000 --- a/dev/Pager/PrototypePager/PrototypePager.projitems +++ /dev/null @@ -1,25 +0,0 @@ - - - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - true - 675373ce-6acd-4c4b-a009-09a3c9b218e6 - - - PrototypePager - - - - Designer - MSBuild:Compile - - - - - - - - - - - \ No newline at end of file diff --git a/dev/Pager/PrototypePager/PrototypePagerElementFactory.cs b/dev/Pager/PrototypePager/PrototypePagerElementFactory.cs deleted file mode 100644 index f4a6040eff..0000000000 --- a/dev/Pager/PrototypePager/PrototypePagerElementFactory.cs +++ /dev/null @@ -1,39 +0,0 @@ -using Microsoft.UI.Xaml.Controls; -using System; -using System.Collections.Generic; -using System.Text; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; - -namespace MUXControlsTestApp -{ - public class PrototypePagerElementFactory : ElementFactory - { - protected override UIElement GetElementCore(Microsoft.UI.Xaml.Controls.ElementFactoryGetArgs args) - { - if (args.Data == null) - { - return null; - } - Type dataType = args.Data.GetType(); - - if (dataType == typeof(int)) - { - return new Button() { - Content = args.Data, - Tag = args.Data, - Style = (Style)App.Current.Resources["NumberPanelButtonStyle"], - }; - } - else - { - (args.Data as FrameworkElement).MinWidth = (double)App.Current.Resources["NumberPanelButtonWidth"]; - return (UIElement)args.Data; - } - } - - protected override void RecycleElementCore(Microsoft.UI.Xaml.Controls.ElementFactoryRecycleArgs args) - { - } - } -} diff --git a/dev/Pager/TestUI/PagerPage.xaml.cs b/dev/Pager/TestUI/PagerPage.xaml.cs deleted file mode 100644 index 92958aab51..0000000000 --- a/dev/Pager/TestUI/PagerPage.xaml.cs +++ /dev/null @@ -1,249 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See LICENSE in the project root for license information. - -using System; -using Windows.UI.Xaml; -using Windows.UI.Xaml.Controls; -using Windows.UI.Xaml.Controls.Primitives; -using Windows.UI.Xaml.Media; -using Windows.UI.Xaml.Markup; -using Windows.UI; -using System.Windows.Input; - -using System.Collections.ObjectModel; -using Microsoft.UI.Xaml.Controls; -using Windows.Devices.AllJoyn; -using System.Diagnostics; -using System.Collections.Generic; -using System.Collections.Specialized; -using Windows.Foundation; - -namespace MUXControlsTestApp -{ - [TopLevelTestPage(Name = "Pager")] - public sealed partial class PagerPage : TestPage - { - public PagerPage() - { - this.InitializeComponent(); - this.Loaded += OnLoad; - } - - private void OnLoad(object sender, RoutedEventArgs args) - { - PagerDisplayModeComboBox.SelectionChanged += OnDisplayModeChanged; - FirstPageButtonVisibilityComboBox.SelectionChanged += OnFirstButtonVisibilityChanged; - PreviousPageButtonVisibilityComboBox.SelectionChanged += OnPreviousButtonVisibilityChanged; - NextPageButtonVisibilityComboBox.SelectionChanged += OnNextButtonVisibilityChanged; - LastPageButtonVisibilityComboBox.SelectionChanged += OnLastButtonVisibilityChanged; - - TestPager.NumberPanelDisplayTestHook.ElementPrepared += OnElementPrepared; - - - NumberBoxVisibilityCheckBox.IsChecked = TestPager.NumberBoxDisplayTestHook.Visibility == Visibility.Visible; - ComboBoxVisibilityCheckBox.IsChecked = TestPager.ComboBoxDisplayTestHook.Visibility == Visibility.Visible; - NumberPanelVisibilityCheckBox.IsChecked = TestPager.NumberPanelDisplayTestHook.Visibility == Visibility.Visible; - NumberBoxIsEnabledCheckBox.IsChecked = TestPager.NumberBoxDisplayTestHook.IsEnabled; - ComboBoxIsEnabledCheckBox.IsChecked = TestPager.ComboBoxDisplayTestHook.IsEnabled; - UpdateNumberPanelContentTextBlock(this, null); - } - - private void OnElementPrepared(ItemsRepeater sender, ItemsRepeaterElementPreparedEventArgs args) - { - var element = args.Element as FrameworkElement; - if (element.Tag != null) - { - element.Name = "Page Button " + element.Tag; - } - } - - private void UpdateNumberPanelContentTextBlock(object sender, NotifyCollectionChangedEventArgs args) - { - NumberPanelContentTextBlock.Text = ""; - foreach (var item in TestPager.NumberPanelDisplayTestHook.ItemsSource as ObservableCollection) - { - if (item.GetType() == typeof(SymbolIcon)) - { - NumberPanelContentTextBlock.Text += (item as SymbolIcon).Symbol; - } - else - { - NumberPanelContentTextBlock.Text += item; - } - } - } - - private void NumberOfPagesSetterButtonClicked(object sender, RoutedEventArgs args) - { - if (TestPager.NumberOfPages == 5) - { - TestPager.NumberOfPages = 100; - NumberOfPagesSetterButton.Content = "Set NumberOfPages to 5"; - } - else - { - TestPager.NumberOfPages = 5; - NumberOfPagesSetterButton.Content = "Set NumberOfPages to 100"; - } - - NumberBoxVisibilityCheckBox.IsChecked = TestPager.NumberBoxDisplayTestHook.Visibility == Visibility.Visible; - ComboBoxVisibilityCheckBox.IsChecked = TestPager.ComboBoxDisplayTestHook.Visibility == Visibility.Visible; - NumberPanelVisibilityCheckBox.IsChecked = TestPager.NumberPanelDisplayTestHook.Visibility == Visibility.Visible; - NumberBoxIsEnabledCheckBox.IsChecked = TestPager.NumberBoxDisplayTestHook.IsEnabled; - ComboBoxIsEnabledCheckBox.IsChecked = TestPager.ComboBoxDisplayTestHook.IsEnabled; - } - - private void IncreaseNumberOfPagesButtonClicked(object sender, RoutedEventArgs args) - { - TestPager.NumberOfPages += 1; - - NumberBoxVisibilityCheckBox.IsChecked = TestPager.NumberBoxDisplayTestHook.Visibility == Visibility.Visible; - ComboBoxVisibilityCheckBox.IsChecked = TestPager.ComboBoxDisplayTestHook.Visibility == Visibility.Visible; - NumberPanelVisibilityCheckBox.IsChecked = TestPager.NumberPanelDisplayTestHook.Visibility == Visibility.Visible; - NumberBoxIsEnabledCheckBox.IsChecked = TestPager.NumberBoxDisplayTestHook.IsEnabled; - ComboBoxIsEnabledCheckBox.IsChecked = TestPager.ComboBoxDisplayTestHook.IsEnabled; - } - - private void OnPageChanged(PrototypePager sender, PageChangedEventArgs args) - { - UpdateNumberPanelContentTextBlock(this, null); - PreviousPageTextBlock.Text = args.PreviousPage.ToString(); - CurrentPageTextBlock.Text = args.CurrentPage.ToString(); - - FirstPageButtonVisibilityCheckBox.IsChecked = TestPager.FirstPageButtonTestHook.Visibility == Visibility.Visible; - PreviousPageButtonVisibilityCheckBox.IsChecked = TestPager.PreviousPageButtonTestHook.Visibility == Visibility.Visible; - NextPageButtonVisibilityCheckBox.IsChecked = TestPager.NextPageButtonTestHook.Visibility == Visibility.Visible; - LastPageButtonVisibilityCheckBox.IsChecked = TestPager.LastPageButtonTestHook.Visibility == Visibility.Visible; - - FirstPageButtonIsEnabledCheckBox.IsChecked = TestPager.FirstPageButtonTestHook.IsEnabled; - PreviousPageButtonIsEnabledCheckBox.IsChecked = TestPager.PreviousPageButtonTestHook.IsEnabled; - NextPageButtonIsEnabledCheckBox.IsChecked = TestPager.NextPageButtonTestHook.IsEnabled; - LastPageButtonIsEnabledCheckBox.IsChecked = TestPager.LastPageButtonTestHook.IsEnabled; - } - - private void OnDisplayModeChanged(object sender, SelectionChangedEventArgs e) - { - var item = PagerDisplayModeComboBox.SelectedItem; - - if (item == this.AutoDisplayModeItem) - { - TestPager.PagerDisplayMode = PrototypePager.PagerDisplayModes.Auto; - } - else if (item == this.NumberBoxDisplayModeItem) - { - TestPager.PagerDisplayMode = PrototypePager.PagerDisplayModes.NumberBox; - } - else if (item == this.ComboBoxDisplayModeItem) - { - TestPager.PagerDisplayMode = PrototypePager.PagerDisplayModes.ComboBox; - } - else if (item == this.NumberPanelDisplayModeItem) - { - TestPager.PagerDisplayMode = PrototypePager.PagerDisplayModes.NumberPanel; - } - - NumberBoxVisibilityCheckBox.IsChecked = TestPager.NumberBoxDisplayTestHook.Visibility == Visibility.Visible; - ComboBoxVisibilityCheckBox.IsChecked = TestPager.ComboBoxDisplayTestHook.Visibility == Visibility.Visible; - NumberPanelVisibilityCheckBox.IsChecked = TestPager.NumberPanelDisplayTestHook.Visibility == Visibility.Visible; - NumberBoxIsEnabledCheckBox.IsChecked = TestPager.NumberBoxDisplayTestHook.IsEnabled; - ComboBoxIsEnabledCheckBox.IsChecked = TestPager.ComboBoxDisplayTestHook.IsEnabled; - } - - private void OnFirstButtonVisibilityChanged(object sender, SelectionChangedEventArgs e) - { - var item = FirstPageButtonVisibilityComboBox.SelectedItem; - - if (item == this.AutoFirstPageButtonVisibilityItem) - { - TestPager.FirstPageButtonVisibility = PrototypePager.ButtonVisibilityMode.Auto; - } - else if (item == this.NoneFirstPageButtonVisibilityItem) - { - TestPager.FirstPageButtonVisibility = PrototypePager.ButtonVisibilityMode.None; - } - else if (item == this.AlwaysVisibleFirstPageButtonVisibilityItem) - { - TestPager.FirstPageButtonVisibility = PrototypePager.ButtonVisibilityMode.AlwaysVisible; - } - else if (item == this.HiddenOnEdgeFirstPageButtonVisibilityItem) - { - TestPager.FirstPageButtonVisibility = PrototypePager.ButtonVisibilityMode.HiddenOnEdge; - } - - FirstPageButtonVisibilityCheckBox.IsChecked = TestPager.FirstPageButtonTestHook.Visibility == Visibility.Visible; - } - - private void OnPreviousButtonVisibilityChanged(object sender, SelectionChangedEventArgs e) - { - var item = PreviousPageButtonVisibilityComboBox.SelectedItem; - - if (item == this.AutoPreviousPageButtonVisibilityItem) - { - TestPager.PreviousPageButtonVisibility = PrototypePager.ButtonVisibilityMode.Auto; - } - else if (item == this.NonePreviousPageButtonVisibilityItem) - { - TestPager.PreviousPageButtonVisibility = PrototypePager.ButtonVisibilityMode.None; - } - else if (item == this.AlwaysVisiblePreviousPageButtonVisibilityItem) - { - TestPager.PreviousPageButtonVisibility = PrototypePager.ButtonVisibilityMode.AlwaysVisible; - } - else if (item == this.HiddenOnEdgePreviousPageButtonVisibilityItem) - { - TestPager.PreviousPageButtonVisibility = PrototypePager.ButtonVisibilityMode.HiddenOnEdge; - } - - PreviousPageButtonVisibilityCheckBox.IsChecked = TestPager.PreviousPageButtonTestHook.Visibility == Visibility.Visible; - } - - private void OnNextButtonVisibilityChanged(object sender, SelectionChangedEventArgs e) - { - var item = NextPageButtonVisibilityComboBox.SelectedItem; - - if (item == this.AutoNextPageButtonVisibilityItem) - { - TestPager.NextPageButtonVisibility = PrototypePager.ButtonVisibilityMode.Auto; - } - else if (item == this.NoneNextPageButtonVisibilityItem) - { - TestPager.NextPageButtonVisibility = PrototypePager.ButtonVisibilityMode.None; - } - else if (item == this.AlwaysVisibleNextPageButtonVisibilityItem) - { - TestPager.NextPageButtonVisibility = PrototypePager.ButtonVisibilityMode.AlwaysVisible; - } - else if (item == this.HiddenOnEdgeNextPageButtonVisibilityItem) - { - TestPager.NextPageButtonVisibility = PrototypePager.ButtonVisibilityMode.HiddenOnEdge; - } - - NextPageButtonVisibilityCheckBox.IsChecked = TestPager.NextPageButtonTestHook.Visibility == Visibility.Visible; - } - private void OnLastButtonVisibilityChanged(object sender, SelectionChangedEventArgs e) - { - var item = LastPageButtonVisibilityComboBox.SelectedItem; - - if (item == this.AutoLastPageButtonVisibilityItem) - { - TestPager.LastPageButtonVisibility = PrototypePager.ButtonVisibilityMode.Auto; - } - else if (item == this.NoneLastPageButtonVisibilityItem) - { - TestPager.LastPageButtonVisibility = PrototypePager.ButtonVisibilityMode.None; - } - else if (item == this.AlwaysVisibleLastPageButtonVisibilityItem) - { - TestPager.LastPageButtonVisibility = PrototypePager.ButtonVisibilityMode.AlwaysVisible; - } - else if (item == this.HiddenOnEdgeLastPageButtonVisibilityItem) - { - TestPager.LastPageButtonVisibility = PrototypePager.ButtonVisibilityMode.HiddenOnEdge; - } - - LastPageButtonVisibilityCheckBox.IsChecked = TestPager.LastPageButtonTestHook.Visibility == Visibility.Visible; - } - - - } -} \ No newline at end of file diff --git a/dev/PagerControl/APITests/PagerControlTests.cs b/dev/PagerControl/APITests/PagerControlTests.cs new file mode 100644 index 0000000000..b7cffc10e9 --- /dev/null +++ b/dev/PagerControl/APITests/PagerControlTests.cs @@ -0,0 +1,213 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using MUXControlsTestApp.Utilities; +using System; +using System.Threading; +using Windows.UI.Xaml; +using Windows.UI.Xaml.Markup; +using Windows.UI.Xaml.Media; +using Common; +using Microsoft.UI.Xaml.Controls; +using System.Collections.Generic; +using Windows.UI.Xaml.Automation.Peers; +using Windows.UI.Xaml.Automation; +using Windows.UI.Xaml.Automation.Provider; +using Microsoft.UI.Xaml.Automation.Peers; +using Windows.UI.Xaml.Controls; + +#if USING_TAEF +using WEX.TestExecution; +using WEX.TestExecution.Markup; +using WEX.Logging.Interop; +#else +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestTools.UnitTesting.Logging; +#endif + +namespace Windows.UI.Xaml.Tests.MUXControls.ApiTests +{ + + [TestClass] + public class PagerControlTests : ApiTestBase + { + + [TestMethod] + public void VerifyAutomationPeerBehavior() + { + RunOnUIThread.Execute(() => + { + var pagerControl = new PagerControl(); + pagerControl.NumberOfPages = 5; + Content = pagerControl; + + var peer = PagerControlAutomationPeer.CreatePeerForElement(pagerControl); + var selectionPeer = peer as ISelectionProvider; + Verify.AreEqual(false, selectionPeer.CanSelectMultiple); + Verify.AreEqual(true, selectionPeer.IsSelectionRequired); + Verify.AreEqual(AutomationLandmarkType.Navigation, peer.GetLandmarkType()); + }); + } + + [TestMethod] + public void VerifyNumberPanelButtonUIABehavior() + { + RunOnUIThread.Execute(()=>{ + var pagerControl = new PagerControl(); + pagerControl.NumberOfPages = 5; + pagerControl.DisplayMode = PagerControlDisplayMode.ButtonPanel; + Content = pagerControl; + }); + + IdleSynchronizer.Wait(); + + RunOnUIThread.Execute(() => + { + var rootGrid = VisualTreeHelper.GetChild(Content, 0) as Grid; + var repeater = VisualTreeHelper.GetChild(rootGrid, 2) as ItemsRepeater; + + for(int i=0;i<5;i++) + { + var button = repeater.TryGetElement(i); + Verify.IsNotNull(button); + Verify.AreEqual(i + 1, button.GetValue(AutomationProperties.PositionInSetProperty)); + Verify.AreEqual(5, button.GetValue(AutomationProperties.SizeOfSetProperty)); + } + }); + } + + [TestMethod] + public void VerifyComboBoxItemsListNormal() + { + PagerControl control = null; + RunOnUIThread.Execute(() => + { + control = new PagerControl(); + control.NumberOfPages = 5; + control.DisplayMode = PagerControlDisplayMode.ComboBox; + Content = control; + }); + + IdleSynchronizer.Wait(); + + RunOnUIThread.Execute(() => + { + Verify.AreEqual(control.NumberOfPages, control.TemplateSettings.Pages.Count); + for(int i=0;i + { + Verify.AreEqual(control.NumberOfPages, control.TemplateSettings.Pages.Count); + for (int i = 0; i < control.NumberOfPages; i++) + { + Verify.AreEqual(i + 1, control.TemplateSettings.Pages[i]); + } + }); + } + + [TestMethod] + public void VerifyComboBoxItemsInfiniteItems() + { + PagerControl control = null; + RunOnUIThread.Execute(() => + { + control = new PagerControl(); + control.NumberOfPages = 5; + control.DisplayMode = PagerControlDisplayMode.ComboBox; + Content = control; + control.NumberOfPages = -1; + }); + + IdleSynchronizer.Wait(); + + RunOnUIThread.Execute(() => + { + Verify.AreEqual(100, control.TemplateSettings.Pages.Count); + for (int i = 0; i < 100; i++) + { + Verify.AreEqual(i + 1, control.TemplateSettings.Pages[i]); + } + control.NumberOfPages = 200; + control.UpdateLayout(); + control.NumberOfPages = -1; + }); + + IdleSynchronizer.Wait(); + + RunOnUIThread.Execute(() => + { + Verify.AreEqual(200, control.TemplateSettings.Pages.Count); + for (int i = 0; i < 200; i++) + { + Verify.AreEqual(i + 1, control.TemplateSettings.Pages[i]); + } + }); + } + + [TestMethod] + public void VerifyEmptyPagerDoesNotCrash() + { + RunOnUIThread.Execute(() => + { + Content = new PagerControl(); + }); + + IdleSynchronizer.Wait(); + + RunOnUIThread.Execute(() => + { + Verify.IsNotNull(Content); + }); + } + + [TestMethod] + public void VerifySelectedIndexChangedEventArgs() + { + PagerControl pager = null; + var previousIndex = -2; + var newIndex = -2; + RunOnUIThread.Execute(() => + { + pager = new PagerControl(); + pager.SelectedIndexChanged += Pager_SelectedIndexChanged; + Content = pager; + + }); + + IdleSynchronizer.Wait(); + + RunOnUIThread.Execute(() => + { + VerifySelectionChanged(-1, 0); + + pager.NumberOfPages = 10; + VerifySelectionChanged(-1, 0); + + pager.SelectedPageIndex = 9; + VerifySelectionChanged(0, 9); + + pager.SelectedPageIndex = 4; + VerifySelectionChanged(9, 4); + }); + + void Pager_SelectedIndexChanged(PagerControl sender, PagerControlSelectedIndexChangedEventArgs args) + { + previousIndex = args.PreviousPageIndex; + newIndex = args.NewPageIndex; + } + + void VerifySelectionChanged(int expectedPreviousIndex, int expectedNewIndex) + { + Verify.AreEqual(expectedPreviousIndex, previousIndex, "Expected PreviousPageIndex:" + expectedPreviousIndex + ", actual: " + previousIndex); + Verify.AreEqual(expectedNewIndex, newIndex, "Expected PreviousPageIndex:" + expectedNewIndex + ", actual: " + newIndex); + } + } + } +} diff --git a/dev/PagerControl/APITests/PagerControl_APITests.projitems b/dev/PagerControl/APITests/PagerControl_APITests.projitems new file mode 100644 index 0000000000..36d460bfbc --- /dev/null +++ b/dev/PagerControl/APITests/PagerControl_APITests.projitems @@ -0,0 +1,14 @@ + + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + true + cb2352e2-d633-41a3-8cdc-b28731a4c490 + + + PagerControl_APITests + + + + + \ No newline at end of file diff --git a/dev/Pager/PrototypePager/PrototypePager.shproj b/dev/PagerControl/APITests/PagerControl_APITests.shproj similarity index 87% rename from dev/Pager/PrototypePager/PrototypePager.shproj rename to dev/PagerControl/APITests/PagerControl_APITests.shproj index 440c801cc7..d17fcec058 100644 --- a/dev/Pager/PrototypePager/PrototypePager.shproj +++ b/dev/PagerControl/APITests/PagerControl_APITests.shproj @@ -1,13 +1,13 @@ - 675373ce-6acd-4c4b-a009-09a3c9b218e6 + cb2352e2-d633-41a3-8cdc-b28731a4c490 14.0 - + diff --git a/dev/PagerControl/InteractionTests/PagerControlTestBase.cs b/dev/PagerControl/InteractionTests/PagerControlTestBase.cs new file mode 100644 index 0000000000..a3c3e280ad --- /dev/null +++ b/dev/PagerControl/InteractionTests/PagerControlTestBase.cs @@ -0,0 +1,486 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using System; +using Common; +using Windows.UI.Xaml.Tests.MUXControls.InteractionTests.Common; + +#if USING_TAEF +using WEX.TestExecution; +using WEX.TestExecution.Markup; +using WEX.Logging.Interop; +#else +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestTools.UnitTesting.Logging; +#endif + +using Microsoft.Windows.Apps.Test.Automation; +using Microsoft.Windows.Apps.Test.Foundation; +using Microsoft.Windows.Apps.Test.Foundation.Controls; +using Windows.UI.Xaml.Tests.MUXControls.InteractionTests.Infra; + +namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests +{ + public class PagerControlTestBase + { + protected PagerControlTestPageElements elements; + protected int AutoDisplayModeThresholdValue = 10; + protected delegate void SetButtonVisibilityModeFunction(ButtonVisibilityModes mode); + + protected void SelectValueInPagerComboBox(int index) + { + // Open ComboBox. + InputHelper.LeftClick(elements.GetPagerComboBox()); + Wait.ForIdle(); + // Index is the actual PagerControl SelectedIndex, so we need to add 1 here + // to result in the user friendly name being displayed in the ComboBox. + elements.GetPagerComboBox().SelectItemByName((index + 1).ToString()); + } + + protected void SendValueToNumberBox(string value) + { + Edit textbox = FindTextBox(elements.GetPagerNumberBox()); + + Verify.IsNotNull(textbox); + + KeyboardHelper.EnterText(textbox, value); + KeyboardHelper.PressKey(Key.Enter); + Wait.ForIdle(); + } + + protected void SelectPageInNumberPanel(int index) + { + InputHelper.LeftClick(elements.GetNumberPanelButton("Page " + index.ToString())); + Wait.ForIdle(); + } + + protected Edit FindTextBox(UIObject parent) + { + foreach (UIObject elem in parent.Children) + { + if (elem.ClassName.Equals("TextBox")) + { + return new Edit(elem); + } + } + Log.Comment("Did not find TextBox for object " + parent.Name); + return null; + } + + protected int GetLastPageAsInt() + { + return Convert.ToInt32(GetLastPage()); + } + protected string GetLastPage() + { + return elements.GetNumberOfPagesTextBlock().GetText(); + } + + protected int GetPreviousPageAsInt() + { + return Convert.ToInt32(GetPreviousPage()); + } + protected string GetPreviousPage() + { + return elements.GetPreviousPageTextBlock().GetText(); + } + + protected int GetCurrentPageAsInt() + { + return Convert.ToInt32(GetCurrentPage()); + } + protected string GetCurrentPage() + { + return elements.GetCurrentPageTextBlock().GetText(); + } + + protected void ChangeNumberOfPages() + { + InputHelper.LeftClick(elements.GetNumberOfPagesSetterButton()); + } + + protected void IncrementNumberOfPages(int numberOfPagesToAdd) + { + for (int i = 0; i < numberOfPagesToAdd; i++) + { + InputHelper.LeftClick(elements.GetIncreaseNumberOfPagesButton()); + } + } + + protected void VerifyNumberOfPages(string expectedPages) + { + Verify.AreEqual(expectedPages, elements.GetNumberOfPagesTextBlock().GetText()); + } + + protected void VerifyNumberPanelContent(string expectedContent) + { + Verify.AreEqual(expectedContent, elements.GetNumberPanelContentTextBlock().GetText()); + } + + protected void VerifyPageChanged(int expectedPage) + { + Verify.AreEqual(expectedPage, GetCurrentPageAsInt()); + Log.Comment($"Changing to page {expectedPage}"); + } + + protected void VerifyButton(UIObject button, Visibility expectedVisibility, bool shouldBeEnabled) + { + + if (button == elements.GetFirstPageButton()) + { + VerifyFirstPageButtonVisibility(expectedVisibility); + VerifyFirstPageButtonIsEnabled(shouldBeEnabled); + } + else if (button == elements.GetPreviousPageButton()) + { + VerifyPreviousPageButtonVisibility(expectedVisibility); + VerifyPreviousPageButtonIsEnabled(shouldBeEnabled); + } + else if (button == elements.GetNextPageButton()) + { + VerifyNextPageButtonVisibility(expectedVisibility); + VerifyNextPageButtonIsEnabled(shouldBeEnabled); + } + else if (button == elements.GetLastPageButton()) + { + VerifyLastPageButtonVisibility(expectedVisibility); + VerifyLastPageButtonIsEnabled(shouldBeEnabled); + } + } + + protected void VerifyFirstPageButtonVisibility(Visibility expected) + { + Verify.AreEqual(expected == Visibility.Visible, elements.GetFirstPageButtonVisibilityCheckBox().ToggleState == ToggleState.On); + } + + protected void VerifyFirstPageButtonIsEnabled(bool expected) + { + Verify.AreEqual(expected, elements.GetFirstPageButtonIsEnabledCheckBox().ToggleState == ToggleState.On); + } + + protected void VerifyPreviousPageButtonVisibility(Visibility expected) + { + Verify.AreEqual(expected == Visibility.Visible, elements.GetPreviousPageButtonVisibilityCheckBox().ToggleState == ToggleState.On); + } + + protected void VerifyPreviousPageButtonIsEnabled(bool expected) + { + Verify.AreEqual(expected, elements.GetPreviousPageButtonIsEnabledCheckBox().ToggleState == ToggleState.On); + } + + protected void VerifyNextPageButtonVisibility(Visibility expected) + { + Verify.AreEqual(expected == Visibility.Visible, elements.GetNextPageButtonVisibilityCheckBox().ToggleState == ToggleState.On); + } + + protected void VerifyNextPageButtonIsEnabled(bool expected) + { + Verify.AreEqual(expected, elements.GetNextPageButtonIsEnabledCheckBox().ToggleState == ToggleState.On); + } + + protected void VerifyLastPageButtonVisibility(Visibility expected) + { + Verify.AreEqual(expected == Visibility.Visible, elements.GetLastPageButtonVisibilityCheckBox().ToggleState == ToggleState.On); + } + + protected void VerifyLastPageButtonIsEnabled(bool expected) + { + Verify.AreEqual(expected, elements.GetLastPageButtonIsEnabledCheckBox().ToggleState == ToggleState.On); + } + + protected void SetFirstPageButtonVisibilityMode(ButtonVisibilityModes mode) + { + if (mode == ButtonVisibilityModes.AlwaysVisible) + { + elements.GetFirstPageButtonVisibilityComboBox().SelectItemByName("AlwaysVisibleFirstPageButtonVisibilityItem"); + } + else if (mode == ButtonVisibilityModes.HiddenOnEdge) + { + elements.GetFirstPageButtonVisibilityComboBox().SelectItemByName("HiddenOnEdgeFirstPageButtonVisibilityItem"); + } + else if (mode == ButtonVisibilityModes.None) + { + elements.GetFirstPageButtonVisibilityComboBox().SelectItemByName("NoneFirstPageButtonVisibilityItem"); + } + } + + protected void SetPreviousPageButtonVisibilityMode(ButtonVisibilityModes mode) + { + if (mode == ButtonVisibilityModes.AlwaysVisible) + { + elements.GetPreviousPageButtonVisibilityComboBox().SelectItemByName("AlwaysVisiblePreviousPageButtonVisibilityItem"); + } + else if (mode == ButtonVisibilityModes.HiddenOnEdge) + { + elements.GetPreviousPageButtonVisibilityComboBox().SelectItemByName("HiddenOnEdgePreviousPageButtonVisibilityItem"); + } + else if (mode == ButtonVisibilityModes.None) + { + elements.GetPreviousPageButtonVisibilityComboBox().SelectItemByName("NonePreviousPageButtonVisibilityItem"); + } + } + + protected void SetNextPageButtonVisibilityMode(ButtonVisibilityModes mode) + { + if (mode == ButtonVisibilityModes.AlwaysVisible) + { + elements.GetNextPageButtonVisibilityComboBox().SelectItemByName("AlwaysVisibleNextPageButtonVisibilityItem"); + } + else if (mode == ButtonVisibilityModes.HiddenOnEdge) + { + elements.GetNextPageButtonVisibilityComboBox().SelectItemByName("HiddenOnEdgeNextPageButtonVisibilityItem"); + } + else if (mode == ButtonVisibilityModes.None) + { + elements.GetNextPageButtonVisibilityComboBox().SelectItemByName("NoneNextPageButtonVisibilityItem"); + } + } + + protected void SetLastPageButtonVisibilityMode(ButtonVisibilityModes mode) + { + if (mode == ButtonVisibilityModes.AlwaysVisible) + { + elements.GetLastPageButtonVisibilityComboBox().SelectItemByName("AlwaysVisibleLastPageButtonVisibilityItem"); + } + else if (mode == ButtonVisibilityModes.HiddenOnEdge) + { + elements.GetLastPageButtonVisibilityComboBox().SelectItemByName("HiddenOnEdgeLastPageButtonVisibilityItem"); + } + else if (mode == ButtonVisibilityModes.None) + { + elements.GetLastPageButtonVisibilityComboBox().SelectItemByName("NoneLastPageButtonVisibilityItem"); + } + } + + protected void SetAutoDisplayMode() + { + SetDisplayMode("AutoDisplayModeItem"); + } + + protected void SetNumberBoxDisplayMode() + { + SetDisplayMode("NumberBoxDisplayModeItem"); + } + + protected void SetComboBoxDisplayMode() + { + SetDisplayMode("ComboBoxDisplayModeItem"); + } + + protected void SetNumberPanelDisplayMode() + { + SetDisplayMode("NumberPanelDisplayModeItem"); + } + + protected void SetDisplayMode(string mode) + { + elements.GetDisplayModeComboBox().SelectItemByName(mode); + Wait.ForIdle(); + } + + protected void VerifyAutoDisplayMode() + { + VerifyDisplayMode(DisplayModes.Auto); + } + + protected void VerifyNumberBoxDisplayMode() + { + VerifyDisplayMode(DisplayModes.NumberBox); + } + + protected void VerifyComboBoxDisplayMode() + { + VerifyDisplayMode(DisplayModes.ComboBox); + } + + protected void VerifyNumberPanelDisplayMode() + { + VerifyDisplayMode(DisplayModes.NumberPanel); + } + + protected void VerifyDisplayMode(DisplayModes mode) + { + switch (mode) + { + case DisplayModes.Auto: + if (Convert.ToInt32(elements.GetNumberOfPagesTextBlock().GetText()) < AutoDisplayModeThresholdValue) + { + VerifyComboBoxEnabled(); + VerifyNumberBoxDisabled(); + VerifyNumberPanelDisabled(); + } + else + { + VerifyNumberBoxEnabled(); + VerifyComboBoxDisabled(); + VerifyNumberPanelDisabled(); + } + break; + case DisplayModes.ComboBox: + VerifyComboBoxEnabled(); + VerifyNumberBoxDisabled(); + VerifyNumberPanelDisabled(); + break; + case DisplayModes.NumberBox: + VerifyComboBoxDisabled(); + VerifyNumberBoxEnabled(); + VerifyNumberPanelDisabled(); + break; + case DisplayModes.NumberPanel: + VerifyComboBoxDisabled(); + VerifyNumberBoxDisabled(); + VerifyNumberPanelEnabled(); + break; + default: + break; + } + } + + protected void VerifyComboBoxEnabled() + { + VerifyComboBoxVisibility(Visibility.Visible); + VerifyComboBoxIsEnabled(true); + } + + protected void VerifyNumberBoxEnabled() + { + VerifyNumberBoxVisibility(Visibility.Visible); + VerifyNumberBoxIsEnabled(true); + } + + protected void VerifyNumberPanelEnabled() + { + VerifyNumberPanelVisibility(Visibility.Visible); + } + + protected void VerifyComboBoxDisabled() + { + VerifyComboBoxVisibility(Visibility.Collapsed); + } + + protected void VerifyNumberBoxDisabled() + { + VerifyNumberBoxVisibility(Visibility.Collapsed); + } + + protected void VerifyNumberPanelDisabled() + { + VerifyNumberPanelVisibility(Visibility.Collapsed); + } + + protected void VerifyComboBoxVisibility(Visibility expected) + { + Verify.AreEqual(expected == Visibility.Visible, elements.GetComboBoxVisibilityCheckBox().ToggleState == ToggleState.On); + } + + protected void VerifyComboBoxIsEnabled(bool expected) + { + Verify.AreEqual(expected, elements.GetComboBoxIsEnabledCheckBox().ToggleState == ToggleState.On); + } + + protected void VerifyNumberBoxVisibility(Visibility expected) + { + Verify.AreEqual(expected == Visibility.Visible, elements.GetNumberBoxVisibilityCheckBox().ToggleState == ToggleState.On); + } + + protected void VerifyNumberBoxIsEnabled(bool expected) + { + Verify.AreEqual(expected, elements.GetNumberBoxIsEnabledCheckBox().ToggleState == ToggleState.On); + } + + protected void VerifyNumberPanelVisibility(Visibility expected) + { + Verify.AreEqual(expected == Visibility.Visible, elements.GetNumberPanelVisibilityCheckBox().ToggleState == ToggleState.On); + } + + protected void ButtonVisibilityOptionsTest(string buttonNamePrefix) + { + SetButtonVisibilityModeFunction SetButtonVisibilityMode; + UIObject buttonBeingTested; + + using (var setup = new TestSetupHelper("PagerControl Tests")) + { + + elements = new PagerControlTestPageElements(); + switch (buttonNamePrefix) + { + case "First": + SetButtonVisibilityMode = SetFirstPageButtonVisibilityMode; + buttonBeingTested = elements.GetFirstPageButton(); + break; + case "Previous": + SetButtonVisibilityMode = SetPreviousPageButtonVisibilityMode; + buttonBeingTested = elements.GetPreviousPageButton(); + break; + case "Next": + SetButtonVisibilityMode = SetNextPageButtonVisibilityMode; + buttonBeingTested = elements.GetNextPageButton(); + break; + case "Last": + SetButtonVisibilityMode = SetLastPageButtonVisibilityMode; + buttonBeingTested = elements.GetLastPageButton(); + break; + default: + Log.Warning("This test is being skipped because the button string was not one of these four strings: [First, Previous, Next, Last]"); + return; + } + + VerifyPageChanged(0); + + foreach (ButtonVisibilityModes visMode in Enum.GetValues(typeof(ButtonVisibilityModes))) + { + SetButtonVisibilityMode(visMode); + GetLastPage(); + // If we're not on the first page then navigate to the first page. + if (GetCurrentPageAsInt() != 0) + { + SelectValueInPagerComboBox(0); + VerifyPageChanged(0); + } + + var expectedVisibility = ((visMode == ButtonVisibilityModes.None) || + (visMode == ButtonVisibilityModes.HiddenOnEdge && + (buttonNamePrefix == "First" || buttonNamePrefix == "Previous"))) ? Visibility.Collapsed : Visibility.Visible; + + var expectedIsEnableValue = (buttonNamePrefix == "First" || buttonNamePrefix == "Previous") ? false : true; + + VerifyButton(buttonBeingTested, expectedVisibility, expectedIsEnableValue); + + SelectValueInPagerComboBox(1); + VerifyPageChanged(1); + + expectedVisibility = (visMode == ButtonVisibilityModes.None) ? Visibility.Collapsed : Visibility.Visible; + expectedIsEnableValue = true; + + VerifyButton(buttonBeingTested, expectedVisibility, expectedIsEnableValue); + + SelectValueInPagerComboBox(GetLastPageAsInt() - 1); + VerifyPageChanged(GetLastPageAsInt() - 1); + + expectedVisibility = ((visMode == ButtonVisibilityModes.None) || + (visMode == ButtonVisibilityModes.HiddenOnEdge && + (buttonNamePrefix == "Next" || buttonNamePrefix == "Last"))) ? Visibility.Collapsed : Visibility.Visible; + + expectedIsEnableValue = (buttonNamePrefix == "Next" || buttonNamePrefix == "Last") ? false : true; + + VerifyButton(buttonBeingTested, expectedVisibility, expectedIsEnableValue); + } + } + } + + public enum DisplayModes + { + Auto, + NumberBox, + ComboBox, + NumberPanel + }; + + public enum ButtonVisibilityModes + { + AlwaysVisible, + HiddenOnEdge, + None + } + } +} diff --git a/dev/Pager/InteractionTests/PagerTestsPageElements.cs b/dev/PagerControl/InteractionTests/PagerControlTestPageElements.cs similarity index 88% rename from dev/Pager/InteractionTests/PagerTestsPageElements.cs rename to dev/PagerControl/InteractionTests/PagerControlTestPageElements.cs index c5c8e8de3d..811ff64a28 100644 --- a/dev/Pager/InteractionTests/PagerTestsPageElements.cs +++ b/dev/PagerControl/InteractionTests/PagerControlTestPageElements.cs @@ -1,7 +1,7 @@ -using Windows.UI.Xaml.Tests.MUXControls.InteractionTests.Infra; +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + using Windows.UI.Xaml.Tests.MUXControls.InteractionTests.Common; -using System; -using System.Numerics; using Common; #if USING_TAEF @@ -13,23 +13,18 @@ using Microsoft.VisualStudio.TestTools.UnitTesting.Logging; #endif -using Microsoft.Windows.Apps.Test.Automation; using Microsoft.Windows.Apps.Test.Foundation.Controls; -using Microsoft.Windows.Apps.Test.Foundation.Waiters; using Microsoft.Windows.Apps.Test.Foundation; -using System.Collections.Generic; -using Windows.UI.Xaml.Media; -using Windows.UI.Composition; namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests { - class PagerTestsPageElements + public class PagerControlTestPageElements { - public UIObject GetPager() + public UIObject GetPagerControl() { - return GetElement(ref Pager, "TestPager"); + return GetElement(ref PagerControl, "TestPager"); } - private UIObject Pager; + private UIObject PagerControl; public UIObject GetPagerNumberBox() { @@ -37,17 +32,23 @@ public UIObject GetPagerNumberBox() } private UIObject PagerNumberBox; - public UIObject GetPagerComboBox() + public ComboBox GetPagerComboBox() { - return GetElementWithinPager(ref PagerComboBox, "ComboBoxDisplay"); + if (PagerComboBox == null) + { + UIObject uiObject = null; + GetElementWithinPager(ref uiObject, "ComboBoxDisplay"); + PagerComboBox = new ComboBox(uiObject); + } + return PagerComboBox; } - private UIObject PagerComboBox; + private ComboBox PagerComboBox; public UIObject GetNumberPanelButton(string elementName) { - foreach (var element in GetPager().Children) + foreach (var element in GetPagerControl().Children) { - if (element.AutomationId == elementName) + if (element.Name == elementName) { return element; } @@ -114,37 +115,37 @@ public CheckBox GetFirstPageButtonVisibilityCheckBox() return GetElement(ref FirstPageButtonVisibilityCheckBox, "FirstPageButtonVisibilityCheckBox"); } private CheckBox FirstPageButtonVisibilityCheckBox; - + public CheckBox GetPreviousPageButtonVisibilityCheckBox() { return GetElement(ref PreviousPageButtonVisibilityCheckBox, "PreviousPageButtonVisibilityCheckBox"); } private CheckBox PreviousPageButtonVisibilityCheckBox; - + public CheckBox GetNextPageButtonVisibilityCheckBox() { return GetElement(ref NextPageButtonVisibilityCheckBox, "NextPageButtonVisibilityCheckBox"); } private CheckBox NextPageButtonVisibilityCheckBox; - + public CheckBox GetLastPageButtonVisibilityCheckBox() { return GetElement(ref LastPageButtonVisibilityCheckBox, "LastPageButtonVisibilityCheckBox"); } private CheckBox LastPageButtonVisibilityCheckBox; - + public CheckBox GetFirstPageButtonIsEnabledCheckBox() { return GetElement(ref FirstPageButtonIsEnabledCheckBox, "FirstPageButtonIsEnabledCheckBox"); } private CheckBox FirstPageButtonIsEnabledCheckBox; - + public CheckBox GetPreviousPageButtonIsEnabledCheckBox() { return GetElement(ref PreviousPageButtonIsEnabledCheckBox, "PreviousPageButtonIsEnabledCheckBox"); } private CheckBox PreviousPageButtonIsEnabledCheckBox; - + public CheckBox GetNextPageButtonIsEnabledCheckBox() { return GetElement(ref NextPageButtonIsEnabledCheckBox, "NextPageButtonIsEnabledCheckBox"); @@ -235,6 +236,12 @@ public Button GetIncreaseNumberOfPagesButton() } private Button IncreaseNumberOfPagesButton; + public Button GetEnterInfinityModeButton() + { + return GetElement(ref EnterInfinityModeButton, "NumberOfPagesInfinityButton"); + } + private Button EnterInfinityModeButton; + private T GetElement(ref T element, string elementName) where T : UIObject { if (element == null) @@ -246,13 +253,13 @@ private T GetElement(ref T element, string elementName) where T : UIObject return element; } - private T GetElementWithinPager(ref T element, string elementName) where T: UIObject + private T GetElementWithinPager(ref T element, string elementName) where T : UIObject { if (element == null) { Log.Comment("Find the " + elementName); - foreach (T child in GetPager().Children) + foreach (T child in GetPagerControl().Children) { if (child.AutomationId == elementName) { @@ -264,20 +271,6 @@ private T GetElementWithinPager(ref T element, string elementName) where T: U return element; } - public enum DisplayModes - { - Auto, - NumberBox, - ComboBox, - NumberPanel - }; - public enum ButtonVisibilityModes - { - Auto, - AlwaysVisible, - HiddenOnEdge, - None - } } } diff --git a/dev/PagerControl/InteractionTests/PagerControlTests.cs b/dev/PagerControl/InteractionTests/PagerControlTests.cs new file mode 100644 index 0000000000..c49c542808 --- /dev/null +++ b/dev/PagerControl/InteractionTests/PagerControlTests.cs @@ -0,0 +1,559 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +using Common; +using Windows.UI.Xaml.Tests.MUXControls.InteractionTests.Infra; +using Windows.UI.Xaml.Tests.MUXControls.InteractionTests.Common; + +#if USING_TAEF +using WEX.TestExecution; +using WEX.TestExecution.Markup; +using WEX.Logging.Interop; +#else +using Microsoft.VisualStudio.TestTools.UnitTesting; +using Microsoft.VisualStudio.TestTools.UnitTesting.Logging; +#endif + +namespace Windows.UI.Xaml.Tests.MUXControls.InteractionTests +{ + [TestClass] + public class PagerControlTests : PagerControlTestBase + { + + [ClassInitialize] + [TestProperty("RunAs", "User")] + [TestProperty("Classification", "Integration")] + [TestProperty("Platform", "Any")] + [TestProperty("MUXControlsTestSuite", "SuiteB")] + public static void ClassInitialize(TestContext testContext) + { + TestEnvironment.Initialize(testContext); + } + + public void TestCleanup() + { + TestCleanupHelper.Cleanup(); + } + + [TestMethod] + [TestProperty("TestSuite", "A")] + public void NumberBoxDisplayChangingPageTest() + { + using (var setup = new TestSetupHelper("PagerControl Tests")) + { + elements = new PagerControlTestPageElements(); + + SetNumberBoxDisplayMode(); + VerifyNumberBoxDisplayMode(); + VerifyPageChanged(0); + + SendValueToNumberBox("3"); // Note: PagerControl displays numbers starting at 1 but the page changed event sends 0-based numbers + VerifyPageChanged(2); + + SendValueToNumberBox("1"); + VerifyPageChanged(0); + + SendValueToNumberBox("5"); + VerifyPageChanged(4); + + SendValueToNumberBox("2"); + VerifyPageChanged(1); + + SendValueToNumberBox("100"); + Verify.AreEqual("5", FindTextBox(elements.GetPagerNumberBox()).GetText()); // If over max, value should be clamped down to the max. + VerifyPageChanged(4); + + SendValueToNumberBox("-100"); + Verify.AreEqual("1", FindTextBox(elements.GetPagerNumberBox()).GetText()); // If under min, value should be clamped up to the min. + VerifyPageChanged(0); + + } + } + + [TestMethod] + [TestProperty("TestSuite", "A")] + public void NumberBoxInfinityModeTest() + { + using (var setup = new TestSetupHelper("PagerControl Tests")) + { + elements = new PagerControlTestPageElements(); + + SetNumberBoxDisplayMode(); + VerifyNumberBoxDisplayMode(); + VerifyPageChanged(0); + elements.GetEnterInfinityModeButton().Click(); + + SendValueToNumberBox("3"); // Note: PagerControl displays numbers starting at 1 but the page changed event sends 0-based numbers + VerifyPageChanged(2); + + SendValueToNumberBox("1"); + VerifyPageChanged(0); + + SendValueToNumberBox("5"); + VerifyPageChanged(4); + + SendValueToNumberBox("2"); + VerifyPageChanged(1); + + SendValueToNumberBox("100"); + Verify.AreEqual("100", FindTextBox(elements.GetPagerNumberBox()).GetText()); + VerifyPageChanged(99); + + SendValueToNumberBox("10000"); + Verify.AreEqual("10000", FindTextBox(elements.GetPagerNumberBox()).GetText()); + VerifyPageChanged(9999); + + SendValueToNumberBox("-100"); + Verify.AreEqual("1", FindTextBox(elements.GetPagerNumberBox()).GetText()); + VerifyPageChanged(0); + } + } + + [TestMethod] + [TestProperty("TestSuite", "A")] + public void ComboBoxDisplayChangingPageTest() + { + using (var setup = new TestSetupHelper("PagerControl Tests")) + { + elements = new PagerControlTestPageElements(); + VerifyPageChanged(0); + + SetComboBoxDisplayMode(); + VerifyComboBoxDisplayMode(); + + SelectValueInPagerComboBox(2); + VerifyPageChanged(2); + + SelectValueInPagerComboBox(4); + VerifyPageChanged(4); + + SelectValueInPagerComboBox(0); + VerifyPageChanged(0); + } + } + + [TestMethod] + [TestProperty("TestSuite", "B")] + public void AutoDisplayChangingPageTest() + { + using (var setup = new TestSetupHelper("PagerControl Tests")) + { + elements = new PagerControlTestPageElements(); + VerifyPageChanged(0); + + SetAutoDisplayMode(); + VerifyAutoDisplayMode(); + + SelectValueInPagerComboBox(2); + VerifyPageChanged(2); + + SelectValueInPagerComboBox(4); + VerifyPageChanged(4); + + SelectValueInPagerComboBox(0); + VerifyPageChanged(0); + } + } + + [TestMethod] + [TestProperty("TestSuite", "D")] + public void NumberPanelChangingPageTest() + { + using (var setup = new TestSetupHelper("PagerControl Tests")) + { + elements = new PagerControlTestPageElements(); + + VerifyPageChanged(0); + + SetNumberPanelDisplayMode(); + VerifyNumberPanelDisplayMode(); + + SelectPageInNumberPanel(2); + VerifyPageChanged(1); + VerifyNumberPanelContent("12345"); + + SelectPageInNumberPanel(5); + VerifyPageChanged(4); + VerifyNumberPanelContent("12345"); + + SelectPageInNumberPanel(4); + VerifyPageChanged(3); + VerifyNumberPanelContent("12345"); + + SelectPageInNumberPanel(3); + VerifyPageChanged(2); + VerifyNumberPanelContent("12345"); + + ChangeNumberOfPages(); + VerifyNumberOfPages("100"); + + + SelectPageInNumberPanel(1); + VerifyPageChanged(0); + VerifyNumberPanelContent("12345More100"); + + SelectPageInNumberPanel(2); + VerifyPageChanged(1); + VerifyNumberPanelContent("12345More100"); + + SelectPageInNumberPanel(3); + VerifyPageChanged(2); + VerifyNumberPanelContent("12345More100"); + + SelectPageInNumberPanel(4); + VerifyPageChanged(3); + VerifyNumberPanelContent("12345More100"); + + SelectPageInNumberPanel(5); + VerifyPageChanged(4); + VerifyNumberPanelContent("1More456More100"); + + SelectPageInNumberPanel(6); + VerifyPageChanged(5); + VerifyNumberPanelContent("1More567More100"); + + SelectPageInNumberPanel(100); + VerifyPageChanged(99); + + VerifyNumberPanelContent("1More96979899100"); + + SelectPageInNumberPanel(99); + VerifyPageChanged(98); + VerifyNumberPanelContent("1More96979899100"); + + SelectPageInNumberPanel(98); + VerifyPageChanged(97); + VerifyNumberPanelContent("1More96979899100"); + + SelectPageInNumberPanel(97); + VerifyPageChanged(96); + VerifyNumberPanelContent("1More96979899100"); + + SelectPageInNumberPanel(96); + VerifyPageChanged(95); + VerifyNumberPanelContent("1More959697More100"); + } + } + + [TestMethod] + [TestProperty("TestSuite", "C")] + public void NumberPanelChangingPageTest2() + { + using (var setup = new TestSetupHelper("PagerControl Tests")) + { + elements = new PagerControlTestPageElements(); + + VerifyPageChanged(0); + + SetNumberPanelDisplayMode(); + VerifyNumberPanelDisplayMode(); + + InputHelper.LeftClick(elements.GetNextPageButton()); + VerifyPageChanged(1); + VerifyNumberPanelContent("12345"); + + InputHelper.LeftClick(elements.GetLastPageButton()); + VerifyPageChanged(4); + VerifyNumberPanelContent("12345"); + + InputHelper.LeftClick(elements.GetPreviousPageButton()); + VerifyPageChanged(3); + VerifyNumberPanelContent("12345"); + + InputHelper.LeftClick(elements.GetPreviousPageButton()); + VerifyPageChanged(2); + VerifyNumberPanelContent("12345"); + + ChangeNumberOfPages(); + VerifyNumberOfPages("100"); + + InputHelper.LeftClick(elements.GetFirstPageButton()); + VerifyPageChanged(0); + VerifyNumberPanelContent("12345More100"); + + InputHelper.LeftClick(elements.GetNextPageButton()); + VerifyPageChanged(1); + VerifyNumberPanelContent("12345More100"); + + InputHelper.LeftClick(elements.GetNextPageButton()); + VerifyPageChanged(2); + VerifyNumberPanelContent("12345More100"); + + InputHelper.LeftClick(elements.GetNextPageButton()); + VerifyPageChanged(3); + VerifyNumberPanelContent("12345More100"); + + InputHelper.LeftClick(elements.GetNextPageButton()); + VerifyPageChanged(4); + VerifyNumberPanelContent("1More456More100"); + + InputHelper.LeftClick(elements.GetNextPageButton()); + VerifyPageChanged(5); + VerifyNumberPanelContent("1More567More100"); + + InputHelper.LeftClick(elements.GetLastPageButton()); + VerifyPageChanged(99); + + VerifyNumberPanelContent("1More96979899100"); + + InputHelper.LeftClick(elements.GetPreviousPageButton()); + VerifyPageChanged(98); + VerifyNumberPanelContent("1More96979899100"); + + InputHelper.LeftClick(elements.GetPreviousPageButton()); + VerifyPageChanged(97); + VerifyNumberPanelContent("1More96979899100"); + + InputHelper.LeftClick(elements.GetPreviousPageButton()); + VerifyPageChanged(96); + VerifyNumberPanelContent("1More96979899100"); + + InputHelper.LeftClick(elements.GetPreviousPageButton()); + VerifyPageChanged(95); + VerifyNumberPanelContent("1More959697More100"); + } + } + + [TestMethod] + [TestProperty("TestSuite","D")] + public void NumberPanelInfiniteItemsTest() + { + using (var setup = new TestSetupHelper("PagerControl Tests")) + { + elements = new PagerControlTestPageElements(); + + VerifyPageChanged(0); + + SetNumberPanelDisplayMode(); + VerifyNumberPanelDisplayMode(); + + elements.GetEnterInfinityModeButton().Click(); + + InputHelper.LeftClick(elements.GetNextPageButton()); + VerifyPageChanged(1); + VerifyNumberPanelContent("12345"); + + InputHelper.LeftClick(elements.GetNextPageButton()); + VerifyPageChanged(2); + VerifyNumberPanelContent("12345"); + + InputHelper.LeftClick(elements.GetNextPageButton()); + VerifyPageChanged(3); + VerifyNumberPanelContent("1More345"); + + InputHelper.LeftClick(elements.GetNextPageButton()); + VerifyPageChanged(4); + VerifyNumberPanelContent("1More456"); + + InputHelper.LeftClick(elements.GetNextPageButton()); + VerifyPageChanged(5); + VerifyNumberPanelContent("1More567"); + + InputHelper.LeftClick(elements.GetNextPageButton()); + VerifyPageChanged(6); + VerifyNumberPanelContent("1More678"); + + InputHelper.LeftClick(elements.GetNextPageButton()); + VerifyPageChanged(7); + VerifyNumberPanelContent("1More789"); + + InputHelper.LeftClick(elements.GetNextPageButton()); + VerifyPageChanged(8); + VerifyNumberPanelContent("1More8910"); + + InputHelper.LeftClick(elements.GetNextPageButton()); + VerifyPageChanged(9); + VerifyNumberPanelContent("1More91011"); + + InputHelper.LeftClick(elements.GetNextPageButton()); + VerifyPageChanged(10); + VerifyNumberPanelContent("1More101112"); + + } + } + + [TestMethod] + [TestProperty("TestSuite", "C")] + public void FirstPageButtonChangingPageTest() + { + using (var setup = new TestSetupHelper("PagerControl Tests")) + { + elements = new PagerControlTestPageElements(); + VerifyPageChanged(0); + InputHelper.LeftClick(elements.GetLastPageButton()); + + InputHelper.LeftClick(elements.GetFirstPageButton()); + VerifyPageChanged(0); + + InputHelper.LeftClick(elements.GetNextPageButton()); + + InputHelper.LeftClick(elements.GetFirstPageButton()); + VerifyPageChanged(0); + } + } + + [TestMethod] + [TestProperty("TestSuite", "B")] + public void PreviousPageButtonChangingPageTest() + { + using (var setup = new TestSetupHelper("PagerControl Tests")) + { + elements = new PagerControlTestPageElements(); + VerifyPageChanged(0); + InputHelper.LeftClick(elements.GetNextPageButton()); + + InputHelper.LeftClick(elements.GetPreviousPageButton()); + VerifyPageChanged(0); + + InputHelper.LeftClick(elements.GetLastPageButton()); + + InputHelper.LeftClick(elements.GetPreviousPageButton()); + VerifyPageChanged(3); + + InputHelper.LeftClick(elements.GetPreviousPageButton()); + VerifyPageChanged(2); + + InputHelper.LeftClick(elements.GetPreviousPageButton()); + VerifyPageChanged(1); + + InputHelper.LeftClick(elements.GetPreviousPageButton()); + VerifyPageChanged(0); + + } + } + + [TestMethod] + [TestProperty("TestSuite", "B")] + public void NextPageButtonChangingPageTest() + { + using (var setup = new TestSetupHelper("PagerControl Tests")) + { + elements = new PagerControlTestPageElements(); + VerifyPageChanged(0); + InputHelper.LeftClick(elements.GetNextPageButton()); + VerifyPageChanged(1); + + InputHelper.LeftClick(elements.GetNextPageButton()); + VerifyPageChanged(2); + + InputHelper.LeftClick(elements.GetNextPageButton()); + VerifyPageChanged(3); + + InputHelper.LeftClick(elements.GetNextPageButton()); + VerifyPageChanged(4); + } + } + + [TestMethod] + [TestProperty("TestSuite", "A")] + public void LastPageButtonChangingPageTest() + { + using (var setup = new TestSetupHelper("PagerControl Tests")) + { + elements = new PagerControlTestPageElements(); + VerifyPageChanged(0); + InputHelper.LeftClick(elements.GetLastPageButton()); + VerifyPageChanged(4); + + InputHelper.LeftClick(elements.GetFirstPageButton()); + InputHelper.LeftClick(elements.GetNextPageButton()); + + InputHelper.LeftClick(elements.GetLastPageButton()); + VerifyPageChanged(4); + } + } + + [TestMethod] + [TestProperty("TestSuite", "D")] + public void FirstPageButtonVisibilityOptionsTest() + { + ButtonVisibilityOptionsTest(buttonNamePrefix: "First"); + } + + [TestMethod] + [TestProperty("TestSuite", "E")] + public void PreviousPageButtonVisibilityOptionsTest() + { + ButtonVisibilityOptionsTest(buttonNamePrefix: "Previous"); + } + + [TestMethod] + [TestProperty("TestSuite", "F")] + public void NextPageButtonVisibilityOptionsTest() + { + ButtonVisibilityOptionsTest(buttonNamePrefix: "Next"); + } + + [TestMethod] + [TestProperty("TestSuite", "G")] + public void LastPageButtonVisibilityOptionsTest() + { + ButtonVisibilityOptionsTest(buttonNamePrefix: "Last"); + } + + [TestMethod] + [TestProperty("TestSuite", "C")] + public void ChangingDisplayModeTest() + { + using (var setup = new TestSetupHelper("PagerControl Tests")) + { + elements = new PagerControlTestPageElements(); + SetAutoDisplayMode(); + VerifyAutoDisplayMode(); + + SetComboBoxDisplayMode(); + VerifyComboBoxDisplayMode(); + + SetNumberBoxDisplayMode(); + VerifyNumberBoxDisplayMode(); + + SetNumberPanelDisplayMode(); + VerifyNumberPanelDisplayMode(); + + SetAutoDisplayMode(); + VerifyAutoDisplayMode(); + + SetNumberBoxDisplayMode(); + VerifyNumberBoxDisplayMode(); + + SetNumberPanelDisplayMode(); + VerifyNumberPanelDisplayMode(); + + SetComboBoxDisplayMode(); + VerifyComboBoxDisplayMode(); + + SetAutoDisplayMode(); + VerifyAutoDisplayMode(); + + SetNumberPanelDisplayMode(); + VerifyNumberPanelDisplayMode(); + + ChangeNumberOfPages(); + VerifyNumberOfPages("100"); + + SetAutoDisplayMode(); + VerifyAutoDisplayMode(); + + ChangeNumberOfPages(); + VerifyNumberOfPages("5"); + + VerifyAutoDisplayMode(); + + IncrementNumberOfPages(4); + VerifyNumberOfPages("9"); + + VerifyAutoDisplayMode(); + + IncrementNumberOfPages(1); + VerifyNumberOfPages("10"); + + VerifyAutoDisplayMode(); + + IncrementNumberOfPages(1); + VerifyNumberOfPages("11"); + + VerifyAutoDisplayMode(); + } + } + } +} diff --git a/dev/Pager/InteractionTests/Pager_InteractionTests.projitems b/dev/PagerControl/InteractionTests/PagerControl_InteractionTests.projitems similarity index 65% rename from dev/Pager/InteractionTests/Pager_InteractionTests.projitems rename to dev/PagerControl/InteractionTests/PagerControl_InteractionTests.projitems index 22b364da09..4752ea9468 100644 --- a/dev/Pager/InteractionTests/Pager_InteractionTests.projitems +++ b/dev/PagerControl/InteractionTests/PagerControl_InteractionTests.projitems @@ -7,10 +7,11 @@ A1553559-5786-4B44-AB9E-94AB95C86D4D - Pager_InteractionTests + PagerControl_InteractionTests - - + + + \ No newline at end of file diff --git a/dev/Pager/InteractionTests/Pager_InteractionTests.shproj b/dev/PagerControl/InteractionTests/PagerControl_InteractionTests.shproj similarity index 88% rename from dev/Pager/InteractionTests/Pager_InteractionTests.shproj rename to dev/PagerControl/InteractionTests/PagerControl_InteractionTests.shproj index fc56e51d4b..19ea87d262 100644 --- a/dev/Pager/InteractionTests/Pager_InteractionTests.shproj +++ b/dev/PagerControl/InteractionTests/PagerControl_InteractionTests.shproj @@ -2,13 +2,13 @@ - {3566798E-9E24-44EF-B89D-2A62AE8F697A} + {4F64C819-664F-436A-BCDB-8AB3019B9DD5} 15.0 - + \ No newline at end of file diff --git a/dev/PagerControl/PagerControl.cpp b/dev/PagerControl/PagerControl.cpp new file mode 100644 index 0000000000..ee335be537 --- /dev/null +++ b/dev/PagerControl/PagerControl.cpp @@ -0,0 +1,779 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#include "pch.h" +#include "common.h" +#include "Vector.h" +#include "PagerControl.h" +#include "RuntimeProfiler.h" +#include "ResourceAccessor.h" +#include "PagerControlSelectedIndexChangedEventArgs.h" +#include "PagerControlTemplateSettings.h" +#include + +constexpr auto c_numberBoxVisibleVisualState = L"NumberBoxVisible"sv; +constexpr auto c_comboBoxVisibleVisualState = L"ComboBoxVisible"sv; +constexpr auto c_numberPanelVisibleVisualState = L"NumberPanelVisible"sv; + +constexpr auto c_firstPageButtonVisibleVisualState = L"FirstPageButtonVisible"sv; +constexpr auto c_firstPageButtonNotVisibleVisualState = L"FirstPageButtonCollapsed"sv; +constexpr auto c_firstPageButtonHiddenVisualState = L"FirstPageButtonHidden"sv; +constexpr auto c_firstPageButtonEnabledVisualState = L"FirstPageButtonEnabled"sv; +constexpr auto c_firstPageButtonDisabledVisualState = L"FirstPageButtonDisabled"sv; + +constexpr auto c_previousPageButtonVisibleVisualState = L"PreviousPageButtonVisible"sv; +constexpr auto c_previousPageButtonNotVisibleVisualState = L"PreviousPageButtonCollapsed"sv; +constexpr auto c_previousPageButtonHiddenVisualState = L"PreviousPageButtonHidden"sv; +constexpr auto c_previousPageButtonEnabledVisualState = L"PreviousPageButtonEnabled"sv; +constexpr auto c_previousPageButtonDisabledVisualState = L"PreviousPageButtonDisabled"sv; + +constexpr auto c_nextPageButtonVisibleVisualState = L"NextPageButtonVisible"sv; +constexpr auto c_nextPageButtonNotVisibleVisualState = L"NextPageButtonCollapsed"sv; +constexpr auto c_nextPageButtonHiddenVisualState = L"NextPageButtonHidden"sv; +constexpr auto c_nextPageButtonEnabledVisualState = L"NextPageButtonEnabled"sv; +constexpr auto c_nextPageButtonDisabledVisualState = L"NextPageButtonDisabled"sv; + +constexpr auto c_lastPageButtonVisibleVisualState = L"LastPageButtonVisible"sv; +constexpr auto c_lastPageButtonNotVisibleVisualState = L"LastPageButtonCollapsed"sv; +constexpr auto c_lastPageButtonHiddenVisualState = L"LastPageButtonHidden"sv; +constexpr auto c_lastPageButtonEnabledVisualState = L"LastPageButtonEnabled"sv; +constexpr auto c_lastPageButtonDisabledVisualState = L"LastPageButtonDisabled"sv; + +constexpr auto c_finiteItemsModeState = L"FiniteItems"sv; +constexpr auto c_infiniteItemsModeState = L"InfiniteItems"sv; + +constexpr auto c_rootGridName = L"RootGrid"sv; +constexpr auto c_comboBoxName = L"ComboBoxDisplay"sv; +constexpr auto c_numberBoxName = L"NumberBoxDisplay"sv; + +constexpr auto c_numberPanelRepeaterName = L"NumberPanelItemsRepeater"sv; +constexpr auto c_numberPanelIndicatorName = L"NumberPanelCurrentPageIndicator"sv; +constexpr auto c_firstPageButtonName = L"FirstPageButton"sv; +constexpr auto c_previousPageButtonName = L"PreviousPageButton"sv; +constexpr auto c_nextPageButtonName = L"NextPageButton"sv; +constexpr auto c_lastPageButtonName = L"LastPageButton"sv; + +static constexpr auto c_numberPanelButtonStyleName = L"PagerControlNumberPanelButtonStyle"sv; +const int c_AutoDisplayModeNumberOfPagesThreshold = 10; // This integer determines when to switch between NumberBoxDisplayMode and ComboBoxDisplayMode +const int c_infiniteModeComboBoxItemsIncrement = 100; + +/* Common functions */ +PagerControl::PagerControl() +{ + __RP_Marker_ClassById(RuntimeProfiler::ProfId_PagerControl); + + m_comboBoxEntries = winrt::make>().as>(); + m_numberPanelElements = winrt::make>().as>(); + + const auto templateSettings = winrt::make(); + templateSettings.SetValue(PagerControlTemplateSettingsProperties::s_PagesProperty, m_comboBoxEntries); + templateSettings.SetValue(PagerControlTemplateSettingsProperties::s_NumberPanelItemsProperty, m_numberPanelElements); + SetValue(s_TemplateSettingsProperty, templateSettings); + + SetDefaultStyleKey(this); +} + +PagerControl::~PagerControl() +{ + m_rootGridKeyDownRevoker.revoke(); + m_comboBoxSelectionChangedRevoker.revoke(); + m_firstPageButtonClickRevoker.revoke(); + m_previousPageButtonClickRevoker.revoke(); + m_nextPageButtonClickRevoker.revoke(); + m_lastPageButtonClickRevoker.revoke(); +} + +void PagerControl::OnApplyTemplate() +{ + if (PrefixText().empty()) + { + PrefixText(ResourceAccessor::GetLocalizedStringResource(SR_PagerControlPrefixTextName)); + } + if (SuffixText().empty()) + { + SuffixText(ResourceAccessor::GetLocalizedStringResource(SR_PagerControlSuffixTextName)); + } + if (const auto rootGrid = GetTemplateChildT(c_rootGridName, *this)) + { + m_rootGridKeyDownRevoker = rootGrid.KeyDown(winrt::auto_revoke, { this, &PagerControl::OnRootGridKeyDown }); + } + + if (const auto firstPageButton = GetTemplateChildT(c_firstPageButtonName, *this)) + { + winrt::AutomationProperties::SetName(firstPageButton, ResourceAccessor::GetLocalizedStringResource(SR_PagerControlFirstPageButtonTextName)); + m_firstPageButtonClickRevoker = firstPageButton.Click(winrt::auto_revoke, { this, &PagerControl::FirstButtonClicked }); + } + if (const auto previousPageButton = GetTemplateChildT(c_previousPageButtonName, *this)) + { + winrt::AutomationProperties::SetName(previousPageButton, ResourceAccessor::GetLocalizedStringResource(SR_PagerControlPreviousPageButtonTextName)); + m_previousPageButtonClickRevoker = previousPageButton.Click(winrt::auto_revoke, { this, &PagerControl::PreviousButtonClicked }); + } + if (const auto nextPageButton = GetTemplateChildT(c_nextPageButtonName, *this)) + { + winrt::AutomationProperties::SetName(nextPageButton, ResourceAccessor::GetLocalizedStringResource(SR_PagerControlNextPageButtonTextName)); + m_nextPageButtonClickRevoker = nextPageButton.Click(winrt::auto_revoke, { this, &PagerControl::NextButtonClicked }); + } + if (const auto lastPageButton = GetTemplateChildT(c_lastPageButtonName, *this)) + { + winrt::AutomationProperties::SetName(lastPageButton, ResourceAccessor::GetLocalizedStringResource(SR_PagerControlLastPageButtonTextName)); + m_lastPageButtonClickRevoker = lastPageButton.Click(winrt::auto_revoke, { this, &PagerControl::LastButtonClicked }); + } + + m_comboBoxSelectionChangedRevoker.revoke(); + [this](const winrt::ComboBox comboBox) { + m_comboBox.set(comboBox); + if (comboBox) + { + comboBox.SelectedIndex(SelectedPageIndex() - 1); + winrt::AutomationProperties::SetName(comboBox, ResourceAccessor::GetLocalizedStringResource(SR_PagerControlPageTextName)); + m_comboBoxSelectionChangedRevoker = comboBox.SelectionChanged(winrt::auto_revoke, { this, &PagerControl::ComboBoxSelectionChanged }); + } + }(GetTemplateChildT(c_comboBoxName, *this)); + + m_numberBoxValueChangedRevoker.revoke(); + [this](const winrt::NumberBox numberBox) { + m_numberBox.set(numberBox); + if (numberBox) + { + numberBox.Value(SelectedPageIndex() + 1); + winrt::AutomationProperties::SetName(numberBox, ResourceAccessor::GetLocalizedStringResource(SR_PagerControlPageTextName)); + m_numberBoxValueChangedRevoker = numberBox.ValueChanged(winrt::auto_revoke, { this,&PagerControl::NumberBoxValueChanged }); + } + }(GetTemplateChildT(c_numberBoxName, *this)); + + m_numberPanelRepeater.set(GetTemplateChildT(c_numberPanelRepeaterName, *this)); + m_selectedPageIndicator.set(GetTemplateChildT(c_numberPanelIndicatorName, *this)); + + // This is for the initial loading of the control + OnDisplayModeChanged(); + UpdateOnEdgeButtonVisualStates(); + OnNumberOfPagesChanged(0); + OnSelectedPageIndexChange(-1); +} + +void PagerControl::OnPropertyChanged(const winrt::DependencyPropertyChangedEventArgs& args) +{ + winrt::IDependencyProperty property = args.Property(); + if (this->Template() != nullptr) + { + if (property == FirstButtonVisibilityProperty()) + { + OnButtonVisibilityChanged(FirstButtonVisibility(), + c_firstPageButtonVisibleVisualState, + c_firstPageButtonNotVisibleVisualState, + c_firstPageButtonHiddenVisualState, + 0); + } + else if (property == PreviousButtonVisibilityProperty()) + { + OnButtonVisibilityChanged(PreviousButtonVisibility(), + c_previousPageButtonVisibleVisualState, + c_previousPageButtonNotVisibleVisualState, + c_previousPageButtonHiddenVisualState, + 0); + } + else if (property == NextButtonVisibilityProperty()) + { + OnButtonVisibilityChanged(NextButtonVisibility(), + c_nextPageButtonVisibleVisualState, + c_nextPageButtonNotVisibleVisualState, + c_nextPageButtonHiddenVisualState, + NumberOfPages() - 1); + } + else if (property == LastButtonVisibilityProperty()) + { + OnButtonVisibilityChanged(LastButtonVisibility(), + c_lastPageButtonVisibleVisualState, + c_lastPageButtonNotVisibleVisualState, + c_lastPageButtonHiddenVisualState, + NumberOfPages() - 1); + } + else if (property == DisplayModeProperty()) + { + OnDisplayModeChanged(); + // Why are we calling this you might ask. + // The reason is that that method only updates what it currently needs to update. + // So when we switch to ComboBox from NumberPanel, the NumberPanel element list might be out of date. + UpdateTemplateSettingElementLists(); + } + else if (property == NumberOfPagesProperty()) + { + OnNumberOfPagesChanged(winrt::unbox_value(args.OldValue())); + } + else if (property == SelectedPageIndexProperty()) + { + OnSelectedPageIndexChange(winrt::unbox_value(args.OldValue())); + } + else if (property == ButtonPanelAlwaysShowFirstLastPageIndexProperty()) + { + UpdateNumberPanel(NumberOfPages()); + } + } +} + +winrt::AutomationPeer PagerControl::OnCreateAutomationPeer() +{ + return winrt::make(*this); +} + +/* Property changed handlers */ +void PagerControl::OnDisplayModeChanged() +{ + // Cache for performance reasons + const auto displayMode = DisplayMode(); + + if (displayMode == winrt::PagerControlDisplayMode::ButtonPanel) + { + winrt::VisualStateManager::GoToState(*this, c_numberPanelVisibleVisualState, false); + } + else if (displayMode == winrt::PagerControlDisplayMode::ComboBox) + { + winrt::VisualStateManager::GoToState(*this, c_comboBoxVisibleVisualState, false); + } + else if (displayMode == winrt::PagerControlDisplayMode::NumberBox) + { + winrt::VisualStateManager::GoToState(*this, c_numberBoxVisibleVisualState, false); + } + else + { + UpdateDisplayModeAutoState(); + } +} + +void PagerControl::UpdateDisplayModeAutoState() +{ + const int numberOfPages = NumberOfPages(); + if (numberOfPages > -1) + { + winrt::VisualStateManager::GoToState(*this, numberOfPages < c_AutoDisplayModeNumberOfPagesThreshold ? + c_comboBoxVisibleVisualState : c_numberBoxVisibleVisualState, false); + } + else + { + winrt::VisualStateManager::GoToState(*this, c_numberBoxVisibleVisualState, false); + } +} + +void PagerControl::OnNumberOfPagesChanged(const int oldValue) +{ + m_lastNumberOfPagesCount = oldValue; + const int numberOfPages = NumberOfPages(); + if (numberOfPages < SelectedPageIndex() && numberOfPages > -1) + { + SelectedPageIndex(numberOfPages - 1); + } + UpdateTemplateSettingElementLists(); + if (DisplayMode() == winrt::PagerControlDisplayMode::Auto) + { + UpdateDisplayModeAutoState(); + } + if (numberOfPages > -1) + { + winrt::VisualStateManager::GoToState(*this, c_finiteItemsModeState, false); + if (const auto numberBox = m_numberBox.get()) + { + numberBox.Maximum(numberOfPages); + } + } + else + { + winrt::VisualStateManager::GoToState(*this, c_infiniteItemsModeState, false); + if (const auto numberBox = m_numberBox.get()) + { + numberBox.Maximum(INFINITY); + } + } + UpdateOnEdgeButtonVisualStates(); +} + +void PagerControl::OnSelectedPageIndexChange(const int oldValue) +{ + // If we don't have any pages, there is nothing we should do. + // Ensure that SelectedPageIndex will end up in the valid range of values + // Special case is NumberOfPages being 0, in that case, don't verify upperbound restrictions + if (SelectedPageIndex() > NumberOfPages() - 1 && NumberOfPages() > 0) + { + SelectedPageIndex(NumberOfPages() - 1); + } + else if (SelectedPageIndex() < 0) + { + SelectedPageIndex(0); + } + // Now handle the value changes + m_lastSelectedPageIndex = oldValue; + + if (const auto comboBox = m_comboBox.get()) + { + if (SelectedPageIndex() < (int32_t)m_comboBoxEntries.Size()) + { + comboBox.SelectedIndex(SelectedPageIndex()); + } + } + if (const auto numBox = m_numberBox.get()) + { + numBox.Value(SelectedPageIndex() + 1); + } + + UpdateOnEdgeButtonVisualStates(); + UpdateTemplateSettingElementLists(); + + if (DisplayMode() == winrt::PagerControlDisplayMode::ButtonPanel) + { + // NumberPanel needs to update based on multiple parameters. + // SelectedPageIndex is one of them, so let's do that now! + UpdateNumberPanel(NumberOfPages()); + } + + // Fire value property change for UIA + if (const auto peer = winrt::FrameworkElementAutomationPeer::FromElement(*this).try_as()) + { + winrt::get_self(peer)->RaiseSelectionChanged(m_lastSelectedPageIndex, SelectedPageIndex()); + } + RaiseSelectedIndexChanged(); +} + +void PagerControl::RaiseSelectedIndexChanged() +{ + const auto args = winrt::make_self(m_lastSelectedPageIndex, SelectedPageIndex()); + m_selectedIndexChangedEventSource(*this, *args); +} + +void PagerControl::OnButtonVisibilityChanged(const winrt::PagerControlButtonVisibility visibility, + const wstring_view visibleStateName, + const wstring_view collapsedStateName, + const wstring_view hiddenStateName, + const int hiddenOnEdgePageCriteria) +{ + if (visibility == winrt::PagerControlButtonVisibility::Visible) + { + winrt::VisualStateManager::GoToState(*this, visibleStateName, false); + } + else if (visibility == winrt::PagerControlButtonVisibility::Hidden) + { + winrt::VisualStateManager::GoToState(*this, collapsedStateName, false); + } + else + { + if (SelectedPageIndex() != hiddenOnEdgePageCriteria) + { + winrt::VisualStateManager::GoToState(*this, visibleStateName, false); + } + else + { + winrt::VisualStateManager::GoToState(*this, hiddenStateName, false); + } + } +} + +void PagerControl::UpdateTemplateSettingElementLists() +{ + // Cache values for performance :) + const auto displayMode = DisplayMode(); + const auto numberOfPages = NumberOfPages(); + + if (displayMode == winrt::PagerControlDisplayMode::ComboBox || + displayMode == winrt::PagerControlDisplayMode::Auto) + { + if (numberOfPages > -1) + { + FillComboBoxCollectionToSize(numberOfPages); + } + else + { + if (m_comboBoxEntries.Size() < c_infiniteModeComboBoxItemsIncrement) + { + FillComboBoxCollectionToSize(c_infiniteModeComboBoxItemsIncrement); + } + } + } + else if (displayMode == winrt::PagerControlDisplayMode::ButtonPanel) + { + UpdateNumberPanel(numberOfPages); + } +} + +void PagerControl::FillComboBoxCollectionToSize(const int numberOfPages) +{ + const int currentComboBoxItemsCount = (int32_t)m_comboBoxEntries.Size(); + if (currentComboBoxItemsCount <= numberOfPages) + { + // We are increasing the number of pages, so add the missing numbers. + for (int i = currentComboBoxItemsCount; i < numberOfPages; i++) + { + m_comboBoxEntries.Append(winrt::box_value(i + 1)); + } + } + else + { + // We are decreasing the number of pages, so remove numbers starting at the end. + for (int i = currentComboBoxItemsCount; i > numberOfPages; i--) + { + m_comboBoxEntries.RemoveAtEnd(); + } + } +} + +void PagerControl::UpdateOnEdgeButtonVisualStates() +{ + // Cache those values as we need them often and accessing a DP is (relatively) expensive + const int selectedPageIndex = SelectedPageIndex(); + const int numberOfPages = NumberOfPages(); + + // Handle disabled/enabled status of buttons + if (selectedPageIndex == 0) + { + winrt::VisualStateManager::GoToState(*this, c_firstPageButtonDisabledVisualState, false); + winrt::VisualStateManager::GoToState(*this, c_previousPageButtonDisabledVisualState, false); + winrt::VisualStateManager::GoToState(*this, c_nextPageButtonEnabledVisualState, false); + winrt::VisualStateManager::GoToState(*this, c_lastPageButtonEnabledVisualState, false); + } + else if (selectedPageIndex >= numberOfPages - 1) + { + winrt::VisualStateManager::GoToState(*this, c_firstPageButtonEnabledVisualState, false); + winrt::VisualStateManager::GoToState(*this, c_previousPageButtonEnabledVisualState, false); + if (numberOfPages > -1) + { + winrt::VisualStateManager::GoToState(*this, c_nextPageButtonDisabledVisualState, false); + } + else + { + winrt::VisualStateManager::GoToState(*this, c_nextPageButtonEnabledVisualState, false); + } + winrt::VisualStateManager::GoToState(*this, c_lastPageButtonDisabledVisualState, false); + } + else + { + winrt::VisualStateManager::GoToState(*this, c_firstPageButtonEnabledVisualState, false); + winrt::VisualStateManager::GoToState(*this, c_previousPageButtonEnabledVisualState, false); + winrt::VisualStateManager::GoToState(*this, c_nextPageButtonEnabledVisualState, false); + winrt::VisualStateManager::GoToState(*this, c_lastPageButtonEnabledVisualState, false); + } + + // Handle HiddenOnEdge states + if (FirstButtonVisibility() == winrt::PagerControlButtonVisibility::HiddenOnEdge) + { + if (selectedPageIndex != 0) + { + winrt::VisualStateManager::GoToState(*this, c_firstPageButtonVisibleVisualState, false); + } + else + { + winrt::VisualStateManager::GoToState(*this, c_firstPageButtonHiddenVisualState, false); + } + } + if (PreviousButtonVisibility() == winrt::PagerControlButtonVisibility::HiddenOnEdge) + { + if (selectedPageIndex != 0) + { + winrt::VisualStateManager::GoToState(*this, c_previousPageButtonVisibleVisualState, false); + } + else + { + winrt::VisualStateManager::GoToState(*this, c_previousPageButtonHiddenVisualState, false); + } + } + if (NextButtonVisibility() == winrt::PagerControlButtonVisibility::HiddenOnEdge) + { + if (selectedPageIndex != numberOfPages - 1) + { + winrt::VisualStateManager::GoToState(*this, c_nextPageButtonVisibleVisualState, false); + } + else + { + winrt::VisualStateManager::GoToState(*this, c_nextPageButtonHiddenVisualState, false); + } + } + if (LastButtonVisibility() == winrt::PagerControlButtonVisibility::HiddenOnEdge) + { + if (selectedPageIndex != numberOfPages - 1) + { + winrt::VisualStateManager::GoToState(*this, c_lastPageButtonVisibleVisualState, false); + } + else + { + winrt::VisualStateManager::GoToState(*this, c_lastPageButtonHiddenVisualState, false); + } + } +} + +/* NumberPanel logic */ +void PagerControl::UpdateNumberPanel(const int numberOfPages) +{ + if (numberOfPages < 0) + { + UpdateNumberOfPanelCollectionInfiniteItems(); + } + else if (numberOfPages < 8) + { + UpdateNumberPanelCollectionAllItems(numberOfPages); + } + else + { + const auto selectedIndex = SelectedPageIndex(); + // Idea: Choose correct "template" based on SelectedPageIndex (x) and NumberOfPages (n) + // 1 2 3 4 5 6 ... n <-- Items + if (selectedIndex < 4) + { + // First four items selected, create following pattern: + // 1 2 3 4 5... n + UpdateNumberPanelCollectionStartWithEllipsis(numberOfPages, selectedIndex); + } + else if (selectedIndex >= numberOfPages - 4) + { + // Last four items selected, create following pattern: + //1 [...] n-4 n-3 n-2 n-1 n + UpdateNumberPanelCollectionEndWithEllipsis(numberOfPages, selectedIndex); + } + else + { + // Neither start or end, so lets do this: + // 1 [...] x-2 x-1 x x+1 x+2 [...] n + // where x > 4 and x < n - 4 + UpdateNumberPanelCollectionCenterWithEllipsis(numberOfPages, selectedIndex); + } + } +} + +void PagerControl::UpdateNumberOfPanelCollectionInfiniteItems() +{ + const int selectedIndex = SelectedPageIndex(); + + m_numberPanelElements.Clear(); + if (selectedIndex < 3) + { + AppendButtonToNumberPanelList(1, 0); + AppendButtonToNumberPanelList(2, 0); + AppendButtonToNumberPanelList(3, 0); + AppendButtonToNumberPanelList(4, 0); + AppendButtonToNumberPanelList(5, 0); + MoveIdentifierToElement(selectedIndex); + } + else + { + AppendButtonToNumberPanelList(1, 0); + AppendEllipsisIconToNumberPanelList(); + AppendButtonToNumberPanelList(selectedIndex, 0); + AppendButtonToNumberPanelList(selectedIndex + 1, 0); + AppendButtonToNumberPanelList(selectedIndex + 2, 0); + MoveIdentifierToElement(3); + } +} + +void PagerControl::UpdateNumberPanelCollectionAllItems(int numberOfPages) +{ + // Check that the NumberOfPages did not change, so we can skip recreating collection + if (m_lastNumberOfPagesCount != numberOfPages) + { + m_numberPanelElements.Clear(); + for (int i = 0; i < numberOfPages && i < 7; i++) + { + AppendButtonToNumberPanelList(i + 1, numberOfPages); + } + } + MoveIdentifierToElement(SelectedPageIndex()); +} + +void PagerControl::UpdateNumberPanelCollectionStartWithEllipsis(int numberOfPages, int selectedIndex) +{ + if (m_lastNumberOfPagesCount != numberOfPages) + { + // Do a recalculation as the number of pages changed. + m_numberPanelElements.Clear(); + AppendButtonToNumberPanelList(1, numberOfPages); + AppendButtonToNumberPanelList(2, numberOfPages); + AppendButtonToNumberPanelList(3, numberOfPages); + AppendButtonToNumberPanelList(4, numberOfPages); + AppendButtonToNumberPanelList(5, numberOfPages); + if (ButtonPanelAlwaysShowFirstLastPageIndex()) + { + AppendEllipsisIconToNumberPanelList(); + AppendButtonToNumberPanelList(numberOfPages, numberOfPages); + } + } + // SelectedIndex is definitely the correct index here as we are counting from start + MoveIdentifierToElement(selectedIndex); +} + +void PagerControl::UpdateNumberPanelCollectionEndWithEllipsis(int numberOfPages, int selectedIndex) +{ + if (m_lastNumberOfPagesCount != numberOfPages) + { + // Do a recalculation as the number of pages changed. + m_numberPanelElements.Clear(); + if (ButtonPanelAlwaysShowFirstLastPageIndex()) + { + AppendButtonToNumberPanelList(1, numberOfPages); + AppendEllipsisIconToNumberPanelList(); + } + AppendButtonToNumberPanelList(numberOfPages - 4, numberOfPages); + AppendButtonToNumberPanelList(numberOfPages - 3, numberOfPages); + AppendButtonToNumberPanelList(numberOfPages - 2, numberOfPages); + AppendButtonToNumberPanelList(numberOfPages - 1, numberOfPages); + AppendButtonToNumberPanelList(numberOfPages, numberOfPages); + } + // We can only be either the last, the second from last or third from last + // => SelectedIndex = NumberOfPages - y with y in {1,2,3} + if (ButtonPanelAlwaysShowFirstLastPageIndex()) + { + // Last item sits at index 4. + // SelectedPageIndex for the last page is NumberOfPages - 1. + // => SelectedItem = SelectedIndex - NumberOfPages + 7; + MoveIdentifierToElement(selectedIndex - numberOfPages + 7); + } + else + { + // Last item sits at index 6. + // SelectedPageIndex for the last page is NumberOfPages - 1. + // => SelectedItem = SelectedIndex - NumberOfPages + 5; + MoveIdentifierToElement(selectedIndex - numberOfPages + 5); + } +} + +void PagerControl::UpdateNumberPanelCollectionCenterWithEllipsis(int numberOfPages, int selectedIndex) +{ + const auto showFirstLastPageIndex = ButtonPanelAlwaysShowFirstLastPageIndex(); + if (m_lastNumberOfPagesCount != numberOfPages) + { + // Do a recalculation as the number of pages changed. + m_numberPanelElements.Clear(); + if (showFirstLastPageIndex) + { + AppendButtonToNumberPanelList(1, numberOfPages); + AppendEllipsisIconToNumberPanelList(); + } + AppendButtonToNumberPanelList(selectedIndex, numberOfPages); + AppendButtonToNumberPanelList(selectedIndex + 1, numberOfPages); + AppendButtonToNumberPanelList(selectedIndex + 2, numberOfPages); + if (showFirstLastPageIndex) + { + AppendEllipsisIconToNumberPanelList(); + AppendButtonToNumberPanelList(numberOfPages, numberOfPages); + } + } + // "selectedIndex + 1" is our representation for SelectedIndex. + if (showFirstLastPageIndex) + { + // SelectedIndex + 1 is the fifth element. + // Collections are base zero, so the index to underline is 3. + MoveIdentifierToElement(3); + } + else + { + // SelectedIndex + 1 is the third element. + // Collections are base zero, so the index to underline is 1. + MoveIdentifierToElement(1); + } +} + +void PagerControl::MoveIdentifierToElement(int index) +{ + if (const auto indicator = m_selectedPageIndicator.get()) + { + if (const auto repeater = m_numberPanelRepeater.get()) + { + repeater.UpdateLayout(); + if (const auto element = repeater.TryGetElement(index).try_as()) + { + const auto boundingRect = element.TransformToVisual(repeater).TransformBounds(winrt::Rect::Rect(0, 0, (float)repeater.ActualWidth(), (float)repeater.ActualHeight())); + winrt::Thickness newMargin; + newMargin.Left = boundingRect.X; + newMargin.Top = 0; + newMargin.Right = 0; + newMargin.Bottom = 0; + indicator.Margin(newMargin); + indicator.Width(element.ActualWidth()); + } + } + } +} + +void PagerControl::AppendButtonToNumberPanelList(const int pageNumber, const int numberOfPages) +{ + winrt::Button button; + button.Content(winrt::box_value(pageNumber)); + const auto buttonClickedFunc = [this](auto const& sender, auto const& args) { + if (const auto button = sender.try_as()) + { + const int unboxedValue = winrt::unbox_value(button.Content()); + SelectedPageIndex(unboxedValue - 1); + } + }; + button.Click(buttonClickedFunc); + // Set the default style of buttons + button.Style(unbox_value(ResourceAccessor::ResourceLookup(*this, box_value(c_numberPanelButtonStyleName)))); + winrt::AutomationProperties::SetName(button, ResourceAccessor::GetLocalizedStringResource(SR_PagerControlPageTextName) + L" " + winrt::to_hstring(pageNumber)); + winrt::AutomationProperties::SetPositionInSet(button, pageNumber); + winrt::AutomationProperties::SetSizeOfSet(button, numberOfPages); + m_numberPanelElements.Append(button); +} + +void PagerControl::AppendEllipsisIconToNumberPanelList() +{ + winrt::SymbolIcon ellipsisIcon; + ellipsisIcon.Symbol(winrt::Symbol::More); + m_numberPanelElements.Append(ellipsisIcon); +} + +/* Interaction event listeners */ +void PagerControl::OnRootGridKeyDown(const winrt::IInspectable& sender, const winrt::KeyRoutedEventArgs& args) +{ + if (args.Key() == winrt::VirtualKey::Left || args.Key() == winrt::VirtualKey::GamepadDPadLeft) + { + winrt::FocusManager::TryMoveFocus(winrt::FocusNavigationDirection::Left); + } + else if (args.Key() == winrt::VirtualKey::Right || args.Key() == winrt::VirtualKey::GamepadDPadRight) + { + winrt::FocusManager::TryMoveFocus(winrt::FocusNavigationDirection::Right); + } +} + +void PagerControl::ComboBoxSelectionChanged(const winrt::IInspectable& sender, const winrt::SelectionChangedEventArgs& args) +{ + if (const auto comboBox = m_comboBox.get()) + { + SelectedPageIndex(comboBox.SelectedIndex()); + } +} + +void PagerControl::NumberBoxValueChanged(const winrt::IInspectable& sender, const winrt::NumberBoxValueChangedEventArgs& args) +{ + SelectedPageIndex((int)(args.NewValue()) - 1); +} + +void PagerControl::FirstButtonClicked(const IInspectable& sender, const winrt::RoutedEventArgs& e) +{ + SelectedPageIndex(0); + if (const auto command = FirstButtonCommand()) + { + command.Execute(nullptr); + } +} + +void PagerControl::PreviousButtonClicked(const IInspectable& sender, const winrt::RoutedEventArgs& e) +{ + // In this method, SelectedPageIndex is always greater than 1. + SelectedPageIndex(SelectedPageIndex() - 1); + if (const auto command = PreviousButtonCommand()) + { + command.Execute(nullptr); + } +} + +void PagerControl::NextButtonClicked(const IInspectable& sender, const winrt::RoutedEventArgs& e) +{ + // In this method, SelectedPageIndex is always less than maximum. + SelectedPageIndex(SelectedPageIndex() + 1); + if (const auto command = NextButtonCommand()) + { + command.Execute(nullptr); + } +} + +void PagerControl::LastButtonClicked(const IInspectable& sender, const winrt::RoutedEventArgs& e) +{ + SelectedPageIndex(NumberOfPages() - 1); + if (const auto command = LastButtonCommand()) + { + command.Execute(nullptr); + } +} diff --git a/dev/PagerControl/PagerControl.h b/dev/PagerControl/PagerControl.h new file mode 100644 index 0000000000..de1cf3473f --- /dev/null +++ b/dev/PagerControl/PagerControl.h @@ -0,0 +1,89 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#pragma once + +#include "pch.h" +#include "common.h" + +#include "PagerControl.g.h" +#include "PagerControl.properties.h" + +class PagerControl : + public ReferenceTracker, + public PagerControlProperties +{ + +public: + /* Common functions */ + PagerControl(); + ~PagerControl(); + + /* IFrameworkElement */ + void OnApplyTemplate(); + void OnPropertyChanged(const winrt::DependencyPropertyChangedEventArgs& args); + winrt::AutomationPeer OnCreateAutomationPeer(); + + /* Property changed handlers */ + void OnDisplayModeChanged(); + void UpdateDisplayModeAutoState(); + void OnNumberOfPagesChanged(const int oldValue); + void OnSelectedPageIndexChange(const int oldValue); + void OnButtonVisibilityChanged(const winrt::PagerControlButtonVisibility visibility, + const wstring_view visibleStateName, + const wstring_view collapsedStateName, + const wstring_view hiddenStateName, + const int hiddenOnEdgePageCriteria); + +private: + + /* UI updating */ + void UpdateTemplateSettingElementLists(); + void FillComboBoxCollectionToSize(const int numberOfPages); + void UpdateOnEdgeButtonVisualStates(); + + /* Eventing */ + void RaiseSelectedIndexChanged(); + + /* NumberPanel logic */ + void UpdateNumberPanel(const int numberOfPages); + void UpdateNumberOfPanelCollectionInfiniteItems(); + void UpdateNumberPanelCollectionAllItems(const int numberOfPages); + void UpdateNumberPanelCollectionStartWithEllipsis(const int numberOfPages, const int selectedIndex); + void UpdateNumberPanelCollectionEndWithEllipsis(const int numberOfPages, const int selectedIndex); + void UpdateNumberPanelCollectionCenterWithEllipsis(const int numberOfPages, const int selectedIndex); + void MoveIdentifierToElement(const int index); + void AppendButtonToNumberPanelList(const int pageNumber, const int numberOfPages); + void AppendEllipsisIconToNumberPanelList(); + + /* Interaction event listeners */ + void OnRootGridKeyDown(const winrt::IInspectable& sender, const winrt::KeyRoutedEventArgs& args); + void NumberBoxValueChanged(const winrt::IInspectable& sender, const winrt::NumberBoxValueChangedEventArgs& args); + void ComboBoxSelectionChanged(const winrt::IInspectable& sender, const winrt::SelectionChangedEventArgs& args); + void FirstButtonClicked(const IInspectable& sender, const winrt::RoutedEventArgs& args); + void PreviousButtonClicked(const IInspectable& sender, const winrt::RoutedEventArgs& args); + void NextButtonClicked(const IInspectable& sender, const winrt::RoutedEventArgs& args); + void LastButtonClicked(const IInspectable& sender, const winrt::RoutedEventArgs& args); + + + int m_lastSelectedPageIndex = -1; + int m_lastNumberOfPagesCount = 0; + + tracker_ref m_comboBox{ this }; + tracker_ref m_numberBox{ this }; + tracker_ref m_numberPanelRepeater{ this }; + tracker_ref m_selectedPageIndicator{ this }; + + winrt::FrameworkElement::KeyDown_revoker m_rootGridKeyDownRevoker{}; + winrt::ComboBox::SelectionChanged_revoker m_comboBoxSelectionChangedRevoker{}; + winrt::NumberBox::ValueChanged_revoker m_numberBoxValueChangedRevoker{}; + winrt::Button::Click_revoker m_firstPageButtonClickRevoker{}; + winrt::Button::Click_revoker m_previousPageButtonClickRevoker{}; + winrt::Button::Click_revoker m_nextPageButtonClickRevoker{}; + winrt::Button::Click_revoker m_lastPageButtonClickRevoker{}; + + winrt::IObservableVector m_comboBoxEntries{}; + winrt::IObservableVector m_numberPanelElements{}; + +}; + diff --git a/dev/PagerControl/PagerControl.idl b/dev/PagerControl/PagerControl.idl new file mode 100644 index 0000000000..a4de4b7dcc --- /dev/null +++ b/dev/PagerControl/PagerControl.idl @@ -0,0 +1,112 @@ +namespace MU_XC_NAMESPACE +{ +[WUXC_VERSION_PREVIEW] +[webhosthidden] +enum PagerControlDisplayMode +{ + Auto, + ComboBox, + NumberBox, + ButtonPanel, +}; + +[WUXC_VERSION_PREVIEW] +[webhosthidden] +enum PagerControlButtonVisibility +{ + Visible, + HiddenOnEdge, + Hidden, +}; + +[WUXC_VERSION_PREVIEW] +[webhosthidden] +runtimeclass PagerControlSelectedIndexChangedEventArgs +{ + Int32 NewPageIndex{get; }; + Int32 PreviousPageIndex{get; }; +}; + +[WUXC_VERSION_PREVIEW] +[webhosthidden] +[MUX_PROPERTY_NEEDS_DP_FIELD] +unsealed runtimeclass PagerControlTemplateSettings : Windows.UI.Xaml.DependencyObject +{ + PagerControlTemplateSettings(); + + Windows.Foundation.Collections.IVector Pages{ get; }; + Windows.Foundation.Collections.IVector NumberPanelItems { get; }; +} + +[WUXC_VERSION_PREVIEW] +[webhosthidden] +[MUX_PROPERTY_CHANGED_CALLBACK(TRUE)] +[MUX_PROPERTY_CHANGED_CALLBACK_METHODNAME("OnPropertyChanged")] +unsealed runtimeclass PagerControl : Windows.UI.Xaml.Controls.Control +{ + PagerControl(); + + PagerControlDisplayMode DisplayMode; + + [MUX_DEFAULT_VALUE("0")] + Int32 NumberOfPages; + + PagerControlButtonVisibility FirstButtonVisibility; + PagerControlButtonVisibility PreviousButtonVisibility; + PagerControlButtonVisibility NextButtonVisibility; + PagerControlButtonVisibility LastButtonVisibility; + + Windows.UI.Xaml.Input.ICommand FirstButtonCommand; + Windows.UI.Xaml.Input.ICommand PreviousButtonCommand; + Windows.UI.Xaml.Input.ICommand NextButtonCommand; + Windows.UI.Xaml.Input.ICommand LastButtonCommand; + Windows.UI.Xaml.Input.ICommand PagerInputCommand; + + Windows.UI.Xaml.Style FirstButtonStyle; + Windows.UI.Xaml.Style PreviousButtonStyle; + Windows.UI.Xaml.Style NextButtonStyle; + Windows.UI.Xaml.Style LastButtonStyle; + + [MUX_DEFAULT_VALUE("true")] + Boolean ButtonPanelAlwaysShowFirstLastPageIndex; + + [MUX_DEFAULT_VALUE("0")] + Int32 SelectedPageIndex; + + String PrefixText; + String SuffixText; + + event Windows.Foundation.TypedEventHandler SelectedIndexChanged; + + + [MUX_PROPERTY_NEEDS_DP_FIELD] + PagerControlTemplateSettings TemplateSettings{ get; }; + + static Windows.UI.Xaml.DependencyProperty DisplayModeProperty{ get; }; + + static Windows.UI.Xaml.DependencyProperty NumberOfPagesProperty{ get; }; + + static Windows.UI.Xaml.DependencyProperty FirstButtonVisibilityProperty{ get; }; + static Windows.UI.Xaml.DependencyProperty PreviousButtonVisibilityProperty{ get; }; + static Windows.UI.Xaml.DependencyProperty NextButtonVisibilityProperty{ get; }; + static Windows.UI.Xaml.DependencyProperty LastButtonVisibilityProperty{ get; }; + + static Windows.UI.Xaml.DependencyProperty FirstButtonCommandProperty{ get; }; + static Windows.UI.Xaml.DependencyProperty PreviousButtonCommandProperty{ get; }; + static Windows.UI.Xaml.DependencyProperty NextButtonCommandProperty{ get; }; + static Windows.UI.Xaml.DependencyProperty LastButtonCommandProperty{ get; }; + static Windows.UI.Xaml.DependencyProperty PagerInputCommandProperty{ get; }; + + static Windows.UI.Xaml.DependencyProperty FirstButtonStyleProperty{ get; }; + static Windows.UI.Xaml.DependencyProperty PreviousButtonStyleProperty{ get; }; + static Windows.UI.Xaml.DependencyProperty NextButtonStyleProperty{ get; }; + static Windows.UI.Xaml.DependencyProperty LastButtonStyleProperty{ get; }; + + static Windows.UI.Xaml.DependencyProperty ButtonPanelAlwaysShowFirstLastPageIndexProperty{ get; }; + static Windows.UI.Xaml.DependencyProperty SelectedPageIndexProperty{get; }; + + static Windows.UI.Xaml.DependencyProperty PrefixTextProperty{ get; }; + static Windows.UI.Xaml.DependencyProperty SuffixTextProperty{ get; }; +} + +} diff --git a/dev/PagerControl/PagerControl.vcxitems b/dev/PagerControl/PagerControl.vcxitems new file mode 100644 index 0000000000..2f5d83a73d --- /dev/null +++ b/dev/PagerControl/PagerControl.vcxitems @@ -0,0 +1,47 @@ + + + + $(MSBuildAllProjects);$(MSBuildThisFileFullPath) + true + {AB3261A7-9A8D-4A27-AEA2-3AAC0419C889} + + + + %(AdditionalIncludeDirectories);$(MSBuildThisFileDirectory) + %(PreprocessorDefinitions);PAGERCONTROL_INCLUDED + + + + + + + + + + + + + + + + + + + + + RS1 + DefaultStyle + + + RS1 + ThemeResources + + + + + + + + + + \ No newline at end of file diff --git a/dev/Pager/PrototypePager/Themes/PrototypePager.xaml b/dev/PagerControl/PagerControl.xaml similarity index 56% rename from dev/Pager/PrototypePager/Themes/PrototypePager.xaml rename to dev/PagerControl/PagerControl.xaml index bd40aa902f..fa3b19d647 100644 --- a/dev/Pager/PrototypePager/Themes/PrototypePager.xaml +++ b/dev/PagerControl/PagerControl.xaml @@ -1,28 +1,24 @@ - + + xmlns:muxc="using:Microsoft.UI.Xaml.Controls"> - 32 - - - - - + diff --git a/dev/PagerControl/PagerControlAutomationPeer.cpp b/dev/PagerControl/PagerControlAutomationPeer.cpp new file mode 100644 index 0000000000..fe9c94c941 --- /dev/null +++ b/dev/PagerControl/PagerControlAutomationPeer.cpp @@ -0,0 +1,83 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#include "pch.h" +#include "common.h" +#include "ResourceAccessor.h" +#include "PagerControl.h" +#include "PagerControlAutomationPeer.h" +#include "Utils.h" + +#include "PagerControlAutomationPeer.properties.cpp" + +PagerControlAutomationPeer::PagerControlAutomationPeer(winrt::PagerControl const& owner) + : ReferenceTracker(owner) +{ +} + +// IAutomationPeerOverrides +winrt::IInspectable PagerControlAutomationPeer::GetPatternCore(winrt::PatternInterface const& patternInterface) +{ + if (patternInterface == winrt::PatternInterface::Selection) + { + return *this; + } + + return __super::GetPatternCore(patternInterface); +} + +hstring PagerControlAutomationPeer::GetClassNameCore() +{ + return winrt::hstring_name_of(); +} + +hstring PagerControlAutomationPeer::GetNameCore() +{ + winrt::hstring name = __super::GetNameCore(); + + if (name.empty()) + { + if (const auto PagerControl = Owner().try_as()) + { + name = SharedHelpers::TryGetStringRepresentationFromObject(PagerControl.GetValue(winrt::AutomationProperties::NameProperty())); + } + } + + return name; +} + +winrt::AutomationControlType PagerControlAutomationPeer::GetAutomationControlTypeCore() +{ + return winrt::AutomationControlType::Menu; +} + +com_ptr PagerControlAutomationPeer::GetImpl() +{ + com_ptr impl = nullptr; + + if (const auto pagerControl = Owner().try_as()) + { + impl = winrt::get_self(pagerControl)->get_strong(); + } + + return impl; +} + +winrt::com_array PagerControlAutomationPeer::GetSelection() +{ + if (const auto pager = GetImpl()) + { + return { winrt::box_value(pager->SelectedPageIndex()) }; + } + return {}; +} + +void PagerControlAutomationPeer::RaiseSelectionChanged(double oldIndex, double newIndex) +{ + if (winrt::AutomationPeer::ListenerExists(winrt::AutomationEvents::PropertyChanged)) + { + RaisePropertyChangedEvent(winrt::SelectionPatternIdentifiers::SelectionProperty(), + winrt::PropertyValue::CreateDouble(oldIndex), + winrt::PropertyValue::CreateDouble(newIndex)); + } +} diff --git a/dev/PagerControl/PagerControlAutomationPeer.h b/dev/PagerControl/PagerControlAutomationPeer.h new file mode 100644 index 0000000000..4a6fee16a5 --- /dev/null +++ b/dev/PagerControl/PagerControlAutomationPeer.h @@ -0,0 +1,32 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#pragma once + +#include "PagerControl.h" +#include "PagerControlAutomationPeer.g.h" + +class PagerControlAutomationPeer : + public ReferenceTracker +{ + +public: + PagerControlAutomationPeer(winrt::PagerControl const& owner); + + /* IAutomationPeerOverrides */ + winrt::IInspectable GetPatternCore(winrt::PatternInterface const& patternInterface); + hstring GetClassNameCore(); + hstring GetNameCore(); + winrt::AutomationControlType GetAutomationControlTypeCore(); + + // ISelectionProvider + bool CanSelectMultiple() { return false; }; + bool IsSelectionRequired() { return true; }; + winrt::com_array GetSelection(); + + void RaiseSelectionChanged(double oldIndex, double newIndex); + +private: + com_ptr GetImpl(); +}; + diff --git a/dev/PagerControl/PagerControlAutomationPeer.idl b/dev/PagerControl/PagerControlAutomationPeer.idl new file mode 100644 index 0000000000..145773e6e3 --- /dev/null +++ b/dev/PagerControl/PagerControlAutomationPeer.idl @@ -0,0 +1,12 @@ +namespace MU_XAP_NAMESPACE +{ + +[WUXC_VERSION_PREVIEW] +[webhosthidden] +unsealed runtimeclass PagerControlAutomationPeer : Windows.UI.Xaml.Automation.Peers.FrameworkElementAutomationPeer +{ + PagerControlAutomationPeer(MU_XC_NAMESPACE.PagerControl owner); +} + +} + diff --git a/dev/PagerControl/PagerControlSelectedIndexChangedEventArgs.h b/dev/PagerControl/PagerControlSelectedIndexChangedEventArgs.h new file mode 100644 index 0000000000..aabaffce70 --- /dev/null +++ b/dev/PagerControl/PagerControlSelectedIndexChangedEventArgs.h @@ -0,0 +1,23 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#pragma once + +#include "PagerControlSelectedIndexChangedEventArgs.g.h" + +class PagerControlSelectedIndexChangedEventArgs : + public winrt::implementation::PagerControlSelectedIndexChangedEventArgsT +{ +public: + PagerControlSelectedIndexChangedEventArgs(const int previousIndex,const int newIndex) : + m_previousPageIndex(previousIndex), m_newPageIndex(newIndex) {}; + + int NewPageIndex() { return m_newPageIndex; }; + int PreviousPageIndex() { return m_previousPageIndex; }; + +private: + + int m_newPageIndex = -1; + int m_previousPageIndex = -1; + +}; diff --git a/dev/PagerControl/PagerControlTemplateSettings.cpp b/dev/PagerControl/PagerControlTemplateSettings.cpp new file mode 100644 index 0000000000..2c2f42b400 --- /dev/null +++ b/dev/PagerControl/PagerControlTemplateSettings.cpp @@ -0,0 +1,6 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#include "pch.h" +#include "common.h" +#include "PagerControlTemplateSettings.h" diff --git a/dev/PagerControl/PagerControlTemplateSettings.h b/dev/PagerControl/PagerControlTemplateSettings.h new file mode 100644 index 0000000000..22ceb56c2e --- /dev/null +++ b/dev/PagerControl/PagerControlTemplateSettings.h @@ -0,0 +1,15 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See LICENSE in the project root for license information. + +#pragma once + +#include "PagerControlTemplateSettings.g.h" +#include "PagerControlTemplateSettings.properties.h" + +class PagerControlTemplateSettings : + public winrt::implementation::PagerControlTemplateSettingsT, + public PagerControlTemplateSettingsProperties +{ +public: + PagerControlTemplateSettings() { }; +}; diff --git a/dev/PagerControl/PagerControl_themeresources.xaml b/dev/PagerControl/PagerControl_themeresources.xaml new file mode 100644 index 0000000000..3eb2dadb06 --- /dev/null +++ b/dev/PagerControl/PagerControl_themeresources.xaml @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 32 + + + + + + + diff --git a/dev/PagerControl/Resources.resw b/dev/PagerControl/Resources.resw new file mode 100644 index 0000000000..5462881f85 --- /dev/null +++ b/dev/PagerControl/Resources.resw @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + First page + Automation name and tooltip text for the first page button + + + Last page + Automation name and tooltip text for the last page button + + + Next page + Automation name and tooltip text for the next page button + + + Page + Name used for UIA to announce controls, e.g. "Page 5" + + + Page + Text indicating "Page" 2 of 4 + + + Previous page + Automation name and tooltip text for the previous page button + + + of + Text indicating Page 2 "of" 4 + + \ No newline at end of file diff --git a/dev/Pager/TestUI/PagerPage.xaml b/dev/PagerControl/TestUI/PagerControlPage.xaml similarity index 81% rename from dev/Pager/TestUI/PagerPage.xaml rename to dev/PagerControl/TestUI/PagerControlPage.xaml index 2ca2468b59..73ff3524c4 100644 --- a/dev/Pager/TestUI/PagerPage.xaml +++ b/dev/PagerControl/TestUI/PagerControlPage.xaml @@ -1,13 +1,12 @@  @@ -17,9 +16,39 @@ - - - + + + + + + + + + + + + + + + + + + + + + @@ -53,42 +82,42 @@ - + + - - - Auto + None AlwaysVisible HiddenOnEdge - - Auto + None AlwaysVisible HiddenOnEdge - - Auto + None AlwaysVisible HiddenOnEdge - - Auto + None AlwaysVisible HiddenOnEdge - + Auto NumberBox ComboBox NumberPanel - -