From d197c6b11748a7e98ca8ddacf5f43023f25e667a Mon Sep 17 00:00:00 2001
From: Kevin Smith <git@kismith.co.uk>
Date: Fri, 27 Apr 2012 17:19:30 +0100
Subject: Clean up AdHoc to a usable state


diff --git a/Swift/QtUI/QtAdHocCommandWindow.cpp b/Swift/QtUI/QtAdHocCommandWindow.cpp
index 88aa708..b0281d9 100644
--- a/Swift/QtUI/QtAdHocCommandWindow.cpp
+++ b/Swift/QtUI/QtAdHocCommandWindow.cpp
@@ -15,7 +15,6 @@ const int FormLayoutIndex = 1;
 
 namespace Swift {
 QtAdHocCommandWindow::QtAdHocCommandWindow(boost::shared_ptr<OutgoingAdHocCommandSession> command) : command_(command) {
-	someActions_ = false;
 	formWidget_ = NULL;
 
 	setAttribute(Qt::WA_DeleteOnClose);
@@ -105,23 +104,23 @@ void QtAdHocCommandWindow::handleError(ErrorPayload::ref /*error*/) {
 }
 
 void QtAdHocCommandWindow::setForm(Form::ref form) {
+	form_ = form;
 	delete formWidget_;
 	formWidget_ = new QtFormWidget(form, this);
 	layout_->insertWidget(FormLayoutIndex, formWidget_);
 	show();
-	formWidget_->setEditable(someActions_);
 }
 
 void QtAdHocCommandWindow::setNoForm() {
+	form_.reset();
 	delete formWidget_;
 	formWidget_ = NULL;
-	show();
+	hide();
 }
 
 typedef std::pair<Command::Action, QPushButton*> ActionButton;
 
 void QtAdHocCommandWindow::setAvailableActions(Command::ref /*commandResult*/) {
-	someActions_ = false;
 	foreach (ActionButton pair, actions_) {
 		OutgoingAdHocCommandSession::ActionState state = command_->getActionState(pair.first);
 		if (state & OutgoingAdHocCommandSession::Present) {
@@ -132,15 +131,11 @@ void QtAdHocCommandWindow::setAvailableActions(Command::ref /*commandResult*/) {
 		}
 		if (state & OutgoingAdHocCommandSession::Enabled) {
 			pair.second->setEnabled(true);
-			someActions_ = true;
 		}
 		else {
 			pair.second->setEnabled(false);
 		}
 	}
-	if (formWidget_) {
-		formWidget_->setEditable(someActions_);
-	}
 }
 
 }
diff --git a/Swift/QtUI/QtAdHocCommandWindow.h b/Swift/QtUI/QtAdHocCommandWindow.h
index 7f824f8..42e3b1c 100644
--- a/Swift/QtUI/QtAdHocCommandWindow.h
+++ b/Swift/QtUI/QtAdHocCommandWindow.h
@@ -44,6 +44,5 @@ namespace Swift {
 			QPushButton* cancelButton_;
 			std::map<Command::Action, QPushButton*> actions_;
 			QBoxLayout* layout_;
-			bool someActions_;
 	};
 }
diff --git a/Swift/QtUI/QtFormWidget.cpp b/Swift/QtUI/QtFormWidget.cpp
index 158bc9d..1307735 100644
--- a/Swift/QtUI/QtFormWidget.cpp
+++ b/Swift/QtUI/QtFormWidget.cpp
@@ -44,6 +44,7 @@ QtFormWidget::QtFormWidget(Form::ref form, QWidget* parent) : QWidget(parent), f
 	}
 	scrollArea->setWidget(scroll);
 	scrollArea->setWidgetResizable(true);
+	setEditable(form->getType() != Form::CancelType && form->getType() != Form::ResultType);
 }
 
 QtFormWidget::~QtFormWidget() {
-- 
cgit v0.10.2-6-g49f6