kspread
kspread_handler.cc00001
00002
00003
00004
00005 #include <qpainter.h>
00006
00007 #include "kspread_view.h"
00008
00009 #include "kspread_handler.h"
00010
00011 #define KS_MIN_RECTSIZE 3
00012
00013 using namespace KSpread;
00014
00015 InsertHandler::InsertHandler( View* view, QWidget* widget )
00016 : KoEventHandler( widget )
00017 {
00018 m_view = view;
00019 m_started = false;
00020 m_clicked = false;
00021
00022 widget->setCursor( crossCursor );
00023 }
00024
00025 InsertHandler::~InsertHandler()
00026 {
00027 ((QWidget*)target())->setCursor( arrowCursor );
00028 m_view->resetInsertHandle();
00029 }
00030
00031 bool InsertHandler::eventFilter( QObject*, QEvent* ev )
00032 {
00033 if ( ev->type() == QEvent::MouseButtonPress )
00034 {
00035 QMouseEvent* e = (QMouseEvent*)ev;
00036
00037 m_geometryStart = e->pos();
00038 m_geometryEnd = e->pos();
00039 m_started = false;
00040 m_clicked = true;
00041
00042 return true;
00043 }
00044 else if ( ev->type() == QEvent::MouseMove )
00045 {
00046 if ( !m_clicked )
00047 return true;
00048
00049 QMouseEvent* e = (QMouseEvent*)ev;
00050
00051 QPainter painter;
00052 painter.begin( (QWidget*)target() );
00053 painter.setRasterOp( NotROP );
00054
00055 QPen pen;
00056 pen.setStyle( DashLine );
00057 painter.setPen( pen );
00058
00059 if ( m_started )
00060 {
00061 int x = m_geometryStart.x();
00062 int y = m_geometryStart.y();
00063 if ( x > m_geometryEnd.x() )
00064 x = m_geometryEnd.x();
00065 if ( y > m_geometryEnd.y() )
00066 y = m_geometryEnd.y();
00067 int w = m_geometryEnd.x() - m_geometryStart.x();
00068 if ( w < 0 ) w *= -1;
00069 int h = m_geometryEnd.y() - m_geometryStart.y();
00070 if ( h < 0 ) h *= -1;
00071
00072 if ( w < KS_MIN_RECTSIZE ) w = KS_MIN_RECTSIZE;
00073 if ( h < KS_MIN_RECTSIZE ) h = KS_MIN_RECTSIZE;
00074
00075 painter.drawRect( x, y, w, h );
00076 }
00077 else
00078 m_started = true;
00079
00080 m_geometryEnd = e->pos();
00081
00082 int x = m_geometryStart.x();
00083 int y = m_geometryStart.y();
00084 if ( x > m_geometryEnd.x() )
00085 x = m_geometryEnd.x();
00086 if ( y > m_geometryEnd.y() )
00087 y = m_geometryEnd.y();
00088 int w = m_geometryEnd.x() - m_geometryStart.x();
00089 if ( w < 0 ) w *= -1;
00090 int h = m_geometryEnd.y() - m_geometryStart.y();
00091 if ( h < 0 ) h *= -1;
00092
00093 if ( w < KS_MIN_RECTSIZE ) w = KS_MIN_RECTSIZE;
00094 if ( h < KS_MIN_RECTSIZE ) h = KS_MIN_RECTSIZE;
00095
00096 painter.drawRect( x, y, w, h );
00097 painter.end();
00098
00099 return true;
00100 }
00101 else if ( ev->type() == QEvent::MouseButtonRelease )
00102 {
00103 QMouseEvent* e = (QMouseEvent*)ev;
00104
00105 if ( !m_started )
00106 {
00107 delete this;
00108 return true;
00109 }
00110
00111 m_geometryEnd = e->pos();
00112
00113 int x = m_geometryStart.x();
00114 int y = m_geometryStart.y();
00115 if ( x > m_geometryEnd.x() )
00116 x = m_geometryEnd.x();
00117 if ( y > m_geometryEnd.y() )
00118 y = m_geometryEnd.y();
00119 int w = m_geometryEnd.x() - m_geometryStart.x();
00120 if ( w < 0 ) w *= -1;
00121 int h = m_geometryEnd.y() - m_geometryStart.y();
00122 if ( h < 0 ) h *= -1;
00123
00124 if ( w < KS_MIN_RECTSIZE ) w = KS_MIN_RECTSIZE;
00125 if ( h < KS_MIN_RECTSIZE ) h = KS_MIN_RECTSIZE;
00126
00127 QPainter painter;
00128 painter.begin( (QWidget*)target() );
00129
00130 QPen pen;
00131 pen.setStyle( DashLine );
00132 painter.setPen( pen );
00133
00134 painter.setRasterOp( NotROP );
00135 painter.drawRect( x, y, w, h );
00136 painter.end();
00137
00138 insertObject( QRect( x, y, w, h) );
00139
00140 delete this;
00141 return true;
00142 }
00143 else if ( ev->type() == QEvent::KeyPress )
00144 {
00145 QKeyEvent* e = (QKeyEvent*)ev;
00146 if ( e->key() != Key_Escape )
00147 return false;
00148
00149 delete this;
00150 return true;
00151 }
00152
00153 return false;
00154 }
00155
00156 InsertPartHandler::InsertPartHandler( View* view, QWidget* widget, const KoDocumentEntry& entry )
00157 : InsertHandler( view, widget ), m_entry( entry )
00158 {
00159 }
00160 InsertPartHandler::~InsertPartHandler()
00161 {
00162 }
00163 void InsertPartHandler::insertObject( QRect r)
00164 {
00165 m_view->insertChild( r, m_entry );
00166 }
00167
00168
00169 InsertChartHandler::InsertChartHandler( View* view, QWidget* widget, const KoDocumentEntry& entry )
00170 : InsertHandler( view, widget ), m_entry( entry )
00171 {
00172 }
00173 InsertChartHandler::~InsertChartHandler()
00174 {
00175 }
00176 void InsertChartHandler::insertObject( QRect r)
00177 {
00178 m_view->insertChart( r, m_entry );
00179 }
00180
00181 InsertPictureHandler::InsertPictureHandler( View* view, QWidget* widget, const KURL &file )
00182 : InsertHandler( view, widget )
00183 {
00184 m_file = file;
00185 }
00186 InsertPictureHandler::~InsertPictureHandler()
00187 {
00188 }
00189 void InsertPictureHandler::insertObject( QRect r)
00190 {
00191
00192 }
00193
00194 #include "kspread_handler.moc"
|