summaryrefslogtreecommitdiff
path: root/indra/newview/llpanelclassified.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llpanelclassified.cpp')
-rw-r--r--indra/newview/llpanelclassified.cpp59
1 files changed, 44 insertions, 15 deletions
diff --git a/indra/newview/llpanelclassified.cpp b/indra/newview/llpanelclassified.cpp
index afba55f4aa..4779470039 100644
--- a/indra/newview/llpanelclassified.cpp
+++ b/indra/newview/llpanelclassified.cpp
@@ -249,7 +249,7 @@ void LLPanelClassified::apply()
{
// Apply is used for automatically saving results, so only
// do that if there is a difference, and this is a save not create.
- if (mDirty && mPaidFor)
+ if (checkDirty() && mPaidFor)
{
sendClassifiedInfoUpdate();
}
@@ -293,7 +293,8 @@ void LLPanelClassified::saveCallback(S32 option, void* data)
BOOL LLPanelClassified::canClose()
{
- if (mForceClose || !mDirty) return TRUE;
+ if (mForceClose || !checkDirty())
+ return TRUE;
LLString::format_map_t args;
args["[NAME]"] = mNameEditor->getText();
@@ -656,7 +657,7 @@ void LLPanelClassified::refresh()
mSetBtn->setVisible(is_self);
mSetBtn->setEnabled(is_self);
- mUpdateBtn->setEnabled(is_self && mDirty);
+ mUpdateBtn->setEnabled(is_self && checkDirty());
mUpdateBtn->setVisible(is_self);
}
}
@@ -716,29 +717,44 @@ void LLPanelClassified::callbackGotPriceForListing(S32 option, LLString text, vo
}
-// static
-void LLPanelClassified::callbackConfirmPublish(S32 option, void* data)
-{
- LLPanelClassified* self = (LLPanelClassified*)data;
+// invoked from callbackConfirmPublish
+void LLPanelClassified::confirmPublish(S32 option)
+{
// Option 0 = publish
if (option != 0) return;
- self->sendClassifiedInfoUpdate();
+ sendClassifiedInfoUpdate();
// Big hack - assume that top picks are always in a browser,
// and non-finder-classifieds are always in a tab container.
- if (self->mInFinder)
+ if (mInFinder)
{
// TODO: enable this
- //LLPanelDirClassifieds* panel = (LLPanelDirClassifieds*)self->getParent();
- //panel->renameClassified(self->mClassifiedID, self->mNameEditor->getText().c_str());
+ //LLPanelDirClassifieds* panel = (LLPanelDirClassifieds*)getParent();
+ //panel->renameClassified(mClassifiedID, mNameEditor->getText().c_str());
}
else
{
- LLTabContainerVertical* tab = (LLTabContainerVertical*)self->getParent();
- tab->setCurrentTabName(self->mNameEditor->getText());
+ LLTabContainerVertical* tab = (LLTabContainerVertical*)getParent();
+ tab->setCurrentTabName(mNameEditor->getText());
}
+
+ // Tell all the widgets to reset their dirty state since the ad was just saved
+ mSnapshotCtrl->resetDirty();
+ mNameEditor->resetDirty();
+ mDescEditor->resetDirty();
+ mLocationEditor->resetDirty();
+ mCategoryCombo->resetDirty();
+ mMatureCheck->resetDirty();
+ mAutoRenewCheck->resetDirty();
+}
+
+// static
+void LLPanelClassified::callbackConfirmPublish(S32 option, void* data)
+{
+ LLPanelClassified* self = (LLPanelClassified*)data;
+ self->confirmPublish(option);
}
// static
@@ -811,13 +827,27 @@ void LLPanelClassified::onClickSet(void* data)
}
+BOOL LLPanelClassified::checkDirty()
+{
+ mDirty = FALSE;
+ if ( mSnapshotCtrl ) mDirty |= mSnapshotCtrl->isDirty();
+ if ( mNameEditor ) mDirty |= mNameEditor->isDirty();
+ if ( mDescEditor ) mDirty |= mDescEditor->isDirty();
+ if ( mLocationEditor ) mDirty |= mLocationEditor->isDirty();
+ if ( mCategoryCombo ) mDirty |= mCategoryCombo->isDirty();
+ if ( mMatureCheck ) mDirty |= mMatureCheck->isDirty();
+ if ( mAutoRenewCheck ) mDirty |= mAutoRenewCheck->isDirty();
+
+ return mDirty;
+}
+
// static
void LLPanelClassified::onCommitAny(LLUICtrl* ctrl, void* data)
{
LLPanelClassified* self = (LLPanelClassified*)data;
if (self)
{
- self->mDirty = true;
+ self->checkDirty();
}
}
@@ -825,7 +855,6 @@ void LLPanelClassified::onCommitAny(LLUICtrl* ctrl, void* data)
void LLPanelClassified::onFocusReceived(LLUICtrl* ctrl, void* data)
{
// allow the data to be saved
- // Dave/Simon TODO: replace this with better isDirty() functionality
onCommitAny(ctrl, data);
}