[prev in list] [next in list] [prev in thread] [next in thread]
List: koffice-devel
Subject: KSpread patch
From: Norbert Andres <nandres () web ! de>
Date: 2003-09-27 11:14:45
[Download RAW message or body]
Hi,
here is a patch to fix the KSpread bugs 64794 and 61570.
Can somebody please take a look at it?
Regards
Norbert
(This patch doesn't mean that I will have more time for KSpread during the
next 2 or 3 weeks, but after some public ranting against KSpread developers I
want at least show that I am interested in fixing bugs but just can't due to
lack of time...)
["patch.diff" (text/x-diff)]
? patch.diff
Index: kspread_dlg_layout.cc
===================================================================
RCS file: /home/kde/koffice/kspread/kspread_dlg_layout.cc,v
retrieving revision 1.205
diff -u -r1.205 kspread_dlg_layout.cc
--- kspread_dlg_layout.cc 26 Aug 2003 23:49:37 -0000 1.205
+++ kspread_dlg_layout.cc 27 Sep 2003 11:08:23 -0000
@@ -4241,8 +4241,8 @@
for ( int x = dlg->left; x <= dlg->right; x++ )
{
KSpreadCell *obj = dlg->getTable()->nonDefaultCell( x, dlg->top );
- if ( obj->isObscuringForced() && dlg->isSingleCell() )
- continue;
+ if ( obj->isObscuringForced() /* && dlg->isSingleCell() */ )
+ obj = obj->obscuringCells().first();
obj->setTopBorderPen( tmpPen );
}
}
@@ -4275,7 +4275,7 @@
for ( int x = dlg->left; x <= dlg->right; x++ )
{
KSpreadCell *obj = dlg->getTable()->nonDefaultCell( x, dlg->bottom );
- if ( obj->isObscuringForced() && dlg->isSingleCell() )
+ if ( obj->isObscuringForced() /* && dlg->isSingleCell() */ )
obj = obj->obscuringCells().first();
obj->setBottomBorderPen( tmpPen );
}
@@ -4307,7 +4307,7 @@
for ( int y = dlg->top; y <= dlg->bottom; y++ )
{
KSpreadCell *obj = dlg->getTable()->nonDefaultCell( dlg->left, y );
- if ( obj->isObscuringForced() && dlg->isSingleCell() )
+ if ( obj->isObscuringForced() /* && dlg->isSingleCell() */ )
continue;
obj->setLeftBorderPen( tmpPen );
}
@@ -4355,7 +4355,7 @@
for ( int y = dlg->top; y <= dlg->bottom; y++ )
{
KSpreadCell * obj = dlg->getTable()->nonDefaultCell( dlg->right, y );
- if ( obj->isObscuringForced() && dlg->isSingleCell() )
+ if ( obj->isObscuringForced() /* && dlg->isSingleCell() */ )
obj = obj->obscuringCells().first();
obj->setRightBorderPen( tmpPen );
}
@@ -4383,7 +4383,7 @@
{
KSpreadCell *cell =
dlg->getTable()->nonDefaultCell( i, rw->row() );
- if ( cell->isObscuringForced() && dlg->isSingleCell() )
+ if ( cell->isObscuringForced() /* && dlg->isSingleCell() */ )
cell = cell->obscuringCells().first();
cell->setRightBorderPen( tmpPen );
}
Index: kspread_functions_datetime.cc
===================================================================
RCS file: /home/kde/koffice/kspread/kspread_functions_datetime.cc,v
retrieving revision 1.9
diff -u -r1.9 kspread_functions_datetime.cc
--- kspread_functions_datetime.cc 8 Feb 2003 14:47:33 -0000 1.9
+++ kspread_functions_datetime.cc 27 Sep 2003 11:08:23 -0000
@@ -37,6 +37,7 @@
#include <kspread_functions_helper.h>
#include <kspread_interpreter.h>
#include <kspread_util.h>
+#include <kspread_value.h>
// prototypes, sorted
bool kspreadfunc_currentDate( KSContext& context );
@@ -130,12 +131,9 @@
QDate date;
- kdDebug() << "EDATE 0" << endl;
if ( !getDate( context, args[0], date ) )
return false;
- kdDebug() << "EDATE" << endl;
-
int months;
if ( !KSUtil::checkType( context, args[1], KSValue::IntType, true ) )
@@ -183,8 +181,6 @@
months = (int) args[1]->doubleValue();
}
- kdDebug() << "EOMONTH" << endl;
-
if ( !getDate( context, args[0], date ) )
return false;
@@ -225,8 +221,6 @@
european = args[2]->boolValue();
}
- kdDebug() << "DAYS360" << endl;
-
if ( !getDate( context, args[0], date1 ) )
return false;
@@ -296,8 +290,6 @@
return true;
}
- kdDebug() << "YEAR" << endl;
-
QDate date;
if ( !getDate( context, args[0], date ) )
return false;
@@ -317,8 +309,6 @@
return true;
}
- kdDebug() << "Month"<< endl;
-
QDate date;
if ( !getDate( context, args[0], date ) )
return false;
@@ -338,7 +328,6 @@
return true;
}
- kdDebug() << "Day"<< endl;
QDate date;
if ( !getDate( context, args[0], date ) )
return false;
@@ -498,7 +487,6 @@
QDate date;
- kdDebug() << "Weekday"<< endl;
if ( !getDate( context, args[0], date ) )
return false;
@@ -526,12 +514,9 @@
QDate date;
- kdDebug() << "Datevalue"<< endl;
if ( !getDate( context, args[0], date ) )
return false;
- kdDebug() << "Date: " << date.day() << "." << date.month() << "." << date.year() << endl;
-
long int result = (long int) EDate::greg2jul( date );
context.setValue( new KSValue( result ) );
@@ -548,23 +533,8 @@
QTime time;
- if ( !KSUtil::checkType( context, args[0], KSValue::TimeType, true ) )
- {
- if ( !KSUtil::checkType( context, args[0], KSValue::StringType, true ) )
- return false;
-
- QString s = args[0]->stringValue();
- bool valid = false;
- QTime tmpTime = KGlobal::locale()->readTime( s, &valid );
- if ( valid )
- time = tmpTime;
- else
- return false;
- }
- else
- time = args[0]->timeValue();
-
- kdDebug() << "Time: " << time.hour() << ":" << time.minute() << ":" << time.second() << endl;
+ if ( !getTime( context, args[0], time ) )
+ return false;
double result = time.hour() * 3600 + time.minute() * 60 + time.second();
result = result / (double) SECSPERDAY;
@@ -588,7 +558,6 @@
if (!KSUtil::checkType( context, args[2], KSValue::IntType, true ))
return false;
- kdDebug() << "years"<< endl;
if ( !getDate( context, args[0], date1 ) )
return false;
@@ -658,7 +627,6 @@
if (!KSUtil::checkType( context, args[2], KSValue::IntType, true ))
return false;
- kdDebug() << "Months"<< endl;
if ( !getDate( context, args[0], date1 ) )
return false;
@@ -721,7 +689,6 @@
if (!KSUtil::checkType( context, args[2], KSValue::IntType, true ))
return false;
- kdDebug() << "Weeks"<< endl;
if ( !getDate( context, args[0], date1 ) )
return false;
@@ -781,7 +748,6 @@
QDate date1;
QDate date2;
- kdDebug() << "Days"<< endl;
if ( !getDate( context, args[0], date1 ) )
return false;
@@ -804,75 +770,54 @@
bool kspreadfunc_hours( KSContext& context )
{
QValueList<KSValue::Ptr>& args = context.value()->listValue();
- if ( !KSUtil::checkArgumentsCount( context,1, "hours",true ) )
+
+ if ( !KSUtil::checkArgumentsCount( context, 1, "hours", true ) )
return false;
- if (!KSUtil::checkType( context, args[0], KSValue::TimeType, true ) )
- {
- if ( !KSUtil::checkType( context, args[0], KSValue::StringType, true ) )
- return false;
- QTime tmp=KGlobal::locale()->readTime(args[0]->stringValue());
- if(tmp.isValid())
- context.setValue(new KSValue(tmp.hour()));
- else
- context.setValue(new KSValue(i18n("Err")));
- return true;
- }
- else
- {
- QTime tmp=args[0]->timeValue();
- context.setValue(new KSValue(tmp.hour()));
- }
- return true;
+
+ QTime tmpTime;
+
+ if (!getTime(context, args[0], tmpTime))
+ return false;
+
+ context.setValue( new KSValue( tmpTime.hour() ) );
+
+ return true;
}
// Function: minutes
bool kspreadfunc_minutes( KSContext& context )
{
QValueList<KSValue::Ptr>& args = context.value()->listValue();
- if ( !KSUtil::checkArgumentsCount( context,1, "minutes",true ) )
+
+ if ( !KSUtil::checkArgumentsCount( context, 1, "minutes", true ) )
return false;
- if (!KSUtil::checkType( context, args[0], KSValue::TimeType, true ) )
- {
- if ( !KSUtil::checkType( context, args[0], KSValue::StringType, true ) )
- return false;
- QTime tmp=KGlobal::locale()->readTime(args[0]->stringValue());
- if(tmp.isValid())
- context.setValue(new KSValue(tmp.minute()));
- else
- context.setValue(new KSValue(i18n("Err")));
- return true;
- }
- else
- {
- QTime tmp=args[0]->timeValue();
- context.setValue(new KSValue(tmp.minute()));
- }
- return true;
+
+ QTime tmpTime;
+
+ if (!getTime(context, args[0], tmpTime))
+ return false;
+
+ context.setValue( new KSValue( tmpTime.minute() ) );
+
+ return true;
}
// Function: seconds
bool kspreadfunc_seconds( KSContext& context )
{
QValueList<KSValue::Ptr>& args = context.value()->listValue();
- if ( !KSUtil::checkArgumentsCount( context,1, "seconds",true ) )
+
+ if ( !KSUtil::checkArgumentsCount( context, 1, "seconds", true ) )
return false;
- if (!KSUtil::checkType( context, args[0], KSValue::TimeType, true ) )
- {
- if ( !KSUtil::checkType( context, args[0], KSValue::StringType, true ) )
- return false;
- QTime tmp=KGlobal::locale()->readTime(args[0]->stringValue());
- if(tmp.isValid())
- context.setValue(new KSValue(tmp.second()));
- else
- context.setValue(new KSValue(i18n("Err")));
- return true;
- }
- else
- {
- QTime tmp=args[0]->timeValue();
- context.setValue(new KSValue(tmp.second()));
- }
- return true;
+
+ QTime tmpTime;
+
+ if (!getTime(context, args[0], tmpTime))
+ return false;
+
+ context.setValue( new KSValue( tmpTime.second() ) );
+
+ return true;
}
// Function: date
Index: kspread_functions_helper.cc
===================================================================
RCS file: /home/kde/koffice/kspread/kspread_functions_helper.cc,v
retrieving revision 1.3
diff -u -r1.3 kspread_functions_helper.cc
--- kspread_functions_helper.cc 13 Dec 2002 04:16:52 -0000 1.3
+++ kspread_functions_helper.cc 27 Sep 2003 11:08:24 -0000
@@ -115,6 +115,43 @@
return false;
}
+bool getTime( KSContext & context, KSValue::Ptr & arg, QTime & time )
+{
+ if ( !KSUtil::checkType( context, arg, KSValue::TimeType, true ) )
+ {
+ if ( !KSUtil::checkType( context, arg, KSValue::StringType, true ) )
+ {
+ if ( !KSUtil::checkType( context, arg, KSValue::DoubleType, true ) )
+ return false;
+
+ double d = arg->doubleValue();
+
+ KSpreadValue v(d);
+ time = v.asDateTime().time();
+
+ return true;
+ }
+ else
+ {
+ QString s = arg->stringValue();
+ bool valid = false;
+
+ time = KGlobal::locale()->readTime( s, &valid );
+ if ( !valid )
+ return false;
+
+ return true;
+ }
+ }
+ else
+ {
+ time = arg->timeValue();
+ return true;
+ }
+
+ return false;
+}
+
void addMonths( QDate & date, int months )
{
int d = date.day();
Index: kspread_functions_helper.h
===================================================================
RCS file: /home/kde/koffice/kspread/kspread_functions_helper.h,v
retrieving revision 1.2
diff -u -r1.2 kspread_functions_helper.h
--- kspread_functions_helper.h 27 Feb 2003 00:54:37 -0000 1.2
+++ kspread_functions_helper.h 27 Sep 2003 11:08:24 -0000
@@ -43,6 +43,7 @@
};
bool getDate( KSContext & context, KSValue::Ptr & arg, QDate & date );
+bool getTime( KSContext & context, KSValue::Ptr & arg, QTime & time );
void addMonths( QDate & date, int months );
_______________________________________________
koffice-devel mailing list
koffice-devel@mail.kde.org
http://mail.kde.org/mailman/listinfo/koffice-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic