Skip to content

Commit af8542b

Browse files
committed
Refactor dialog modality handling to MessageDialog
Moved modality state and related methods from the Dialog base class to MessageDialog. Dialog now requires derived classes to implement GetModality and SetModality as pure virtual methods. Platform-specific MessageDialog implementations now manage their own modality state.
1 parent 274f0a2 commit af8542b

File tree

9 files changed

+69
-16
lines changed

9 files changed

+69
-16
lines changed

src/dialog.cpp

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,6 @@ namespace nativeapi {
44

55
Dialog::~Dialog() = default;
66

7-
DialogModality Dialog::GetModality() const {
8-
return modality_;
9-
}
10-
11-
void Dialog::SetModality(DialogModality modality) {
12-
modality_ = modality;
13-
}
14-
157
bool Dialog::Open() {
168
return false; // Base class implementation - should be overridden
179
}

src/dialog.h

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ class Dialog {
7676
*
7777
* @return The current DialogModality setting
7878
*/
79-
virtual DialogModality GetModality() const;
79+
virtual DialogModality GetModality() const = 0;
8080

8181
/**
8282
* @brief Set the modality of the dialog.
@@ -97,7 +97,7 @@ class Dialog {
9797
* dialog->Open(); // Open as modal dialog
9898
* ```
9999
*/
100-
virtual void SetModality(DialogModality modality);
100+
virtual void SetModality(DialogModality modality) = 0;
101101

102102
/**
103103
* @brief Open the dialog according to its modality setting.
@@ -131,12 +131,6 @@ class Dialog {
131131
* @return true if the dialog was successfully closed, false otherwise
132132
*/
133133
virtual bool Close();
134-
135-
protected:
136-
/**
137-
* @brief Current modality setting.
138-
*/
139-
DialogModality modality_ = DialogModality::None;
140134
};
141135

142136
} // namespace nativeapi

src/message_dialog.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,20 @@ class MessageDialog : public Dialog {
8181
*/
8282
std::string GetMessage() const;
8383

84+
/**
85+
* @brief Get the current modality setting of the dialog.
86+
*
87+
* @return The current DialogModality setting
88+
*/
89+
DialogModality GetModality() const override;
90+
91+
/**
92+
* @brief Set the modality of the dialog.
93+
*
94+
* @param modality The modality type to set
95+
*/
96+
void SetModality(DialogModality modality) override;
97+
8498
/**
8599
* @brief Open the dialog.
86100
*
@@ -112,6 +126,11 @@ class MessageDialog : public Dialog {
112126
* message-dialog-specific implementation details.
113127
*/
114128
std::unique_ptr<Impl> pimpl_;
129+
130+
/**
131+
* @brief Current modality setting.
132+
*/
133+
DialogModality modality_ = DialogModality::None;
115134
};
116135

117136
} // namespace nativeapi

src/platform/android/message_dialog_android.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,14 @@ std::string MessageDialog::GetMessage() const {
6666
return pimpl_->GetMessage();
6767
}
6868

69+
DialogModality MessageDialog::GetModality() const {
70+
return modality_;
71+
}
72+
73+
void MessageDialog::SetModality(DialogModality modality) {
74+
modality_ = modality;
75+
}
76+
6977
bool MessageDialog::Open() {
7078
DialogModality modality = GetModality();
7179
return pimpl_->Open(modality);

src/platform/ios/message_dialog_ios.mm

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,14 @@ bool Close() {
7474
return pimpl_->GetMessage();
7575
}
7676

77+
DialogModality MessageDialog::GetModality() const {
78+
return modality_;
79+
}
80+
81+
void MessageDialog::SetModality(DialogModality modality) {
82+
modality_ = modality;
83+
}
84+
7785
bool MessageDialog::Open() {
7886
DialogModality modality = GetModality();
7987
return pimpl_->Open(modality);

src/platform/linux/message_dialog_linux.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,14 @@ std::string MessageDialog::GetMessage() const {
177177
return pimpl_->GetMessage();
178178
}
179179

180+
DialogModality MessageDialog::GetModality() const {
181+
return modality_;
182+
}
183+
184+
void MessageDialog::SetModality(DialogModality modality) {
185+
modality_ = modality;
186+
}
187+
180188
bool MessageDialog::Open() {
181189
DialogModality modality = GetModality();
182190
return pimpl_->Open(modality);

src/platform/macos/message_dialog_macos.mm

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,14 @@ bool Close() {
151151
return pimpl_->GetMessage();
152152
}
153153

154+
DialogModality MessageDialog::GetModality() const {
155+
return modality_;
156+
}
157+
158+
void MessageDialog::SetModality(DialogModality modality) {
159+
modality_ = modality;
160+
}
161+
154162
bool MessageDialog::Open() {
155163
DialogModality modality = GetModality();
156164
return pimpl_->Open(modality);

src/platform/ohos/message_dialog_ohos.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,14 @@ std::string MessageDialog::GetMessage() const {
6565
return pimpl_->GetMessage();
6666
}
6767

68+
DialogModality MessageDialog::GetModality() const {
69+
return modality_;
70+
}
71+
72+
void MessageDialog::SetModality(DialogModality modality) {
73+
modality_ = modality;
74+
}
75+
6876
bool MessageDialog::Open() {
6977
DialogModality modality = GetModality();
7078
return pimpl_->Open(modality);

src/platform/windows/message_dialog_windows.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,14 @@ std::string MessageDialog::GetMessage() const {
8484
return pimpl_->GetMessage();
8585
}
8686

87+
DialogModality MessageDialog::GetModality() const {
88+
return modality_;
89+
}
90+
91+
void MessageDialog::SetModality(DialogModality modality) {
92+
modality_ = modality;
93+
}
94+
8795
bool MessageDialog::Open() {
8896
DialogModality modality = GetModality();
8997
return pimpl_->Open(modality);

0 commit comments

Comments
 (0)