[rkward-cvs] SF.net SVN: rkward:[4265] trunk/rkward/rkward/plugin/rkoptionset.cpp

tfry at users.sourceforge.net tfry at users.sourceforge.net
Mon May 28 16:05:41 UTC 2012


Revision: 4265
          http://rkward.svn.sourceforge.net/rkward/?rev=4265&view=rev
Author:   tfry
Date:     2012-05-28 16:05:41 +0000 (Mon, 28 May 2012)
Log Message:
-----------
A few more bits.

Modified Paths:
--------------
    trunk/rkward/rkward/plugin/rkoptionset.cpp

Modified: trunk/rkward/rkward/plugin/rkoptionset.cpp
===================================================================
--- trunk/rkward/rkward/plugin/rkoptionset.cpp	2012-05-25 15:34:41 UTC (rev 4264)
+++ trunk/rkward/rkward/plugin/rkoptionset.cpp	2012-05-28 16:05:41 UTC (rev 4265)
@@ -193,16 +193,25 @@
 	RK_TRACE (PLUGIN);
 
 	int row = current_row->intValue () + 1;	// append feels more natural than insert, here
-	if (row <= 0) row = row_count->intValue ();
+	int nrows = row_count->intValue ();
+	if (row <= 0) row = nrows;
 
-	QMap<RKComponentPropertyStringList *, ColumnInfo>::const_iterator it = column_map.constBegin ();
-	for (; it != column_map.constEnd (); ++it) {
+	// adjust values
+	QMap<RKComponentPropertyStringList *, ColumnInfo>::iterator it = column_map.begin ();
+	for (; it != column_map.end (); ++it) {
 		RKComponentPropertyStringList* col = it.key ();
-		const ColumnInfo &column = it.value ();
+		ColumnInfo &column = it.value ();
 		QStringList values = col->values ();
 		values.insert (row, getDefaultValue (column, row));
 		col->setValues (values);
+		column.old_values = values;
 	}
+	// adjust status info
+	for (int i = nrows - 1; i > row; --i) {
+		if (unfinished_rows.remove (i)) unfinished_rows.insert (i+1);
+		if (invalid_rows.remove (i)) invalid_rows.insert (i+1);
+	}
+	unfinished_rows.insert (row);
 
 	current_row->setIntValue (row);
 }
@@ -211,22 +220,32 @@
 	RK_TRACE (PLUGIN);
 
 	int row = current_row->intValue ();
-	int nrow = row_count->intValue ();
+	int nrows = row_count->intValue ();
 	if (row < 0) {
 		RK_ASSERT (false);
 		return;
 	}
 
-	QMap<RKComponentPropertyStringList *, ColumnInfo>::const_iterator it = column_map.constBegin ();
-	for (; it != column_map.constEnd (); ++it) {
+	// adjust values
+	QMap<RKComponentPropertyStringList *, ColumnInfo>::iterator it = column_map.begin ();
+	for (; it != column_map.end (); ++it) {
 		RKComponentPropertyStringList* col = it.key ();
+		ColumnInfo &column = it.value ();
 		QStringList values = col->values ();
 		values.removeAt (row);
 		col->setValues (values);
+		column.old_values = values;
 	}
+	// adjust status info
+	invalid_rows.remove (row);
+	unfinished_rows.remove (row);
+	for (int i = row + 1; i < nrows; ++i) {
+		if (unfinished_rows.remove (i)) unfinished_rows.insert (i-1);
+		if (invalid_rows.remove (i)) invalid_rows.insert (i-1);
+	}
 
 	--row;
-	if ((row < 0) && (nrow > 1)) row = 0;
+	if ((row < 0) && (nrows > 1)) row = 0;
 	current_row->setIntValue (row);
 }
 
@@ -470,14 +489,12 @@
 	}
 
 	QPalette palette = display->header ()->palette ();
-	if (!isSatisfied ()) {		// implies that it is enabled
+	if (isInactive ()) {
+		palette.setColor (QPalette::Window, QColor (200, 200, 200));
+	} else if (!isSatisfied ()) {
 		palette.setColor (QPalette::Window, QColor (255, 0, 0));
 	} else {
-		if (isEnabled ()) {
-			palette.setColor (QPalette::Window, QColor (255, 255, 255));
-		} else {
-			palette.setColor (QPalette::Window, QColor (200, 200, 200));
-		}
+		palette.setColor (QPalette::Window, QColor (255, 255, 255));
 	}
 	display->header ()->setPalette (palette);
 }
@@ -510,9 +527,8 @@
 
 	ComponentStatus s = RKComponent::recursiveStatus ();
 	if (s == Dead) return s;
-#warning TODO
-//	if (!unfinished_rows.isEmpty ()) return Processing;
-//	if (update_timer.isActive ()) return Processing;
+	if (!unfinished_rows.isEmpty ()) return Processing;
+	if (update_timer.isActive ()) return Processing;
 	return s;
 }
 

This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.





More information about the rkward-tracker mailing list