kspread Library API Documentation

kspread_handler.cc

00001 #include "kspread_handler.h"
00002 #include "kspread_view.h"
00003 
00004 #include <qpainter.h>
00005 #define KS_MIN_RECTSIZE 3
00006 
00007 KSpreadInsertHandler::KSpreadInsertHandler( KSpreadView* view, QWidget* widget, const KoDocumentEntry& entry, bool ischart )
00008     : EventHandler( widget ), m_entry( entry )
00009 {
00010     m_isChart = ischart;
00011     m_view = view;
00012     m_started = FALSE;
00013     m_clicked = FALSE;
00014 
00015     widget->setCursor( crossCursor );
00016 }
00017 
00018 KSpreadInsertHandler::~KSpreadInsertHandler()
00019 {
00020     ((QWidget*)target())->setCursor( arrowCursor );
00021     m_view->resetInsertHandle();
00022 }
00023 
00024 bool KSpreadInsertHandler::eventFilter( QObject*, QEvent* ev )
00025 {
00026     if ( ev->type() == QEvent::MouseButtonPress )
00027     {
00028     QMouseEvent* e = (QMouseEvent*)ev;
00029     
00030     m_geometryStart = e->pos();
00031     m_geometryEnd = e->pos();
00032     m_started = FALSE;
00033     m_clicked = TRUE;
00034     
00035     return TRUE;
00036     }
00037     else if ( ev->type() == QEvent::MouseMove )
00038     {
00039     if ( !m_clicked )
00040         return TRUE;
00041     
00042     QMouseEvent* e = (QMouseEvent*)ev;
00043     
00044     QPainter painter;
00045     painter.begin( (QWidget*)target() );
00046     painter.setRasterOp( NotROP );
00047 
00048     QPen pen;
00049     pen.setStyle( DashLine );
00050     painter.setPen( pen );
00051 
00052     if ( m_started )
00053         {
00054         int x = m_geometryStart.x();
00055         int y = m_geometryStart.y();
00056         if ( x > m_geometryEnd.x() )
00057         x = m_geometryEnd.x();
00058         if ( y > m_geometryEnd.y() )
00059         y = m_geometryEnd.y();
00060         int w = m_geometryEnd.x() - m_geometryStart.x();
00061         if ( w < 0 ) w *= -1;
00062         int h = m_geometryEnd.y() - m_geometryStart.y();
00063         if ( h < 0 ) h *= -1;
00064 
00065         if ( w < KS_MIN_RECTSIZE ) w = KS_MIN_RECTSIZE;
00066         if ( h < KS_MIN_RECTSIZE ) h = KS_MIN_RECTSIZE;
00067 
00068         painter.drawRect( x, y, w, h );
00069     }
00070     else
00071         m_started = TRUE;
00072 
00073     m_geometryEnd = e->pos();
00074 
00075     int x = m_geometryStart.x();
00076     int y = m_geometryStart.y();
00077     if ( x > m_geometryEnd.x() )
00078         x = m_geometryEnd.x();
00079     if ( y > m_geometryEnd.y() )
00080         y = m_geometryEnd.y();
00081     int w = m_geometryEnd.x() - m_geometryStart.x();
00082     if ( w < 0 ) w *= -1;
00083     int h = m_geometryEnd.y() - m_geometryStart.y();
00084     if ( h < 0 ) h *= -1;
00085 
00086     if ( w < KS_MIN_RECTSIZE ) w = KS_MIN_RECTSIZE;
00087     if ( h < KS_MIN_RECTSIZE ) h = KS_MIN_RECTSIZE;
00088 
00089     painter.drawRect( x, y, w, h );
00090     painter.end();
00091 
00092     return TRUE;
00093     }
00094     else if ( ev->type() == QEvent::MouseButtonRelease )
00095     {
00096     QMouseEvent* e = (QMouseEvent*)ev;
00097     
00098     if ( !m_started )
00099         {
00100         delete this;
00101         return TRUE;
00102     }
00103     
00104     m_geometryEnd = e->pos();
00105 
00106     int x = m_geometryStart.x();
00107     int y = m_geometryStart.y();
00108     if ( x > m_geometryEnd.x() )
00109         x = m_geometryEnd.x();
00110     if ( y > m_geometryEnd.y() )
00111         y = m_geometryEnd.y();
00112     int w = m_geometryEnd.x() - m_geometryStart.x();
00113     if ( w < 0 ) w *= -1;
00114     int h = m_geometryEnd.y() - m_geometryStart.y();
00115     if ( h < 0 ) h *= -1;
00116 
00117     if ( w < KS_MIN_RECTSIZE ) w = KS_MIN_RECTSIZE;
00118     if ( h < KS_MIN_RECTSIZE ) h = KS_MIN_RECTSIZE;
00119         
00120     QPainter painter;
00121     painter.begin( (QWidget*)target() );
00122 
00123     QPen pen;
00124     pen.setStyle( DashLine );
00125     painter.setPen( pen );
00126 
00127     painter.setRasterOp( NotROP );
00128     painter.drawRect( x, y, w, h );
00129     painter.end();
00130 
00131     if ( m_isChart )
00132         m_view->insertChart( QRect( x, y, w, h  ), m_entry );
00133     else
00134         m_view->insertChild( QRect( x, y, w, h  ), m_entry );
00135 
00136     delete this;
00137     return TRUE;
00138     }
00139     else if ( ev->type() == QEvent::KeyPress )
00140     {
00141     QKeyEvent* e = (QKeyEvent*)ev;
00142     if ( e->key() != Key_Escape )
00143         return FALSE;
00144     
00145     delete this;
00146     return TRUE;
00147     }
00148 
00149     return FALSE;
00150 }
00151 
00152 #include "kspread_handler.moc"
KDE Logo
This file is part of the documentation for kspread Library Version 1.4.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Mon Feb 13 09:43:13 2006 by doxygen 1.4.2 written by Dimitri van Heesch, © 1997-2003