summaryrefslogtreecommitdiffstats
path: root/kcontrol/displayconfig/monitorworkspace.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kcontrol/displayconfig/monitorworkspace.cpp')
-rw-r--r--kcontrol/displayconfig/monitorworkspace.cpp151
1 files changed, 151 insertions, 0 deletions
diff --git a/kcontrol/displayconfig/monitorworkspace.cpp b/kcontrol/displayconfig/monitorworkspace.cpp
new file mode 100644
index 000000000..b8907b71d
--- /dev/null
+++ b/kcontrol/displayconfig/monitorworkspace.cpp
@@ -0,0 +1,151 @@
+/**
+ * monitorworkspace.cpp
+ *
+ * Copyright (c) 2011 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include <tqcheckbox.h>
+#include <tqlabel.h>
+#include <tqlayout.h>
+#include <tqlineedit.h>
+#include <tqpushbutton.h>
+
+#include <unistd.h>
+#include <string>
+#include <stdio.h>
+#include <tqstring.h>
+
+#include "monitorworkspace.h"
+
+using namespace std;
+
+/**** Monitor Region ****/
+
+MonitorRegion::MonitorRegion()
+{
+}
+
+MonitorRegion::MonitorRegion(TQRect rect)
+{
+ rectangles.resize(1);
+ rectangles[0] = rect;
+}
+
+MonitorRegion::MonitorRegion(TQMemArray<TQRect> newrects)
+{
+ rectangles = newrects;
+}
+
+MonitorRegion::~MonitorRegion()
+{
+}
+
+TQMemArray<TQRect> MonitorRegion::rects()
+{
+ return rectangles;
+}
+
+MonitorRegion MonitorRegion::unite(MonitorRegion rect)
+{
+ int i;
+ int j;
+ TQMemArray<TQRect> newrectangles = rectangles.copy(); // This MUST be a copy, otherwise Bad Things will happen VERY quickly!
+ newrectangles.resize(rectangles.count() + rect.rects().count());
+ j=0;
+ for (i=rectangles.count();i<newrectangles.count();i++) {
+ newrectangles[i] = rect.rects()[j];
+ j++;
+ }
+ MonitorRegion newregion(newrectangles);
+ return newregion;
+}
+
+bool MonitorRegion::contains(TQRect rect)
+{
+ int i;
+ for (i=0;i<rectangles.count();i++) {
+ if (rectangles[i].intersects(rect))
+ return true;
+ }
+ return false;
+}
+
+/**** Draggable Monitor Widget ****/
+DraggableMonitor::DraggableMonitor( TQWidget* parent, const char* name, int wflags )
+ : TQLabel( parent, name, wflags )
+{
+ setAlignment(AlignHCenter | AlignVCenter);
+ setFrameShape(Box);
+ setFrameShadow(Plain);
+ setLineWidth(4);
+ setMidLineWidth(4);
+}
+
+DraggableMonitor::~DraggableMonitor()
+{
+
+}
+
+void DraggableMonitor::mousePressEvent(TQMouseEvent *event)
+{
+ lastMousePosition = event->pos();
+ emit(monitorSelected(screen_id));
+}
+
+void DraggableMonitor::mouseMoveEvent(TQMouseEvent *event)
+{
+ TQPoint mousePos = event->pos();
+ TQPoint mouseMove = TQPoint(mousePos.x() - lastMousePosition.x(), mousePos.y() - lastMousePosition.y());
+
+ int moveToX = x()+mouseMove.x();
+ int moveToY = y()+mouseMove.y();
+
+ int maxX = parentWidget()->width() - width() - 1;
+ int maxY = parentWidget()->height() - height() - 1;
+
+ if (moveToX < 1) moveToX = 1;
+ if (moveToY < 1) moveToY = 1;
+ if (moveToX > maxX) moveToX = maxX;
+ if (moveToY > maxY) moveToY = maxY;
+
+ move(moveToX, moveToY);
+}
+
+void DraggableMonitor::mouseReleaseEvent(TQMouseEvent *event)
+{
+ emit(monitorDragComplete(screen_id));
+}
+
+/**** Draggable Monitor Container ****/
+MonitorWorkspace::MonitorWorkspace( TQWidget* parent, const char* name )
+ : TQWorkspace( parent, name )
+{
+
+}
+
+MonitorWorkspace::~MonitorWorkspace()
+{
+
+}
+
+void MonitorWorkspace::resizeEvent( TQResizeEvent* re )
+{
+ TQWorkspace::resizeEvent(re);
+ emit(workspaceRelayoutNeeded());
+}
+
+#include "monitorworkspace.moc"