summaryrefslogtreecommitdiff
path: root/src/tasks/TaskWindow.cpp
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-04-06 23:45:24 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-04-06 23:45:24 (GMT)
commitbbfbb81086897d50b67bf1494ac150eb607add72 (patch)
tree80bab3ddb1f62f847f12947bc81fac2c091669b8 /src/tasks/TaskWindow.cpp
parent8f8de875c6f7a68a3e47252a8653abb72fd398c1 (diff)
downloadpowder-bbfbb81086897d50b67bf1494ac150eb607add72.zip
powder-bbfbb81086897d50b67bf1494ac150eb607add72.tar.gz
Confirmation Dialogue, Save selection and multi-delete
Diffstat (limited to 'src/tasks/TaskWindow.cpp')
-rw-r--r--src/tasks/TaskWindow.cpp66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/tasks/TaskWindow.cpp b/src/tasks/TaskWindow.cpp
new file mode 100644
index 0000000..ac22c79
--- /dev/null
+++ b/src/tasks/TaskWindow.cpp
@@ -0,0 +1,66 @@
+/*
+ * TaskWindow.cpp
+ *
+ * Created on: Apr 6, 2012
+ * Author: Simon
+ */
+
+#include "interface/Label.h"
+#include "TaskWindow.h"
+#include "Task.h"
+
+TaskWindow::TaskWindow(std::string title_, Task * task_):
+ task(task_),
+ title(title_),
+ ui::Window(ui::Point(-1, -1), ui::Point(300, 200)),
+ progress(0),
+ done(false)
+{
+
+ ui::Label * tempLabel = new ui::Label(ui::Point(3, 3), ui::Point(Size.X-6, 16), title);
+ AddComponent(tempLabel);
+
+ statusLabel = new ui::Label(ui::Point(3, 19), ui::Point(Size.X-6, 16), "");
+ AddComponent(statusLabel);
+
+ ui::Engine::Ref().ShowWindow(this);
+
+ task->SetTaskListener(this);
+ task->Start();
+}
+
+void TaskWindow::NotifyStatus(Task * task)
+{
+ statusLabel->SetText(task->GetStatus());
+}
+
+void TaskWindow::NotifyDone(Task * task)
+{
+ if(ui::Engine::Ref().GetWindow()==this)
+ {
+ ui::Engine::Ref().CloseWindow();
+ delete this;
+ }
+}
+
+void TaskWindow::NotifyProgress(Task * task)
+{
+ progress = task->GetProgress();
+}
+
+void TaskWindow::OnDraw()
+{
+ Graphics * g = ui::Engine::Ref().g;
+ g->clearrect(Position.X-2, Position.Y-2, Size.X+3, Size.Y+3);
+ g->drawrect(Position.X, Position.Y, Size.X, Size.Y, 255, 255, 255, 255);
+
+ g->drawrect(Position.X + 20, Position.Y + 36, Size.X-40, 24, 255, 255, 255, 255);
+
+ float size = float(Size.X-40)*(float(progress)/100.0f); // TIL...
+ g->fillrect(Position.X + 20, Position.Y + 36, size, 24, 255, 255, 255, 255);
+}
+
+TaskWindow::~TaskWindow() {
+ delete task;
+}
+