aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules
diff options
context:
space:
mode:
authorGravatar Elvio Basello2008-04-03 23:29:02 +0000
committerGravatar Elvio Basello2008-04-03 23:29:02 +0000
commit529524db3f530e4edaf741a40a91d1a5787027ac (patch)
tree681d9b67ad62dea930a09e46aefa7e6a0cd418fd /src/modules
parentget rid of $KVI_INSTALL_PREFIX and $KVI_VERSION_BRANCH ; more cmake fixes for... (diff)
downloadKVIrc-529524db3f530e4edaf741a40a91d1a5787027ac.tar.gz
KVIrc-529524db3f530e4edaf741a40a91d1a5787027ac.tar.bz2
KVIrc-529524db3f530e4edaf741a40a91d1a5787027ac.zip
added a skel for windows on Tom's patch
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@1386 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/dcc/adpcmcodec.cpp138
-rw-r--r--src/modules/dcc/adpcmcodec.h7
-rw-r--r--src/modules/dcc/broker.cpp42
-rw-r--r--src/modules/dcc/broker.h21
-rw-r--r--src/modules/dcc/canvas.cpp527
-rw-r--r--src/modules/dcc/canvas.h81
-rw-r--r--src/modules/dcc/canvaswidget.cpp2701
-rw-r--r--src/modules/dcc/canvaswidget.h555
-rw-r--r--src/modules/dcc/chat.cpp17
-rw-r--r--src/modules/dcc/chat.h13
-rw-r--r--src/modules/dcc/codec.h2
-rw-r--r--src/modules/dcc/descriptor.cpp9
-rw-r--r--src/modules/dcc/descriptor.h9
-rw-r--r--src/modules/dcc/dialogs.cpp24
-rw-r--r--src/modules/dcc/dialogs.h5
-rw-r--r--src/modules/dcc/gsmcodec.cpp221
-rw-r--r--src/modules/dcc/libkvidcc.cpp20
-rw-r--r--src/modules/dcc/marshal.cpp5
-rw-r--r--src/modules/dcc/marshal.h9
-rw-r--r--src/modules/dcc/requests.cpp38
-rw-r--r--src/modules/dcc/send.cpp45
-rw-r--r--src/modules/dcc/send.h34
-rw-r--r--src/modules/dcc/thread.cpp5
-rw-r--r--src/modules/dcc/thread.h3
-rw-r--r--src/modules/dcc/utils.cpp2
-rw-r--r--src/modules/dcc/voice.cpp37
-rw-r--r--src/modules/dcc/voice.h20
-rw-r--r--src/modules/dcc/window.cpp3
-rw-r--r--src/modules/dcc/window.h6
29 files changed, 2199 insertions, 2400 deletions
diff --git a/src/modules/dcc/adpcmcodec.cpp b/src/modules/dcc/adpcmcodec.cpp
index 65f12a00d..9b32188fc 100644
--- a/src/modules/dcc/adpcmcodec.cpp
+++ b/src/modules/dcc/adpcmcodec.cpp
@@ -53,48 +53,47 @@
// Intel ADPCM step variation table */
static int indexTable[16] = {
- -1, -1, -1, -1, 2, 4, 6, 8,
- -1, -1, -1, -1, 2, 4, 6, 8,
+ -1, -1, -1, -1, 2, 4, 6, 8,
+ -1, -1, -1, -1, 2, 4, 6, 8,
};
static int stepsizeTable[89] = {
- 7, 8, 9, 10, 11, 12, 13, 14, 16, 17,
- 19, 21, 23, 25, 28, 31, 34, 37, 41, 45,
- 50, 55, 60, 66, 73, 80, 88, 97, 107, 118,
- 130, 143, 157, 173, 190, 209, 230, 253, 279, 307,
- 337, 371, 408, 449, 494, 544, 598, 658, 724, 796,
- 876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066,
- 2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358,
- 5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899,
- 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767
+ 7, 8, 9, 10, 11, 12, 13, 14, 16, 17,
+ 19, 21, 23, 25, 28, 31, 34, 37, 41, 45,
+ 50, 55, 60, 66, 73, 80, 88, 97, 107, 118,
+ 130, 143, 157, 173, 190, 209, 230, 253, 279, 307,
+ 337, 371, 408, 449, 494, 544, 598, 658, 724, 796,
+ 876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066,
+ 2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358,
+ 5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899,
+ 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767
};
-
void ADPCM_compress(short indata[],char outdata[],int len,ADPCM_state *state)
{
- short *lpIn; /* Input buffer pointer */
- signed char *lpOut; /* output buffer pointer */
- int val; /* Current input sample value */
- int sign; /* Current adpcm sign bit */
- int delta; /* Current adpcm output value */
- int diff; /* Difference between val and valprev */
- int step; /* Stepsize */
- int valpred; /* Predicted output value */
- int vpdiff; /* Current change to valpred */
- int index; /* Current step change index */
- int outputbuffer = 0; /* place to keep previous 4-bit value */
- int bufferstep; /* toggle between outputbuffer/output */
-
- lpOut = (signed char *)outdata;
- lpIn = indata;
+ short *lpIn; /* Input buffer pointer */
+ signed char *lpOut; /* output buffer pointer */
+ int val; /* Current input sample value */
+ int sign; /* Current adpcm sign bit */
+ int delta; /* Current adpcm output value */
+ int diff; /* Difference between val and valprev */
+ int step; /* Stepsize */
+ int valpred; /* Predicted output value */
+ int vpdiff; /* Current change to valpred */
+ int index; /* Current step change index */
+ int outputbuffer = 0; /* place to keep previous 4-bit value */
+ int bufferstep; /* toggle between outputbuffer/output */
+
+ lpOut = (signed char *)outdata;
+ lpIn = indata;
+
+ valpred = state->valprev;
+ index = state->index;
+ step = stepsizeTable[index];
- valpred = state->valprev;
- index = state->index;
- step = stepsizeTable[index];
-
- bufferstep = 1;
+ bufferstep = 1;
- for ( ;len > 0;len-- ) {
+ for ( ;len > 0;len-- ) {
val = *lpIn++;
// Step 1 - compute difference with previous value
diff = val - valpred;
@@ -112,20 +111,20 @@ void ADPCM_compress(short indata[],char outdata[],int len,ADPCM_state *state)
delta = 0;
vpdiff = (step >> 3);
if (diff >=step){
- delta = 4;
- diff -= step;
- vpdiff += step;
+ delta = 4;
+ diff -= step;
+ vpdiff += step;
}
step >>= 1;
if (diff >= step) {
- delta |= 2;
- diff -= step;
- vpdiff += step;
+ delta |= 2;
+ diff -= step;
+ vpdiff += step;
}
step >>= 1;
if ( diff >= step ) {
- delta |= 1;
- vpdiff += step;
+ delta |= 1;
+ vpdiff += step;
}
// Step 3 - Update previous value
if(sign)valpred -= vpdiff;
@@ -143,37 +142,36 @@ void ADPCM_compress(short indata[],char outdata[],int len,ADPCM_state *state)
if ( bufferstep )outputbuffer = (delta << 4) & 0xf0;
else *lpOut++ = (delta & 0x0f) | outputbuffer;
bufferstep = !bufferstep;
- }
- // Output last step, if needed
- if (!bufferstep)*lpOut++ = outputbuffer;
- state->valprev = valpred;
- state->index = index;
+ }
+ // Output last step, if needed
+ if (!bufferstep)*lpOut++ = outputbuffer;
+ state->valprev = valpred;
+ state->index = index;
}
void ADPCM_uncompress(char indata[],short outdata[],int len,ADPCM_state *state)
{
- signed char *inp; /* Input buffer pointer */
- short *outp; /* output buffer pointer */
- int sign; /* Current adpcm sign bit */
- int delta; /* Current adpcm output value */
- int step; /* Stepsize */
- int valpred; /* Predicted value */
- int vpdiff; /* Current change to valpred */
- int index; /* Current step change index */
- int inputbuffer=0; /* place to keep next 4-bit value */
- int bufferstep; /* toggle between inputbuffer/input */
-
- outp = outdata;
- inp = (signed char *)indata;
+ signed char *inp; /* Input buffer pointer */
+ short *outp; /* output buffer pointer */
+ int sign; /* Current adpcm sign bit */
+ int delta; /* Current adpcm output value */
+ int step; /* Stepsize */
+ int valpred; /* Predicted value */
+ int vpdiff; /* Current change to valpred */
+ int index; /* Current step change index */
+ int inputbuffer=0; /* place to keep next 4-bit value */
+ int bufferstep; /* toggle between inputbuffer/input */
+
+ outp = outdata;
+ inp = (signed char *)indata;
+
+ valpred = state->valprev;
+ index = state->index;
+ step = stepsizeTable[index];
- valpred = state->valprev;
- index = state->index;
- step = stepsizeTable[index];
+ bufferstep = 0;
- bufferstep = 0;
-
- for ( ; len > 0 ; len-- ) {
-
+ for ( ; len > 0 ; len-- ) {
/* Step 1 - get the delta value */
if ( bufferstep )delta = inputbuffer & 0xf;
else {
@@ -213,10 +211,10 @@ void ADPCM_uncompress(char indata[],short outdata[],int len,ADPCM_state *state)
/* Step 7 - Output value */
*outp++ = valpred;
- }
-
- state->valprev = valpred;
- state->index = index;
+ }
+
+ state->valprev = valpred;
+ state->index = index;
}
diff --git a/src/modules/dcc/adpcmcodec.h b/src/modules/dcc/adpcmcodec.h
index 63343df07..142ff4b6d 100644
--- a/src/modules/dcc/adpcmcodec.h
+++ b/src/modules/dcc/adpcmcodec.h
@@ -30,13 +30,14 @@
// 16384 32768 | 8192 | ~110 250 290
//
-#include <qstring.h> // fix for qtextstream.h
+#include <QString> // fix for qtextstream.h
+
#include "codec.h"
typedef struct adpcm_state
{
- short valprev; /* Previous output value */
- char index; /* Index into stepsize table */
+ short valprev; /* Previous output value */
+ char index; /* Index into stepsize table */
} ADPCM_state;
diff --git a/src/modules/dcc/broker.cpp b/src/modules/dcc/broker.cpp
index 4c081713d..1827011fa 100644
--- a/src/modules/dcc/broker.cpp
+++ b/src/modules/dcc/broker.cpp
@@ -24,10 +24,11 @@
#include "dialogs.h"
#include "chat.h"
#include "send.h"
+#include "voice.h"
+
#ifdef COMPILE_DCC_CANVAS
-#include "canvas.h"
+ #include "canvas.h"
#endif
-#include "voice.h"
#include "kvi_app.h"
#include "kvi_frame.h"
@@ -40,13 +41,13 @@
#include "kvi_ircconnection.h"
#include "kvi_sharedfiles.h"
+#include <QFileInfo>
+#include <QString>
+
// kvi_app.cpp
extern KVIRC_API KviMediaManager * g_pMediaManager;
extern KVIRC_API KviSharedFilesManager * g_pSharedFilesManager;
-#include <qfileinfo.h>
-#include <qstring.h>
-
//#warning "The broker might lookup the remote host name"
KviDccBroker::KviDccBroker()
@@ -124,18 +125,17 @@ void KviDccBroker::unregisterDccBox(KviDccBox * box)
m_pBoxList->removeRef(box);
}
-
void KviDccBroker::cancelDcc(KviDccDescriptor * dcc)
{
delete dcc;
- dcc = 0;
+ dcc = 0;
}
void KviDccBroker::cancelDcc(KviDccBox *box,KviDccDescriptor * dcc)
{
if(box)box->forgetDescriptor();
delete dcc;
- dcc = 0;
+ dcc = 0;
}
///////////////////////////////////////////////////////////////////////////////
@@ -168,15 +168,15 @@ void KviDccBroker::rsendAskForFileName(KviDccDescriptor * dcc)
d->szLocalFileName = *(it);
d->szLocalFileName.stripWhiteSpace();
++it;
- if(d->szLocalFileName.isEmpty())
+ if(d->szLocalFileName.isEmpty())
cancelDcc(d);
- else
+ else
rsendExecute(d);
}
delete dcc;
}
} else {
- cancelDcc(dcc);
+ cancelDcc(dcc);
}
}
@@ -260,7 +260,6 @@ void KviDccBroker::rsendExecute(KviDccBox * box,KviDccDescriptor * dcc)
void KviDccBroker::handleChatRequest(KviDccDescriptor * dcc)
{
-
if(!dcc->bAutoAccept)
{
// FIXME: better message ? Secure Direct Client Connection...eventually
@@ -388,7 +387,7 @@ void KviDccBroker::passiveVoiceExecute(KviDccDescriptor * dcc)
{
KviStr tmp(KviStr::Format,"dcc: voice %s@%s:%s",dcc->szNick.utf8().data(),dcc->szIp.utf8().data(),dcc->szPort.utf8().data());
KviDccVoice * v = new KviDccVoice(dcc->console()->frame(),dcc,tmp.ptr());
-//#warning "Create minimized dcc voice ?... or maybe it's too much ? :)"
+ //#warning "Create minimized dcc voice ?... or maybe it's too much ? :)"
bool bMinimized = dcc->bOverrideMinimize ? dcc->bShowMinimized : KVI_OPTION_BOOL(KviOption_boolCreateMinimizedDccChat);
dcc->console()->frame()->addWindow(v,!bMinimized);
if(bMinimized)v->minimize();
@@ -401,7 +400,6 @@ void KviDccBroker::passiveVoiceExecute(KviDccDescriptor * dcc)
///////////////////////////////////////////////////////////////////////////////
#ifdef COMPILE_DCC_CANVAS
-
void KviDccBroker::activeCanvasManage(KviDccDescriptor * dcc)
{
if(!dcc->bAutoAccept)
@@ -426,7 +424,6 @@ void KviDccBroker::activeCanvasManage(KviDccDescriptor * dcc)
activeCanvasExecute(0,dcc);
}
}
-
#endif
void KviDccBroker::activeCanvasExecute(KviDccBox *box,KviDccDescriptor * dcc)
@@ -443,7 +440,7 @@ void KviDccBroker::activeCanvasExecute(KviDccBox *box,KviDccDescriptor * dcc)
KviStr tmp(KviStr::Format,"dcc: canvas %s@%s:%s",dcc->szNick.utf8().data(),dcc->szIp.utf8().data(),dcc->szPort.utf8().data());
KviDccCanvas * cnv = new KviDccCanvas(dcc->console()->frame(),dcc,tmp.ptr());
-//#warning "This option should be dedicated to Dcc Canvas!....for now we are using the DccChat options"
+ //#warning "This option should be dedicated to Dcc Canvas!....for now we are using the DccChat options"
bool bMinimized = dcc->bOverrideMinimize ? dcc->bShowMinimized : \
(KVI_OPTION_BOOL(KviOption_boolCreateMinimizedDccChat) || \
(dcc->bAutoAccept && KVI_OPTION_BOOL(KviOption_boolCreateMinimizedDccChatWhenAutoAccepted)));
@@ -463,13 +460,12 @@ void KviDccBroker::passiveCanvasExecute(KviDccDescriptor * dcc)
{
KviStr tmp(KviStr::Format,"dcc: canvas %s@%s:%s",dcc->szNick.utf8().data(),dcc->szIp.utf8().data(),dcc->szPort.utf8().data());
KviDccCanvas * cnv = new KviDccCanvas(dcc->console()->frame(),dcc,tmp.ptr());
-//#warning "This option should be dedicated to Dcc Canvas!....for now we are using the DccChat options"
+ //#warning "This option should be dedicated to Dcc Canvas!....for now we are using the DccChat options"
bool bMinimized = dcc->bOverrideMinimize ? dcc->bShowMinimized : KVI_OPTION_BOOL(KviOption_boolCreateMinimizedDccChat);
dcc->console()->frame()->addWindow(cnv,!bMinimized);
if(bMinimized)cnv->minimize();
m_pDccWindowList->append(cnv);
}
-
#endif
///////////////////////////////////////////////////////////////////////////////
@@ -538,7 +534,7 @@ void KviDccBroker::recvFileManage(KviDccDescriptor * dcc)
);
}
-//#warning "Maybe remove the pending avatar if rejected ?"
+ //#warning "Maybe remove the pending avatar if rejected ?"
QString title = __tr2qs_ctx("DCC %1 Request - KVIrc","dcc").arg(dcc->szType);
@@ -551,7 +547,6 @@ void KviDccBroker::recvFileManage(KviDccDescriptor * dcc)
box->show();
} else {
// auto accept
-
if(_OUTPUT_VERBOSE)
{
dcc->console()->output(KVI_OUT_DCCMSG,__tr2qs_ctx("Auto-accepting DCC %Q request from %Q!%Q@%Q for file %Q","dcc"),
@@ -793,15 +788,15 @@ void KviDccBroker::sendFileManage(KviDccDescriptor * dcc)
d->szLocalFileName = *(it);
d->szLocalFileName.stripWhiteSpace();
++it;
- if(d->szLocalFileName.isEmpty())
+ if(d->szLocalFileName.isEmpty())
cancelDcc(d);
- else
+ else
sendFileExecute(0,d);
}
delete dcc;
}
} else {
- cancelDcc(dcc);
+ cancelDcc(dcc);
}
}
@@ -894,7 +889,6 @@ bool KviDccBroker::handleResumeRequest(KviDccRequest * dcc,const char * filename
return KviDccFileTransfer::handleResumeRequest(filename,port,filePos);
}
-
#ifndef COMPILE_USE_STANDALONE_MOC_SOURCES
#include "m_broker.moc"
#endif //!COMPILE_USE_STANDALONE_MOC_SOURCES
diff --git a/src/modules/dcc/broker.h b/src/modules/dcc/broker.h
index dd61cbd6f..77ef8b7c9 100644
--- a/src/modules/dcc/broker.h
+++ b/src/modules/dcc/broker.h
@@ -6,7 +6,7 @@
// Creation date : Tue Sep 19 09 2000 10:20:01 by Szymon Stefanek
//
// This file is part of the KVirc irc client distribution
-// Copyright (C) 1999-2006 Szymon Stefanek (pragma at kvirc dot net)
+// Copyright (C) 1999-2008 Szymon Stefanek (pragma at kvirc dot net)
//
// This program is FREE software. You can redistribute it and/or
// modify it under the terms of the GNU General Public License
@@ -24,28 +24,24 @@
//
//=======================================================================================
-#include "kvi_settings.h"
-
-#ifdef COMPILE_USE_QT4
- // #define COMPILE_DCC_CANVAS
-#else
- #define COMPILE_DCC_CANVAS
-#endif
+#include "descriptor.h"
+#include "kvi_settings.h"
#include "kvi_string.h"
#include "kvi_pointerlist.h"
#include "kvi_sparser.h"
-
#include "kvi_pointerhashtable.h"
-#include <qdatetime.h>
-#include <qobject.h>
+
+#include <QDateTime>
+#include <QObject>
class KviConsole;
class KviDccBroker;
class KviWindow;
class KviDccBox;
-#include "descriptor.h"
+// #define COMPILE_DCC_CANVAS
+
class KviDccZeroPortTag
{
@@ -109,7 +105,6 @@ public slots:
void sendFileExecute(KviDccBox * box,KviDccDescriptor * dcc);
void recvFileExecute(KviDccBox * box,KviDccDescriptor * dcc);
-
void chooseSaveFileName(KviDccBox *box,KviDccDescriptor * dcc);
void renameOverwriteResume(KviDccBox *box,KviDccDescriptor * dcc);
void renameDccSendFile(KviDccBox *box,KviDccDescriptor * dcc);
diff --git a/src/modules/dcc/canvas.cpp b/src/modules/dcc/canvas.cpp
index dfe39e975..b89b25a87 100644
--- a/src/modules/dcc/canvas.cpp
+++ b/src/modules/dcc/canvas.cpp
@@ -26,276 +26,273 @@
#ifdef COMPILE_DCC_CANVAS
-#include "dialogs.h"
-#include "marshal.h"
-#include "canvaswidget.h"
-
-#define _KVI_DEBUG_CHECK_RANGE_
-#include "kvi_debug.h"
-#include "kvi_options.h"
-#include "kvi_input.h"
-#include "kvi_ircview.h"
-#include "kvi_iconmanager.h"
-#include "kvi_locale.h"
-#include "kvi_error.h"
-#include "kvi_out.h"
-#include "kvi_netutils.h"
-#include "kvi_console.h"
-#include "kvi_frame.h"
-#include "kvi_malloc.h"
-#include "kvi_memmove.h"
-#include "kvi_thread.h"
-#include "kvi_ircsocket.h"
-#include "kvi_settings.h"
-#include "kvi_themedlabel.h"
-#include "kvi_ircconnection.h"
-
-#include <qsplitter.h>
-
-extern KviDccBroker * g_pDccBroker;
-
-
-KviDccCanvas::KviDccCanvas(KviFrame *pFrm,KviDccDescriptor * dcc,const char * name)
-: KviDccWindow(KVI_WINDOW_TYPE_DCCCANVAS,pFrm,name,dcc)
-{
- m_pSplitter = new QSplitter(QSplitter::Vertical,this,"splitter");
-
- m_pCanvas = new KviCanvasWidget(m_pSplitter);
-
- m_pIrcView = new KviIrcView(m_pSplitter,pFrm,this);
- m_pInput = new KviInput(this);
-
-// setFocusHandler(m_pInput,this);
-
- m_pMarshal = new KviDccMarshal(this);
- connect(m_pMarshal,SIGNAL(error(int)),this,SLOT(handleMarshalError(int)));
- connect(m_pMarshal,SIGNAL(connected()),this,SLOT(connected()));
-
-
- if(!(m_pDescriptor->bActive))
+ #include "dialogs.h"
+ #include "marshal.h"
+ #include "canvaswidget.h"
+
+ #define _KVI_DEBUG_CHECK_RANGE_
+ #include "kvi_debug.h"
+ #include "kvi_options.h"
+ #include "kvi_input.h"
+ #include "kvi_ircview.h"
+ #include "kvi_iconmanager.h"
+ #include "kvi_locale.h"
+ #include "kvi_error.h"
+ #include "kvi_out.h"
+ #include "kvi_netutils.h"
+ #include "kvi_console.h"
+ #include "kvi_frame.h"
+ #include "kvi_malloc.h"
+ #include "kvi_memmove.h"
+ #include "kvi_thread.h"
+ #include "kvi_ircsocket.h"
+ #include "kvi_settings.h"
+ #include "kvi_themedlabel.h"
+ #include "kvi_ircconnection.h"
+
+ #include <QSplitter>
+
+ extern KviDccBroker * g_pDccBroker;
+
+
+ KviDccCanvas::KviDccCanvas(KviFrame *pFrm,KviDccDescriptor * dcc,const char * name)
+ : KviDccWindow(KVI_WINDOW_TYPE_DCCCANVAS,pFrm,name,dcc)
{
- // PASSIVE CONNECTION
- output(KVI_OUT_DCCMSG,__tr2qs_ctx("Attempting a passive DCC CANVAS connection","dcc"));
- int ret = m_pMarshal->dccListen(dcc->szListenIp,dcc->szListenPort,m_pDescriptor->bDoTimeout);
- if(ret != KviError_success)handleMarshalError(ret);
- else {
-
- output(KVI_OUT_DCCMSG,__tr2qs_ctx("Listening on interface %Q port %Q","dcc"),
- &(m_pMarshal->localIp()),&(m_pMarshal->localPort()));
-
- if(dcc->bSendRequest)
- {
- QString ip = !dcc->szFakeIp.isEmpty() ? dcc->szFakeIp : dcc->szListenIp;
- QString port = !dcc->szFakePort.isEmpty() ? dcc->szFakePort.utf8().data() : m_pMarshal->localPort();
-//#warning "OPTION FOR SENDING 127.0.0.1 and so on (not an unsigned number)"
- struct in_addr a;
- if(kvi_stringIpToBinaryIp(ip.utf8().data(),&a))ip.setNum(htonl(a.s_addr));
- dcc->console()->connection()->sendFmtData("PRIVMSG %s :%cDCC CANVAS chat %Q %Q%c",
- dcc->console()->connection()->encodeText( dcc->szNick.utf8().data() ).data(),
- 0x01,&ip,
- &port,
- 0x01);
- output(KVI_OUT_DCCMSG,__tr2qs_ctx("Sent DCC CANVAS request to %Q, waiting for the remote client to connect...","dcc"),
- &(dcc->szNick));
- } else outputNoFmt(KVI_OUT_DCCMSG,__tr2qs_ctx("DCC CANVAS request not sent: awaiting manual connections","dcc"));
+ m_pSplitter = new QSplitter(QSplitter::Vertical,this,"splitter");
+
+ m_pCanvas = new KviCanvasWidget(m_pSplitter);
+
+ m_pIrcView = new KviIrcView(m_pSplitter,pFrm,this);
+ m_pInput = new KviInput(this);
+
+ // setFocusHandler(m_pInput,this);
+
+ m_pMarshal = new KviDccMarshal(this);
+ connect(m_pMarshal,SIGNAL(error(int)),this,SLOT(handleMarshalError(int)));
+ connect(m_pMarshal,SIGNAL(connected()),this,SLOT(connected()));
+
+
+ if(!(m_pDescriptor->bActive))
+ {
+ // PASSIVE CONNECTION
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("Attempting a passive DCC CANVAS connection","dcc"));
+ int ret = m_pMarshal->dccListen(dcc->szListenIp,dcc->szListenPort,m_pDescriptor->bDoTimeout);
+ if(ret != KviError_success)handleMarshalError(ret);
+ else {
+
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("Listening on interface %Q port %Q","dcc"),
+ &(m_pMarshal->localIp()),&(m_pMarshal->localPort()));
+
+ if(dcc->bSendRequest)
+ {
+ QString ip = !dcc->szFakeIp.isEmpty() ? dcc->szFakeIp : dcc->szListenIp;
+ QString port = !dcc->szFakePort.isEmpty() ? dcc->szFakePort.utf8().data() : m_pMarshal->localPort();
+ //#warning "OPTION FOR SENDING 127.0.0.1 and so on (not an unsigned number)"
+ struct in_addr a;
+ if(kvi_stringIpToBinaryIp(ip.utf8().data(),&a))ip.setNum(htonl(a.s_addr));
+ dcc->console()->connection()->sendFmtData("PRIVMSG %s :%cDCC CANVAS chat %Q %Q%c",
+ dcc->console()->connection()->encodeText( dcc->szNick.utf8().data() ).data(),
+ 0x01,&ip,
+ &port,
+ 0x01);
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("Sent DCC CANVAS request to %Q, waiting for the remote client to connect...","dcc"),
+ &(dcc->szNick));
+ } else outputNoFmt(KVI_OUT_DCCMSG,__tr2qs_ctx("DCC CANVAS request not sent: awaiting manual connections","dcc"));
+ }
+ } else {
+ // ACTIVE CONNECTION
+ outputNoFmt(KVI_OUT_DCCMSG,__tr2qs_ctx("Attempting an active DCC CANVAS connection","dcc"));
+ int ret = m_pMarshal->dccConnect(dcc->szIp.utf8().data(),dcc->szPort.utf8().data(),m_pDescriptor->bDoTimeout);
+ if(ret != KviError_success)handleMarshalError(ret);
+ else output(KVI_OUT_DCCMSG,__tr2qs_ctx("Contacting host %Q on port %Q","dcc"),&(dcc->szIp),&(dcc->szPort));
}
- } else {
- // ACTIVE CONNECTION
- outputNoFmt(KVI_OUT_DCCMSG,__tr2qs_ctx("Attempting an active DCC CANVAS connection","dcc"));
- int ret = m_pMarshal->dccConnect(dcc->szIp.utf8().data(),dcc->szPort.utf8().data(),m_pDescriptor->bDoTimeout);
- if(ret != KviError_success)handleMarshalError(ret);
- else output(KVI_OUT_DCCMSG,__tr2qs_ctx("Contacting host %Q on port %Q","dcc"),&(dcc->szIp),&(dcc->szPort));
+
+ // m_pSlaveThread = 0;
}
-
-// m_pSlaveThread = 0;
-}
-
-KviDccCanvas::~KviDccCanvas()
-{
- g_pDccBroker->unregisterDccWindow(this);
-// if(m_pSlaveThread)
-// {
-// m_pSlaveThread->terminate();
-// delete m_pSlaveThread;
-// m_pSlaveThread = 0;
-// }
- KviThreadManager::killPendingEvents(this);
-// delete m_pDescriptor;
-// delete m_pMarshal;
-}
-
-const QString & KviDccCanvas::target()
-{
- // This may change on the fly...
- m_szTarget.sprintf("%s@%s:%s",
- m_pDescriptor->szNick.utf8().data(),m_pDescriptor->szIp.utf8().data(),m_pDescriptor->szPort.utf8().data());
- return m_szTarget;
-}
-
-void KviDccCanvas::fillCaptionBuffers()
-{
- KviStr tmp(KviStr::Format,"DCC Canvas %s@%s:%s",
- m_pDescriptor->szNick.utf8().data(),m_pDescriptor->szIp.utf8().data(),m_pDescriptor->szPort.utf8().data());
-
- m_szPlainTextCaption = tmp;
-
- m_szHtmlActiveCaption.sprintf("<nobr><font color=\"%s\"><b>%s</b></font></nobr>",
- KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name().ascii(),tmp.ptr());
- m_szHtmlInactiveCaption.sprintf("<nobr><font color=\"%s\"><b>%s</b></font></nobr>",
- KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name().ascii(),tmp.ptr());
-}
-
-QPixmap * KviDccCanvas::myIconPtr()
-{
- return g_pIconManager->getSmallIcon(KVI_SMALLICON_CANVAS);
-}
-
-
-void KviDccCanvas::getBaseLogFileName(KviStr &buffer)
-{
- buffer.sprintf("%s_%s_%s",m_pDescriptor->szNick.utf8().data(),m_pDescriptor->szIp.utf8().data(),m_pDescriptor->szPort.utf8().data());
-}
-
-void KviDccCanvas::ownMessage(const char * text)
-{
- KviStr buf(KviStr::Format,"%s\r\n",text);
-// m_pSlaveThread->sendRawData(buf.ptr(),buf.len());
- m_pFrm->firstConsole()->outputPrivmsg(this,KVI_OUT_OWNPRIVMSG,
- m_pDescriptor->szLocalNick.utf8().data(),m_pDescriptor->szLocalUser.utf8().data(),
- m_pDescriptor->szLocalHost.utf8().data(),text);
-}
-
-void KviDccCanvas::ownAction(const char * text)
-{
- KviStr buf(KviStr::Format,"%cACTION %s%c\r\n",text);
-// m_pSlaveThread->sendRawData(buf.ptr(),buf.len());
- output(KVI_OUT_ACTION,"%Q %s",&(m_pDescriptor->szLocalNick),text);
-}
-
-bool KviDccCanvas::event(QEvent *e)
-{
-// if(e->type() == KVI_THREAD_EVENT)
-// {
-// switch(((KviThreadEvent *)e)->id())
-// {
-// case KVI_DCC_THREAD_EVENT_ERROR:
-// {
-// int * err = ((KviThreadDataEvent<int> *)e)->getData();
-// output(KVI_OUT_DCCERROR,__tr("ERROR: %s"),kvi_getErrorString(*err));
-// delete err;
-// return true;
-// }
-// break;
-// case KVI_DCC_THREAD_EVENT_DATA:
-// {
-// KviStr * d = ((KviThreadDataEvent<KviStr> *)e)->getData();
-// if(d->firstCharIs(0x01))
-// {
-// d->cutLeft(1);
-// if(d->lastCharIs(0x01))d->cutRight(1);
-// if(kvi_strEqualCIN("ACTION",d->ptr(),6))d->cutLeft(6);
-// d->stripLeftWhiteSpace();
-// output(KVI_OUT_ACTION,"%s %s",m_pDescriptor->szNick.ptr(),d->ptr());
-// } else {
-//
-//#ifdef COMPILE_CRYPT_SUPPORT
-// if(KviCryptSessionInfo * cinf = cryptSessionInfo())
-// {
-// if(cinf->bDoDecrypt)
-// {
-// if(cinf->pEngine->isCryptographicEngine() && (*(d->ptr()) == KVI_TEXT_CRYPT))
-// {
-// KviStr decryptedStuff;
-// if(cinf->pEngine->decrypt(d->ptr() + 1,decryptedStuff))
-// {
-// m_pFrm->firstConsole()->outputPrivmsg(this,KVI_OUT_DCCCHATMSGCRYPTED,
-// m_pDescriptor->szNick.ptr(),m_pDescriptor->szUser.ptr(),
-// m_pDescriptor->szHost.ptr(),decryptedStuff.ptr());
-// } else {
-// output(KVI_OUT_SYSTEMERROR,
-// __tr("The following message looks like an encrypted one, but the crypting engine failed to decode it: %s"),
-// cinf->pEngine->lastError());
-// m_pFrm->firstConsole()->outputPrivmsg(this,KVI_OUT_DCCCHATMSG,
-// m_pDescriptor->szNick.ptr(),m_pDescriptor->szUser.ptr(),
-// m_pDescriptor->szHost.ptr(),d->ptr() + 1);
-// }
-// delete d;
-// return true;
-// } else {
-// if(!(cinf->pEngine->isCryptographicEngine()))
-// {
-// KviStr decryptedStuff;
-// if(cinf->pEngine->decrypt(d->ptr(),decryptedStuff))
-// {
-// m_pFrm->firstConsole()->outputPrivmsg(this,KVI_OUT_DCCCHATMSG,
-// m_pDescriptor->szNick.ptr(),m_pDescriptor->szUser.ptr(),
-// m_pDescriptor->szHost.ptr(),decryptedStuff.ptr());
-// delete d;
-// return true;
-// } else {
-// output(KVI_OUT_SYSTEMERROR,
-// __tr("The following message looks like an encrypted one, but the crypting engine failed to decode it: %s"),
-// cinf->pEngine->lastError());
-// }
-// }
-// }
-// }
-// }
-//#endif
-// m_pFrm->firstConsole()->outputPrivmsg(this,KVI_OUT_DCCCHATMSG,
-// m_pDescriptor->szNick.ptr(),m_pDescriptor->szUser.ptr(),
-// m_pDescriptor->szHost.ptr(),d->ptr());
-// }
-// delete d;
-// return true;
-// }
-// break;
-// }
-// }
- return KviWindow::event(e);
-}
-
-void KviDccCanvas::resizeEvent(QResizeEvent *e)
-{
- int hght = m_pInput->heightHint();
-// int hght2 = m_pTopSplitter->sizeHint().height();
-// m_pTopSplitter->setGeometry(0,0,width(),hght2);
- m_pSplitter->setGeometry(0,0,width(),height() - hght);
- m_pInput->setGeometry(0,height() - hght,width(),hght);
-}
-
-QSize KviDccCanvas::sizeHint() const
-{
- QSize ret(m_pIrcView->sizeHint().width(),
- m_pIrcView->sizeHint().height() + m_pInput->heightHint());
- return ret;
-}
-
-void KviDccCanvas::handleMarshalError(int err)
-{
- QString sss = KviError::getDescription(err);
- output(KVI_OUT_DCCERROR,__tr2qs_ctx("DCC Failed: %Q","dcc"),&sss);
-}
-
-void KviDccCanvas::connected()
-{
- output(KVI_OUT_DCCMSG,__tr2qs_ctx("Connected to %Q:%Q","dcc"),
- &(m_pMarshal->remoteIp()),&(m_pMarshal->remotePort()));
- output(KVI_OUT_DCCMSG,__tr2qs_ctx("Local end is %Q:%Q","dcc"),
- &(m_pMarshal->localIp()),&(m_pMarshal->localPort()));
- if(!(m_pDescriptor->bActive))
+
+ KviDccCanvas::~KviDccCanvas()
{
- // PASSIVE CONNECTION...Find out the remote end
- m_pDescriptor->szIp = m_pMarshal->remoteIp();
- m_pDescriptor->szPort = m_pMarshal->remotePort();
- m_pDescriptor->szHost = m_pMarshal->remoteIp();
+ g_pDccBroker->unregisterDccWindow(this);
+ // if(m_pSlaveThread)
+ // {
+ // m_pSlaveThread->terminate();
+ // delete m_pSlaveThread;
+ // m_pSlaveThread = 0;
+ // }
+ KviThreadManager::killPendingEvents(this);
+ // delete m_pDescriptor;
+ // delete m_pMarshal;
+ }
+
+ const QString & KviDccCanvas::target()
+ {
+ // This may change on the fly...
+ m_szTarget.sprintf("%s@%s:%s",
+ m_pDescriptor->szNick.utf8().data(),m_pDescriptor->szIp.utf8().data(),m_pDescriptor->szPort.utf8().data());
+ return m_szTarget;
+ }
+
+ void KviDccCanvas::fillCaptionBuffers()
+ {
+ KviStr tmp(KviStr::Format,"DCC Canvas %s@%s:%s",
+ m_pDescriptor->szNick.utf8().data(),m_pDescriptor->szIp.utf8().data(),m_pDescriptor->szPort.utf8().data());
+
+ m_szPlainTextCaption = tmp;
+
+ m_szHtmlActiveCaption.sprintf("<nobr><font color=\"%s\"><b>%s</b></font></nobr>",
+ KVI_OPTION_COLOR(KviOption_colorCaptionTextActive).name().ascii(),tmp.ptr());
+ m_szHtmlInactiveCaption.sprintf("<nobr><font color=\"%s\"><b>%s</b></font></nobr>",
+ KVI_OPTION_COLOR(KviOption_colorCaptionTextInactive).name().ascii(),tmp.ptr());
+ }
+
+ QPixmap * KviDccCanvas::myIconPtr()
+ {
+ return g_pIconManager->getSmallIcon(KVI_SMALLICON_CANVAS);
}
- updateCaption();
-// m_pSlaveThread = new KviDccCanvasThread(this,m_pMarshal->releaseSocket());
-// m_pSlaveThread->start();
-}
-
-#include "m_canvas.moc"
+ void KviDccCanvas::getBaseLogFileName(KviStr &buffer)
+ {
+ buffer.sprintf("%s_%s_%s",m_pDescriptor->szNick.utf8().data(),m_pDescriptor->szIp.utf8().data(),m_pDescriptor->szPort.utf8().data());
+ }
+ void KviDccCanvas::ownMessage(const char * text)
+ {
+ KviStr buf(KviStr::Format,"%s\r\n",text);
+ // m_pSlaveThread->sendRawData(buf.ptr(),buf.len());
+ m_pFrm->firstConsole()->outputPrivmsg(this,KVI_OUT_OWNPRIVMSG,
+ m_pDescriptor->szLocalNick.utf8().data(),m_pDescriptor->szLocalUser.utf8().data(),
+ m_pDescriptor->szLocalHost.utf8().data(),text);
+ }
+
+ void KviDccCanvas::ownAction(const char * text)
+ {
+ KviStr buf(KviStr::Format,"%cACTION %s%c\r\n",text);
+ // m_pSlaveThread->sendRawData(buf.ptr(),buf.len());
+ output(KVI_OUT_ACTION,"%Q %s",&(m_pDescriptor->szLocalNick),text);
+ }
+
+ bool KviDccCanvas::event(QEvent *e)
+ {
+ // if(e->type() == KVI_THREAD_EVENT)
+ // {
+ // switch(((KviThreadEvent *)e)->id())
+ // {
+ // case KVI_DCC_THREAD_EVENT_ERROR:
+ // {
+ // int * err = ((KviThreadDataEvent<int> *)e)->getData();
+ // output(KVI_OUT_DCCERROR,__tr("ERROR: %s"),kvi_getErrorString(*err));
+ // delete err;
+ // return true;
+ // }
+ // break;
+ // case KVI_DCC_THREAD_EVENT_DATA:
+ // {
+ // KviStr * d = ((KviThreadDataEvent<KviStr> *)e)->getData();
+ // if(d->firstCharIs(0x01))
+ // {
+ // d->cutLeft(1);
+ // if(d->lastCharIs(0x01))d->cutRight(1);
+ // if(kvi_strEqualCIN("ACTION",d->ptr(),6))d->cutLeft(6);
+ // d->stripLeftWhiteSpace();
+ // output(KVI_OUT_ACTION,"%s %s",m_pDescriptor->szNick.ptr(),d->ptr());
+ // } else {
+ //
+ //#ifdef COMPILE_CRYPT_SUPPORT
+ // if(KviCryptSessionInfo * cinf = cryptSessionInfo())
+ // {
+ // if(cinf->bDoDecrypt)
+ // {
+ // if(cinf->pEngine->isCryptographicEngine() && (*(d->ptr()) == KVI_TEXT_CRYPT))
+ // {
+ // KviStr decryptedStuff;
+ // if(cinf->pEngine->decrypt(d->ptr() + 1,decryptedStuff))
+ // {
+ // m_pFrm->firstConsole()->outputPrivmsg(this,KVI_OUT_DCCCHATMSGCRYPTED,
+ // m_pDescriptor->szNick.ptr(),m_pDescriptor->szUser.ptr(),
+ // m_pDescriptor->szHost.ptr(),decryptedStuff.ptr());
+ // } else {
+ // output(KVI_OUT_SYSTEMERROR,
+ // __tr("The following message looks like an encrypted one, but the crypting engine failed to decode it: %s"),
+ // cinf->pEngine->lastError());
+ // m_pFrm->firstConsole()->outputPrivmsg(this,KVI_OUT_DCCCHATMSG,
+ // m_pDescriptor->szNick.ptr(),m_pDescriptor->szUser.ptr(),
+ // m_pDescriptor->szHost.ptr(),d->ptr() + 1);
+ // }
+ // delete d;
+ // return true;
+ // } else {
+ // if(!(cinf->pEngine->isCryptographicEngine()))
+ // {
+ // KviStr decryptedStuff;
+ // if(cinf->pEngine->decrypt(d->ptr(),decryptedStuff))
+ // {
+ // m_pFrm->firstConsole()->outputPrivmsg(this,KVI_OUT_DCCCHATMSG,
+ // m_pDescriptor->szNick.ptr(),m_pDescriptor->szUser.ptr(),
+ // m_pDescriptor->szHost.ptr(),decryptedStuff.ptr());
+ // delete d;
+ // return true;
+ // } else {
+ // output(KVI_OUT_SYSTEMERROR,
+ // __tr("The following message looks like an encrypted one, but the crypting engine failed to decode it: %s"),
+ // cinf->pEngine->lastError());
+ // }
+ // }
+ // }
+ // }
+ // }
+ //#endif
+ // m_pFrm->firstConsole()->outputPrivmsg(this,KVI_OUT_DCCCHATMSG,
+ // m_pDescriptor->szNick.ptr(),m_pDescriptor->szUser.ptr(),
+ // m_pDescriptor->szHost.ptr(),d->ptr());
+ // }
+ // delete d;
+ // return true;
+ // }
+ // break;
+ // }
+ // }
+ return KviWindow::event(e);
+ }
+
+ void KviDccCanvas::resizeEvent(QResizeEvent *e)
+ {
+ int hght = m_pInput->heightHint();
+ // int hght2 = m_pTopSplitter->sizeHint().height();
+ // m_pTopSplitter->setGeometry(0,0,width(),hght2);
+ m_pSplitter->setGeometry(0,0,width(),height() - hght);
+ m_pInput->setGeometry(0,height() - hght,width(),hght);
+ }
+
+ QSize KviDccCanvas::sizeHint() const
+ {
+ QSize ret(m_pIrcView->sizeHint().width(),
+ m_pIrcView->sizeHint().height() + m_pInput->heightHint());
+ return ret;
+ }
+
+ void KviDccCanvas::handleMarshalError(int err)
+ {
+ QString sss = KviError::getDescription(err);
+ output(KVI_OUT_DCCERROR,__tr2qs_ctx("DCC Failed: %Q","dcc"),&sss);
+ }
+
+ void KviDccCanvas::connected()
+ {
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("Connected to %Q:%Q","dcc"),
+ &(m_pMarshal->remoteIp()),&(m_pMarshal->remotePort()));
+ output(KVI_OUT_DCCMSG,__tr2qs_ctx("Local end is %Q:%Q","dcc"),
+ &(m_pMarshal->localIp()),&(m_pMarshal->localPort()));
+ if(!(m_pDescriptor->bActive))
+ {
+ // PASSIVE CONNECTION...Find out the remote end
+ m_pDescriptor->szIp = m_pMarshal->remoteIp();
+ m_pDescriptor->szPort = m_pMarshal->remotePort();
+ m_pDescriptor->szHost = m_pMarshal->remoteIp();
+ }
+ updateCaption();
+ // m_pSlaveThread = new KviDccCanvasThread(this,m_pMarshal->releaseSocket());
+ // m_pSlaveThread->start();
+ }
+
+ #include "m_canvas.moc"
#endif
diff --git a/src/modules/dcc/canvas.h b/src/modules/dcc/canvas.h
index 10a0d72ee..887ab48c6 100644
--- a/src/modules/dcc/canvas.h
+++ b/src/modules/dcc/canvas.h
@@ -25,50 +25,43 @@
#include "broker.h"
#ifdef COMPILE_DCC_CANVAS
-
-#include "kvi_window.h"
-#include "kvi_string.h"
-
-#include "descriptor.h"
-#include "window.h"
-#include "thread.h"
-
-#include "kvi_pointerlist.h"
-
-
-
-class KviDccMarshal;
-class KviCanvasWidget;
-
-class QSplitter;
-
-
-class KviDccCanvas : public KviDccWindow
-{
- Q_OBJECT
-public:
- KviDccCanvas(KviFrame *pFrm,KviDccDescriptor * dcc,const char * name);
- ~KviDccCanvas();
-protected:
-// KviDccCanvasThread * m_pSlaveThread;
- KviCanvasWidget * m_pCanvas;
-// QSplitter * m_pTopSplitter;
- QString m_szTarget;
-protected:
- virtual const QString &target();
- virtual void fillCaptionBuffers();
- virtual void getBaseLogFileName(KviStr &buffer);
- virtual QPixmap * myIconPtr();
- virtual void resizeEvent(QResizeEvent *e);
- virtual QSize sizeHint() const;
- virtual bool event(QEvent *e);
- virtual void ownMessage(const char *text);
- virtual void ownAction(const char *text);
-protected slots:
- void handleMarshalError(int err);
- void connected();
-};
-
+ #include "descriptor.h"
+ #include "window.h"
+ #include "thread.h"
+
+ #include "kvi_window.h"
+ #include "kvi_string.h"
+ #include "kvi_pointerlist.h"
+
+ class KviDccMarshal;
+ class KviCanvasWidget;
+ class QSplitter;
+
+ class KviDccCanvas : public KviDccWindow
+ {
+ Q_OBJECT
+ public:
+ KviDccCanvas(KviFrame *pFrm,KviDccDescriptor * dcc,const char * name);
+ ~KviDccCanvas();
+ protected:
+ // KviDccCanvasThread * m_pSlaveThread;
+ KviCanvasWidget * m_pCanvas;
+ // QSplitter * m_pTopSplitter;
+ QString m_szTarget;
+ protected:
+ virtual const QString &target();
+ virtual void fillCaptionBuffers();
+ virtual void getBaseLogFileName(KviStr &buffer);
+ virtual QPixmap * myIconPtr();
+ virtual void resizeEvent(QResizeEvent *e);
+ virtual QSize sizeHint() const;
+ virtual bool event(QEvent *e);
+ virtual void ownMessage(const char *text);
+ virtual void ownAction(const char *text);
+ protected slots:
+ void handleMarshalError(int err);
+ void connected();
+ };
#endif
#endif // _CANVAS_H_
diff --git a/src/modules/dcc/canvaswidget.cpp b/src/modules/dcc/canvaswidget.cpp
index ef5d70495..e598f04bf 100644
--- a/src/modules/dcc/canvaswidget.cpp
+++ b/src/modules/dcc/canvaswidget.cpp
@@ -23,1579 +23,1488 @@
#include "canvaswidget.h"
#ifdef COMPILE_DCC_CANVAS
-
-
-#include <qcursor.h>
-#include <qpainter.h>
-#include <qsimplerichtext.h>
-#include <qlineedit.h>
-#include <qcombobox.h>
-#include <qvalidator.h>
-#include <stdlib.h>
-
-#include "kvi_string.h"
-
-#include "kvi_locale.h"
-#include "kvi_tal_popupmenu.h"
-
-#include <math.h>
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-// KviCanvasRectangleItem
-//
-
-KviCanvasRectangleItem::KviCanvasRectangleItem(QCanvas * c,int x,int y,int w,int h)
-: QCanvasRectangle(x,y,w,h,c)
-{
-}
-
-KviCanvasRectangleItem::~KviCanvasRectangleItem()
-{
-}
-
-void KviCanvasRectangleItem::drawSelection(QPainter &p)
-{
- p.setRasterOp(NotROP);
- p.fillRect((int)x() + 1,(int)y() + 1,width() - 2,height() - 2,QBrush(Dense6Pattern));
- p.setPen(QPen(DotLine));
- p.drawRect((int)x(),(int)y(),width(),height());
- p.setRasterOp(CopyROP);
-}
-
-
-void KviCanvasRectangleItem::setProperty(const QString &property,const QVariant &val)
-{
- if(m_properties[property].isValid())
+ #include "kvi_string.h"
+ #include "kvi_locale.h"
+ #include "kvi_tal_popupmenu.h"
+
+ #include <QCursor>
+ #include <QPainter>
+ #include <q3simplerichtext.h>
+ #include <QLineEdit>
+ #include <QComboBox>
+ #include <QValidator>
+
+ #include <math.h>
+ #include <stdlib.h>
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //
+ // KviCanvasRectangleItem
+ //
+
+ KviCanvasRectangleItem::KviCanvasRectangleItem(QCanvas * c,int x,int y,int w,int h)
+ : QCanvasRectangle(x,y,w,h,c)
{
- m_properties.replace(property,val);
- hide();
- show();
}
-}
-
-
-
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-// KviCanvasPolygon
-//
-
-
-KviCanvasPolygon::KviCanvasPolygon(QCanvas * c,int x,int y,QPointArray &pnts,double dScaleFactor)
-: QCanvasPolygon(c)
-{
- m_properties.insert("clrForeground",QVariant(QColor(0,0,0)));
- m_properties.insert("uLineWidth",QVariant((unsigned int)0));
-
- m_properties.insert("clrBackground",QVariant(QColor(0,0,0)));
- m_properties.insert("bHasBackground",QVariant(false,1));
-
- m_dScaleFactor = dScaleFactor;
- m_points = pnts;
-
- resetPoints();
- move(x,y);
-}
-
-
-KviCanvasPolygon::~KviCanvasPolygon()
-{
-}
-
-void KviCanvasPolygon::setScaleFactor(double dScaleFactor)
-{
- m_dScaleFactor = dScaleFactor;
- resetPoints();
-}
-
-void KviCanvasPolygon::setInternalPoints(const QPointArray &pnts)
-{
- m_points = pnts;
- resetPoints();
-}
-
-void KviCanvasPolygon::resetPoints()
-{
- QPointArray scaled(m_points.size());
- for(unsigned int i=0;i<m_points.size();i++)
+ KviCanvasRectangleItem::~KviCanvasRectangleItem()
{
- int px;
- int py;
- m_points.point(i,&px,&py);
- px = (int)(px * m_dScaleFactor);
- py = (int)(py * m_dScaleFactor);
- scaled.setPoint(i,px,py);
}
- setPoints(scaled);
-}
-
-int KviCanvasPolygon::rtti() const
-{
- return KVI_CANVAS_RTTI_POLYGON;
-}
-
-void KviCanvasPolygon::setProperty(const QString &property,const QVariant &val)
-{
- if(m_properties[property].isValid())
+
+ void KviCanvasRectangleItem::drawSelection(QPainter &p)
{
- m_properties.replace(property,val);
- if((property == "clrForeground") || (property == "uLineWidth"))
- {
- setPen(QPen(m_properties["clrForeground"].asColor(),m_properties["uLineWidth"].toInt()));
- } else if((property == "clrBackground") || (property == "bHasBackground"))
+ p.setRasterOp(NotROP);
+ p.fillRect((int)x() + 1,(int)y() + 1,width() - 2,height() - 2,QBrush(Dense6Pattern));
+ p.setPen(QPen(DotLine));
+ p.drawRect((int)x(),(int)y(),width(),height());
+ p.setRasterOp(CopyROP);
+ }
+
+ void KviCanvasRectangleItem::setProperty(const QString &property,const QVariant &val)
+ {
+ if(m_properties[property].isValid())
{
- if(m_properties["bHasBackground"].asBool())
- setBrush(QBrush(m_properties["clrBackground"].asColor()));
- else
- setBrush(QBrush());
- } else {
- hide(); show();
+ m_properties.replace(property,val);
+ hide();
+ show();
}
}
-}
-
-void KviCanvasPolygon::draw(QPainter &p)
-{
-#if QT_VERSION >= 300
- if(isEnabled())
-#else
- if(enabled())
-#endif
+
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //
+ // KviCanvasPolygon
+ //
+ KviCanvasPolygon::KviCanvasPolygon(QCanvas * c,int x,int y,QPointArray &pnts,double dScaleFactor)
+ : QCanvasPolygon(c)
{
- p.setBrush(brush());
- p.setPen(pen());
- p.drawPolygon(areaPoints());
+ m_properties.insert("clrForeground",QVariant(QColor(0,0,0)));
+ m_properties.insert("uLineWidth",QVariant((unsigned int)0));
+
+ m_properties.insert("clrBackground",QVariant(QColor(0,0,0)));
+ m_properties.insert("bHasBackground",QVariant(false,1));
+
+ m_dScaleFactor = dScaleFactor;
+ m_points = pnts;
+
+ resetPoints();
+ move(x,y);
}
-
-#if QT_VERSION >=300
- if(isSelected())
-#else
- if(selected())
-#endif
+
+ KviCanvasPolygon::~KviCanvasPolygon()
{
- p.setRasterOp(NotROP);
- p.setPen(QPen(DotLine));
- p.drawPolygon(areaPoints());
- p.setBrush(QBrush());
- double dVal = 10;
- p.drawEllipse((int)(x() - dVal),(int)(y() - dVal),(int)(dVal * 2),(int)(dVal * 2));
- p.drawLine((int)(x() - (dVal * 2)),(int)y(),(int)(x() + (dVal * 2)),(int)y());
- p.drawLine((int)x(),(int)(y() - (dVal * 2)),(int)x(),(int)(y() + (dVal * 2)));
- p.setRasterOp(CopyROP);
- canvas()->setChanged(QRect((int)(x() - dVal),(int)(y() - dVal),(int)(dVal * 4),(int)(dVal * 4)));
}
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-// KviCanvasEllipticItem
-//
-
-KviCanvasEllipticItem::KviCanvasEllipticItem(QCanvas * c,int x,int y,int w,int h)
-: KviCanvasRectangleItem(c,x,y,w,h)
-{
- m_properties.insert("clrForeground",QVariant(QColor(0,0,0)));
- m_properties.insert("uLineWidth",QVariant((unsigned int)0));
-
- m_properties.insert("clrBackground",QVariant(QColor(0,0,0)));
- m_properties.insert("bHasBackground",QVariant(false,1));
-
-// m_properties.insert("iStartAngle",QVariant(0));
-// m_properties.insert("iEndAngle",QVariant(360));
-}
-
-KviCanvasEllipticItem::~KviCanvasEllipticItem()
-{
-}
-
-void KviCanvasEllipticItem::draw(QPainter &p)
-{
-#if QT_VERSION >= 300
- if(isEnabled())
-#else
- if(enabled())
-#endif
+
+ void KviCanvasPolygon::setScaleFactor(double dScaleFactor)
{
- QBrush b = p.brush();
- if(m_properties["bHasBackground"].asBool())p.setBrush(m_properties["clrBackground"].asColor());
- else p.setBrush(QBrush());
- p.setPen(pen());
- drawContent(p);
- p.setBrush(b);
+ m_dScaleFactor = dScaleFactor;
+ resetPoints();
}
-
-#if QT_VERSION >= 300
- if(isSelected())drawSelection(p);
-#else
- if(selected())drawSelection(p);
-#endif
-}
-
-void KviCanvasEllipticItem::drawContent(QPainter &p)
-{
-}
-
-
-void KviCanvasEllipticItem::setProperty(const QString & property,const QVariant &val)
-{
- if(m_properties[property].isValid())
+
+ void KviCanvasPolygon::setInternalPoints(const QPointArray &pnts)
{
- m_properties.replace(property,val);
- if((property == "clrForeground") || (property == "uLineWidth"))
- {
- setPen(QPen(m_properties["clrForeground"].asColor(),m_properties["uLineWidth"].toInt()));
- } else {
- hide(); show();
- }
+ m_points = pnts;
+ resetPoints();
+
}
-}
-
-int KviCanvasEllipticItem::rtti() const
-{
- return KVI_CANVAS_RTTI_ELLIPSE;
-}
-
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-// KviCanvasEllipse
-//
-
-
-KviCanvasEllipse::KviCanvasEllipse(QCanvas * c,int x,int y,int w,int h)
-: KviCanvasEllipticItem(c,x,y,w,h)
-{
-}
-
-KviCanvasEllipse::~KviCanvasEllipse()
-{
-}
-
-int KviCanvasEllipse::rtti() const
-{
- return KVI_CANVAS_RTTI_ELLIPSE;
-}
-
-void KviCanvasEllipse::drawContent(QPainter &p)
-{
- p.drawEllipse((int)x(),(int)y(),width(),height());
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-// KviCanvasPie
-//
-
-
-KviCanvasPie::KviCanvasPie(QCanvas * c,int x,int y,int w,int h)
-: KviCanvasEllipticItem(c,x,y,w,h)
-{
- m_properties.insert("iStartAngle",QVariant((int)0));
- m_properties.insert("iExtensionAngle",QVariant((int)360));
-}
-
-KviCanvasPie::~KviCanvasPie()
-{
-}
-
-int KviCanvasPie::rtti() const
-{
- return KVI_CANVAS_RTTI_PIE;
-}
-
-void KviCanvasPie::drawContent(QPainter &p)
-{
- int iStartAngle = m_properties["iStartAngle"].asInt() * 16;
- int iEndAngle = m_properties["iExtensionAngle"].asInt() * 16;
- p.drawPie((int)x(),(int)y(),width(),height(),iStartAngle,iEndAngle);
-}
-
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-// KviCanvasChord
-//
-
-
-KviCanvasChord::KviCanvasChord(QCanvas * c,int x,int y,int w,int h)
-: KviCanvasEllipticItem(c,x,y,w,h)
-{
- m_properties.insert("iStartAngle",QVariant((int)0));
- m_properties.insert("iExtensionAngle",QVariant((int)360));
-}
-
-KviCanvasChord::~KviCanvasChord()
-{
-}
-
-int KviCanvasChord::rtti() const
-{
- return KVI_CANVAS_RTTI_CHORD;
-}
-
-void KviCanvasChord::drawContent(QPainter &p)
-{
- int iStartAngle = m_properties["iStartAngle"].asInt() * 16;
- int iEndAngle = m_properties["iExtensionAngle"].asInt() * 16;
- p.drawChord((int)x(),(int)y(),width(),height(),iStartAngle,iEndAngle);
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-// KviCanvasRectangle
-//
-
-KviCanvasRectangle::KviCanvasRectangle(QCanvas * c,int x,int y,int w,int h)
-: KviCanvasRectangleItem(c,x,y,w,h)
-{
- m_properties.insert("clrForeground",QVariant(QColor(0,0,0)));
- m_properties.insert("uLineWidth",QVariant((unsigned int)0));
-
- m_properties.insert("clrBackground",QVariant(QColor(0,0,0)));
- m_properties.insert("bHasBackground",QVariant(false,1));
-}
-
-KviCanvasRectangle::~KviCanvasRectangle()
-{
-}
-
-int KviCanvasRectangle::rtti() const
-{
- return KVI_CANVAS_RTTI_RECTANGLE;
-}
-
-
-void KviCanvasRectangle::setProperty(const QString &property,const QVariant &val)
-{
- if(m_properties[property].isValid())
+
+ void KviCanvasPolygon::resetPoints()
{
- m_properties.replace(property,val);
- if((property == "clrForeground") || (property == "uLineWidth"))
+ QPointArray scaled(m_points.size());
+ for(unsigned int i=0;i<m_points.size();i++)
{
- setPen(QPen(m_properties["clrForeground"].asColor(),m_properties["uLineWidth"].toInt()));
- } else {
- hide(); show();
+ int px;
+ int py;
+ m_points.point(i,&px,&py);
+ px = (int)(px * m_dScaleFactor);
+ py = (int)(py * m_dScaleFactor);
+ scaled.setPoint(i,px,py);
}
+ setPoints(scaled);
}
-}
-
-void KviCanvasRectangle::draw(QPainter & p)
-{
-#if QT_VERSION >= 300
- if(isEnabled())
-#else
- if(enabled())
-#endif
+
+ int KviCanvasPolygon::rtti() const
{
- if(m_properties["bHasBackground"].asBool())
+ return KVI_CANVAS_RTTI_POLYGON;
+ }
+
+ void KviCanvasPolygon::setProperty(const QString &property,const QVariant &val)
+ {
+ if(m_properties[property].isValid())
{
- p.fillRect((int)x() + 1,(int)y() + 1,width() - 2,height() - 2,m_properties["clrBackground"].asColor());
+ m_properties.replace(property,val);
+ if((property == "clrForeground") || (property == "uLineWidth"))
+ {
+ setPen(QPen(m_properties["clrForeground"].asColor(),m_properties["uLineWidth"].toInt()));
+ } else if((property == "clrBackground") || (property == "bHasBackground"))
+ {
+ if(m_properties["bHasBackground"].asBool())
+ setBrush(QBrush(m_properties["clrBackground"].asColor()));
+ else
+ setBrush(QBrush());
+ } else {
+ hide(); show();
+ }
}
- p.setPen(pen());
- p.drawRect((int)x(),(int)y(),width(),height());
}
-#if QT_VERSION >= 300
- if(isSelected())drawSelection(p);
-#else
- if(selected())drawSelection(p);
-#endif
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-// KviCanvasRichText
-//
-
-KviCanvasRichText::KviCanvasRichText(QCanvas * c,int x,int y,int w,int h)
-: KviCanvasRectangleItem(c,x,y,w,h)
-{
- QFont f = QFont();
- f.setStyleHint(QFont::SansSerif);
- f.setPointSize(12);
- m_properties.insert("szText",QVariant(QString("<center>Insert here your <font color=\"#FF0000\"><b>RICH TEXT</b></font></center>")));
- m_properties.insert("fntDefault",QVariant(f));
-}
-
-KviCanvasRichText::~KviCanvasRichText()
-{
-}
-
-int KviCanvasRichText::rtti() const
-{
- return KVI_CANVAS_RTTI_RICHTEXT;
-}
-
-void KviCanvasRichText::draw(QPainter & p)
-{
-#if QT_VERSION >= 300
- if(isEnabled())
-#else
- if(enabled())
-#endif
+
+ void KviCanvasPolygon::draw(QPainter &p)
{
- QString szText = m_properties["szText"].asString();
- QSimpleRichText text(szText,m_properties["fntDefault"].asFont());
- text.setWidth(width());
-#if QT_VERSION >= 300
- text.draw(&p,(int)x() + 1,(int)y() + 1,QRegion(QRect((int)x() + 1,(int)y() + 1,width(),height())),QColorGroup());
-#else
- text.draw(&p,(int)x() + 1,(int)y() + 1,QRegion(QRect((int)x() + 1,(int)y() + 1,width(),height())),QPalette());
-#endif
+ if(isEnabled())
+ {
+ p.setBrush(brush());
+ p.setPen(pen());
+ p.drawPolygon(areaPoints());
+ }
+
+ if(isSelected())
+ {
+ p.setRasterOp(NotROP);
+ p.setPen(QPen(DotLine));
+ p.drawPolygon(areaPoints());
+ p.setBrush(QBrush());
+ double dVal = 10;
+ p.drawEllipse((int)(x() - dVal),(int)(y() - dVal),(int)(dVal * 2),(int)(dVal * 2));
+ p.drawLine((int)(x() - (dVal * 2)),(int)y(),(int)(x() + (dVal * 2)),(int)y());
+ p.drawLine((int)x(),(int)(y() - (dVal * 2)),(int)x(),(int)(y() + (dVal * 2)));
+ p.setRasterOp(CopyROP);
+ canvas()->setChanged(QRect((int)(x() - dVal),(int)(y() - dVal),(int)(dVal * 4),(int)(dVal * 4)));
+ }
}
-#if QT_VERSION >= 300
- if(isSelected())drawSelection(p);
-#else
- if(selected())drawSelection(p);
-#endif
-}
-
-
-
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-// KviCanvasLine
-//
-
-
-KviCanvasLine::KviCanvasLine(QCanvas * c,int x1,int y1,int x2,int y2)
-: QCanvasLine(c)
-{
- setPoints(x1,y1,x2,y2);
- m_properties.insert("uLineWidth",QVariant((unsigned int)0));
- m_properties.insert("clrForeground",QVariant(QColor()));
-}
-
-KviCanvasLine::~KviCanvasLine()
-{
-}
-
-void KviCanvasLine::setProperty(const QString &property,const QVariant &val)
-{
- m_properties.replace(property,val);
- if((property == "uLineWidth") || (property == "clrForeground"))
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //
+ // KviCanvasEllipticItem
+ //
+
+ KviCanvasEllipticItem::KviCanvasEllipticItem(QCanvas * c,int x,int y,int w,int h)
+ : KviCanvasRectangleItem(c,x,y,w,h)
{
- setPen(QPen(m_properties["clrForeground"].asColor(),m_properties["uLineWidth"].toInt()));
+ m_properties.insert("clrForeground",QVariant(QColor(0,0,0)));
+ m_properties.insert("uLineWidth",QVariant((unsigned int)0));
+
+ m_properties.insert("clrBackground",QVariant(QColor(0,0,0)));
+ m_properties.insert("bHasBackground",QVariant(false,1));
+
+ // m_properties.insert("iStartAngle",QVariant(0));
+ // m_properties.insert("iEndAngle",QVariant(360));
}
-}
-
-int KviCanvasLine::rtti() const
-{
- return KVI_CANVAS_RTTI_LINE;
-}
-
-void KviCanvasLine::draw(QPainter &p)
-{
-#if QT_VERSION >= 300
- if(isEnabled())
-#else
- if(enabled())
-#endif
+
+ KviCanvasEllipticItem::~KviCanvasEllipticItem()
{
- p.setPen(pen());
- p.drawLine(startPoint(),endPoint());
}
-
-#if QT_VERSION >= 300
- if(isSelected())
-#else
- if(selected())
-#endif
+
+ void KviCanvasEllipticItem::draw(QPainter &p)
{
- p.setRasterOp(NotROP);
- p.setPen(QPen(DotLine));
- p.drawLine(startPoint(),endPoint());
- p.setRasterOp(CopyROP);
+ if(isEnabled())
+ {
+ QBrush b = p.brush();
+ if(m_properties["bHasBackground"].asBool())p.setBrush(m_properties["clrBackground"].asColor());
+ else p.setBrush(QBrush());
+ p.setPen(pen());
+ drawContent(p);
+ p.setBrush(b);
+ }
+
+ if(isSelected())drawSelection(p);
}
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-// KviCanvasView
-//
-
-KviCanvasView::KviCanvasView(QCanvas * c,KviCanvasWidget * cw,QWidget * par)
-: QCanvasView(c,par)
-{
- m_pCanvasWidget = cw;
- m_state = Idle;
- m_dragMode = None;
- m_pSelectedItem = 0;
- viewport()->setMouseTracking(true);
-}
-
-
-KviCanvasView::~KviCanvasView()
-{
-}
-
-
-void KviCanvasView::insertRectangle()
-{
- m_state = SelectOrigin;
- setCursor(crossCursor);
- m_objectToInsert = Rectangle;
-}
-
-void KviCanvasView::insertRichText()
-{
- m_state = SelectOrigin;
- setCursor(crossCursor);
- m_objectToInsert = RichText;
-}
-
-void KviCanvasView::insertLine()
-{
- m_state = SelectOrigin;
- setCursor(crossCursor);
- m_objectToInsert = Line;
-}
-
-void KviCanvasView::insertEllipse()
-{
- m_state = SelectOrigin;
- setCursor(crossCursor);
- m_objectToInsert = Ellipse;
-}
-
-void KviCanvasView::insertPie()
-{
- m_state = SelectOrigin;
- setCursor(crossCursor);
- m_objectToInsert = Pie;
-}
-
-void KviCanvasView::insertChord()
-{
- m_state = SelectOrigin;
- setCursor(crossCursor);
- m_objectToInsert = Chord;
-}
-
-
-void KviCanvasView::insertPolygonTriangle()
-{
- m_state = SelectOrigin;
- setCursor(crossCursor);
- m_objectToInsert = PolygonTriangle;
-}
-
-
-void KviCanvasView::insertPolygonRectangle()
-{
- m_state = SelectOrigin;
- setCursor(crossCursor);
- m_objectToInsert = PolygonRectangle;
-}
-
-
-void KviCanvasView::insertPolygonPentagon()
-{
- m_state = SelectOrigin;
- setCursor(crossCursor);
- m_objectToInsert = PolygonPentagon;
-}
-
-void KviCanvasView::insertPolygonHexagon()
-{
- m_state = SelectOrigin;
- setCursor(crossCursor);
- m_objectToInsert = PolygonPentagon;
-}
-
-#ifndef M_PI
- #define M_PI 3.14159265358979323846
-#endif
-
-static void calcPolygonPoints(QPointArray &pnts,unsigned int nVertices)
-{
- double dDelta = (2 * M_PI) / nVertices;
- for(unsigned int i=0;i<nVertices;i++)
+
+ void KviCanvasEllipticItem::drawContent(QPainter &p)
{
- double dAng = dDelta * i;
- double theX = 300 * sin(dAng);
- double theY = 300 * cos(dAng);
- pnts.setPoint(i,(int)theX,(int)theY);
}
-}
-
-void KviCanvasView::insertObjectAt(const QPoint & pnt,ObjectType o)
-{
- QCanvasItem * r = 0;
-
- switch(o)
+
+ void KviCanvasEllipticItem::setProperty(const QString & property,const QVariant &val)
{
- case Rectangle:
- r = new KviCanvasRectangle(canvas(),pnt.x(),pnt.y(),0,0);
- break;
- case RichText:
- r = new KviCanvasRichText(canvas(),pnt.x(),pnt.y(),0,0);
- break;
- case Line:
- r = new KviCanvasLine(canvas(),pnt.x(),pnt.y(),pnt.x(),pnt.y());
- break;
- case Ellipse:
- r = new KviCanvasEllipse(canvas(),pnt.x(),pnt.y(),0,0);
- break;
- case Pie:
- r = new KviCanvasPie(canvas(),pnt.x(),pnt.y(),0,0);
- break;
- case Chord:
- r = new KviCanvasChord(canvas(),pnt.x(),pnt.y(),0,0);
- break;
- case PolygonTriangle:
- {
- QPointArray pa(3);
- pa.setPoint(0,0,-500);
- pa.setPoint(1,-450,220);
- pa.setPoint(2,450,220);
- r = new KviCanvasPolygon(canvas(),pnt.x(),pnt.y(),pa,0.1);
- }
- break;
- case PolygonRectangle:
+ if(m_properties[property].isValid())
{
- QPointArray pa(4);
- pa.setPoint(0,-350,-350);
- pa.setPoint(1,350,-350);
- pa.setPoint(2,350,350);
- pa.setPoint(3,-350,350);
- r = new KviCanvasPolygon(canvas(),pnt.x(),pnt.y(),pa,0.1);
+ m_properties.replace(property,val);
+ if((property == "clrForeground") || (property == "uLineWidth"))
+ {
+ setPen(QPen(m_properties["clrForeground"].asColor(),m_properties["uLineWidth"].toInt()));
+ } else {
+ hide(); show();
+ }
}
- break;
- case PolygonPentagon:
+ }
+
+ int KviCanvasEllipticItem::rtti() const
+ {
+ return KVI_CANVAS_RTTI_ELLIPSE;
+ }
+
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //
+ // KviCanvasEllipse
+ //
+
+
+ KviCanvasEllipse::KviCanvasEllipse(QCanvas * c,int x,int y,int w,int h)
+ : KviCanvasEllipticItem(c,x,y,w,h)
+ {
+ }
+
+ KviCanvasEllipse::~KviCanvasEllipse()
+ {
+ }
+
+ int KviCanvasEllipse::rtti() const
+ {
+ return KVI_CANVAS_RTTI_ELLIPSE;
+ }
+
+ void KviCanvasEllipse::drawContent(QPainter &p)
+ {
+ p.drawEllipse((int)x(),(int)y(),width(),height());
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //
+ // KviCanvasPie
+ //
+
+
+ KviCanvasPie::KviCanvasPie(QCanvas * c,int x,int y,int w,int h)
+ : KviCanvasEllipticItem(c,x,y,w,h)
+ {
+ m_properties.insert("iStartAngle",QVariant((int)0));
+ m_properties.insert("iExtensionAngle",QVariant((int)360));
+ }
+
+ KviCanvasPie::~KviCanvasPie()
+ {
+ }
+
+ int KviCanvasPie::rtti() const
+ {
+ return KVI_CANVAS_RTTI_PIE;
+ }
+
+ void KviCanvasPie::drawContent(QPainter &p)
+ {
+ int iStartAngle = m_properties["iStartAngle"].asInt() * 16;
+ int iEndAngle = m_properties["iExtensionAngle"].asInt() * 16;
+ p.drawPie((int)x(),(int)y(),width(),height(),iStartAngle,iEndAngle);
+ }
+
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //
+ // KviCanvasChord
+ //
+ KviCanvasChord::KviCanvasChord(QCanvas * c,int x,int y,int w,int h)
+ : KviCanvasEllipticItem(c,x,y,w,h)
+ {
+ m_properties.insert("iStartAngle",QVariant((int)0));
+ m_properties.insert("iExtensionAngle",QVariant((int)360));
+ }
+
+ KviCanvasChord::~KviCanvasChord()
+ {
+ }
+
+ int KviCanvasChord::rtti() const
+ {
+ return KVI_CANVAS_RTTI_CHORD;
+ }
+
+ void KviCanvasChord::drawContent(QPainter &p)
+ {
+ int iStartAngle = m_properties["iStartAngle"].asInt() * 16;
+ int iEndAngle = m_properties["iExtensionAngle"].asInt() * 16;
+ p.drawChord((int)x(),(int)y(),width(),height(),iStartAngle,iEndAngle);
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //
+ // KviCanvasRectangle
+ //
+ KviCanvasRectangle::KviCanvasRectangle(QCanvas * c,int x,int y,int w,int h)
+ : KviCanvasRectangleItem(c,x,y,w,h)
+ {
+ m_properties.insert("clrForeground",QVariant(QColor(0,0,0)));
+ m_properties.insert("uLineWidth",QVariant((unsigned int)0));
+
+ m_properties.insert("clrBackground",QVariant(QColor(0,0,0)));
+ m_properties.insert("bHasBackground",QVariant(false,1));
+ }
+
+ KviCanvasRectangle::~KviCanvasRectangle()
+ {
+ }
+
+ int KviCanvasRectangle::rtti() const
+ {
+ return KVI_CANVAS_RTTI_RECTANGLE;
+ }
+
+ void KviCanvasRectangle::setProperty(const QString &property,const QVariant &val)
+ {
+ if(m_properties[property].isValid())
{
- QPointArray pa(5);
- calcPolygonPoints(pa,5);
- r = new KviCanvasPolygon(canvas(),pnt.x(),pnt.y(),pa,0.1);
+ m_properties.replace(property,val);
+ if((property == "clrForeground") || (property == "uLineWidth"))
+ {
+ setPen(QPen(m_properties["clrForeground"].asColor(),m_properties["uLineWidth"].toInt()));
+ } else {
+ hide(); show();
+ }
}
- break;
- case PolygonHexagon:
+ }
+
+ void KviCanvasRectangle::draw(QPainter & p)
+ {
+ if(isEnabled())
{
- QPointArray pa(6);
- calcPolygonPoints(pa,6);
- r = new KviCanvasPolygon(canvas(),pnt.x(),pnt.y(),pa,0.1);
+ if(m_properties["bHasBackground"].asBool())
+ {
+ p.fillRect((int)x() + 1,(int)y() + 1,width() - 2,height() - 2,m_properties["clrBackground"].asColor());
+ }
+ p.setPen(pen());
+ p.drawRect((int)x(),(int)y(),width(),height());
}
- break;
+
+ if(isSelected())drawSelection(p);
}
-
- if(r)
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //
+ // KviCanvasRichText
+ //
+ KviCanvasRichText::KviCanvasRichText(QCanvas * c,int x,int y,int w,int h)
+ : KviCanvasRectangleItem(c,x,y,w,h)
{
- setItemSelected(r);
- r->setEnabled(true);
- r->show();
+ QFont f = QFont();
+ f.setStyleHint(QFont::SansSerif);
+ f.setPointSize(12);
+ m_properties.insert("szText",QVariant(QString("<center>Insert here your <font color=\"#FF0000\"><b>RICH TEXT</b></font></center>")));
+ m_properties.insert("fntDefault",QVariant(f));
}
-
- switch(KVI_CANVAS_RTTI_CONTROL_TYPE(r))
+
+ KviCanvasRichText::~KviCanvasRichText()
{
- case KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE:
- beginDragRectangle((KviCanvasRectangleItem *)r,pnt,true);
- break;
- case KVI_CANVAS_RTTI_CONTROL_TYPE_LINE:
- beginDragLine((KviCanvasLine *)r,pnt,true);
- break;
-// case KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON:
-// beginDragPolygon((KviCanvasPolygon *)r,pnt,true);
-// break;
}
-
-// canvas()->update();
-}
-
-void KviCanvasView::setItemSelected(QCanvasItem * it)
-{
- clearSelection();
- it->setSelected(true);
- m_pSelectedItem = it;
- m_pCanvasWidget->m_pPropertiesWidget->editItem(it);
-
-}
-
-void KviCanvasView::clearSelection()
-{
- if(!m_pSelectedItem)return;
- m_pSelectedItem->setSelected(false);
- m_pSelectedItem = 0;
- m_pCanvasWidget->m_pPropertiesWidget->editItem(0);
-}
-
-
-
-void KviCanvasView::beginDragLine(KviCanvasLine * it,const QPoint &p,bool bInitial)
-{
- QPoint sp = it->startPoint();
-
- m_dragBegin = p - sp;
-
- if(bInitial)
+
+ int KviCanvasRichText::rtti() const
{
- m_dragMode = Bottom;
- setCursor(sizeAllCursor);
- return;
+ return KVI_CANVAS_RTTI_RICHTEXT;
}
-
- if((abs(p.x() - sp.x()) < 3) && (abs(p.y() - sp.y()) < 3))
+
+ void KviCanvasRichText::draw(QPainter & p)
{
- m_dragMode = Top;
- setCursor(sizeAllCursor);
- return;
+ if(isEnabled())
+ {
+ QString szText = m_properties["szText"].asString();
+ QSimpleRichText text(szText,m_properties["fntDefault"].asFont());
+ text.setWidth(width());
+ text.draw(&p,(int)x() + 1,(int)y() + 1,QRegion(QRect((int)x() + 1,(int)y() + 1,width(),height())),QColorGroup());
+ }
+
+ if(isSelected())drawSelection(p);
}
-
- sp = it->endPoint();
- if((abs(p.x() - sp.x()) < 3) && (abs(p.y() - sp.y()) < 3))
+
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //
+ // KviCanvasLine
+ //
+ KviCanvasLine::KviCanvasLine(QCanvas * c,int x1,int y1,int x2,int y2)
+ : QCanvasLine(c)
{
- m_dragMode = Bottom;
- setCursor(sizeAllCursor);
- return;
+ setPoints(x1,y1,x2,y2);
+ m_properties.insert("uLineWidth",QVariant((unsigned int)0));
+ m_properties.insert("clrForeground",QVariant(QColor()));
}
-
- m_dragMode = All;
- setCursor(pointingHandCursor);
-}
-
-void KviCanvasView::dragLine(KviCanvasLine * it,const QPoint &p)
-{
- switch(m_dragMode)
+
+ KviCanvasLine::~KviCanvasLine()
+ {
+ }
+
+ void KviCanvasLine::setProperty(const QString &property,const QVariant &val)
{
- case Bottom:
+ m_properties.replace(property,val);
+ if((property == "uLineWidth") || (property == "clrForeground"))
{
- QPoint sp = it->startPoint();
- it->setPoints(sp.x(),sp.y(),p.x(),p.y());
+ setPen(QPen(m_properties["clrForeground"].asColor(),m_properties["uLineWidth"].toInt()));
}
- break;
- case Top:
+ }
+
+ int KviCanvasLine::rtti() const
+ {
+ return KVI_CANVAS_RTTI_LINE;
+ }
+
+ void KviCanvasLine::draw(QPainter &p)
+ {
+ if(isEnabled())
{
- QPoint ep = it->endPoint();
- it->setPoints(p.x(),p.y(),ep.x(),ep.y());
+ p.setPen(pen());
+ p.drawLine(startPoint(),endPoint());
}
- break;
- case All:
+
+ if(isSelected())
{
- QPoint sp = p - m_dragBegin;
- QPoint ep = sp + (it->endPoint() - it->startPoint());
- it->setPoints(sp.x(),sp.y(),ep.x(),ep.y());
+ p.setRasterOp(NotROP);
+ p.setPen(QPen(DotLine));
+ p.drawLine(startPoint(),endPoint());
+ p.setRasterOp(CopyROP);
}
- break;
- default: /* make gcc happy */
- break;
}
- canvas()->update();
-}
-
-
-static double ssm_2d_rotationAngleFromXAxis(double dx,double dy)
-{
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
- // v1 . v2 dx * 1 + dy * 0 dx
- //acos(---------) = acos(-----------------) = acos(---------)
- // |v1||v2| |(dx,dy)| * 1 |(dx,dy)|
+ // KviCanvasView
//
-
- //double dVal = hypot(dx,dy);
- double dVal = sqrt((dx * dx) + (dy * dy));
-
- if(dVal == 0.0)return 0; // ???
-
- dVal = acos(dx / dVal);
-
- return (dy > 0.0) ? dVal : -dVal;
-}
-
-static double ssm_2d_rotationAngle(double drefx,double drefy,double drotatedx,double drotatedy)
-{
- double dRefAngle = ssm_2d_rotationAngleFromXAxis(drefx,drefy);
- double dRotAngle = ssm_2d_rotationAngleFromXAxis(drotatedx,drotatedy);
- return dRotAngle - dRefAngle;
-}
-
-static void ssm_2d_rotate(double &dx,double &dy,double dAngle)
-{
- // Rotation matrix:
- //
- // | cos(x) sin(x) |
- // | |
- // | -sin(x) cos(x) |
-
- double s = sin(dAngle);
- double c = cos(dAngle);
-
- double tmpX = (dx * c) - (dy * s);
- double tmpY = (dx * s) + (dy * c);
-
- dx = tmpX;
- dy = tmpY;
-}
-
-static double ssm_hypot(double a,double b)
-{
- return sqrt((a * a) + (b * b));
-}
-
-void KviCanvasView::beginDragPolygon(KviCanvasPolygon * it,const QPoint &p,bool bShift,bool bCtrl)
-{
- m_dragBegin = QPoint((int)(p.x() - it->x()),(int)(p.y() - it->y()));
-
- QPointArray pa = it->areaPoints();
-
- for(unsigned int i=0;i<pa.size();i++)
+ KviCanvasView::KviCanvasView(QCanvas * c,KviCanvasWidget * cw,QWidget * par)
+ : QCanvasView(c,par)
{
- QPoint pnt = pa.point(i);
- double dX = pnt.x() - p.x();
- double dY = pnt.y() - p.y();
- double dHypot = sqrt((dX * dX) + (dY * dY));
- if(dHypot < 3.0)
- {
- // We're dragging a point
- m_dragMode = SinglePoint;
- m_dragPointIndex = i;
- setCursor(crossCursor);
- return;
- }
+ m_pCanvasWidget = cw;
+ m_state = Idle;
+ m_dragMode = None;
+ m_pSelectedItem = 0;
+ viewport()->setMouseTracking(true);
}
-
- if(bShift)
+
+ KviCanvasView::~KviCanvasView()
{
- m_dragMode = Scale;
- m_dragScaleFactor = it->scaleFactor();
- setCursor(sizeAllCursor);
- return;
}
-
- if(bCtrl)
+
+ void KviCanvasView::insertRectangle()
{
- m_dragMode = Rotate;
- m_dragPointArray = it->internalPoints();
-// debug("Here");
- setCursor(sizeHorCursor);
- return;
+ m_state = SelectOrigin;
+ setCursor(crossCursor);
+ m_objectToInsert = Rectangle;
}
-
- m_dragMode = All;
- setCursor(pointingHandCursor);
-}
-
-void KviCanvasView::dragPolygon(KviCanvasPolygon * it,const QPoint &p)
-{
- switch(m_dragMode)
+
+ void KviCanvasView::insertRichText()
{
- case All:
- it->move(p.x() - m_dragBegin.x(),p.y() - m_dragBegin.y());
- break;
- case SinglePoint:
- {
- QPointArray pnt = it->internalPoints();
- pnt.setPoint(m_dragPointIndex,(int)((p.x() - it->x()) / it->scaleFactor()),(int)((p.y() - it->y()) / it->scaleFactor()));
- it->setInternalPoints(pnt);
- }
- break;
- case Scale:
+ m_state = SelectOrigin;
+ setCursor(crossCursor);
+ m_objectToInsert = RichText;
+ }
+
+ void KviCanvasView::insertLine()
+ {
+ m_state = SelectOrigin;
+ setCursor(crossCursor);
+ m_objectToInsert = Line;
+ }
+
+ void KviCanvasView::insertEllipse()
+ {
+ m_state = SelectOrigin;
+ setCursor(crossCursor);
+ m_objectToInsert = Ellipse;
+ }
+
+ void KviCanvasView::insertPie()
+ {
+ m_state = SelectOrigin;
+ setCursor(crossCursor);
+ m_objectToInsert = Pie;
+ }
+
+ void KviCanvasView::insertChord()
+ {
+ m_state = SelectOrigin;
+ setCursor(crossCursor);
+ m_objectToInsert = Chord;
+ }
+
+ void KviCanvasView::insertPolygonTriangle()
+ {
+ m_state = SelectOrigin;
+ setCursor(crossCursor);
+ m_objectToInsert = PolygonTriangle;
+ }
+
+ void KviCanvasView::insertPolygonRectangle()
+ {
+ m_state = SelectOrigin;
+ setCursor(crossCursor);
+ m_objectToInsert = PolygonRectangle;
+ }
+
+ void KviCanvasView::insertPolygonPentagon()
+ {
+ m_state = SelectOrigin;
+ setCursor(crossCursor);
+ m_objectToInsert = PolygonPentagon;
+ }
+
+ void KviCanvasView::insertPolygonHexagon()
+ {
+ m_state = SelectOrigin;
+ setCursor(crossCursor);
+ m_objectToInsert = PolygonPentagon;
+ }
+
+ #ifndef M_PI
+ #define M_PI 3.14159265358979323846
+ #endif
+
+ static void calcPolygonPoints(QPointArray &pnts,unsigned int nVertices)
+ {
+ double dDelta = (2 * M_PI) / nVertices;
+ for(unsigned int i=0;i<nVertices;i++)
{
- double dDistance = ssm_hypot(p.x() - it->x(),p.y() - it->y());
- double dOriginal = ssm_hypot(m_dragBegin.x(),m_dragBegin.y());
- if(dOriginal < 1)dOriginal = 1;
- if(dDistance < 0.1)dDistance = 0.1;
- it->setScaleFactor(m_dragScaleFactor * dDistance / dOriginal);
+ double dAng = dDelta * i;
+ double theX = 300 * sin(dAng);
+ double theY = 300 * cos(dAng);
+ pnts.setPoint(i,(int)theX,(int)theY);
}
- break;
- case Rotate:
+ }
+
+ void KviCanvasView::insertObjectAt(const QPoint & pnt,ObjectType o)
+ {
+ QCanvasItem * r = 0;
+
+ switch(o)
{
- QPoint act((int)(p.x() - it->x()),(int)(p.y() - it->y()));
- double dAngle = ssm_2d_rotationAngle(m_dragBegin.x(),m_dragBegin.y(),act.x(),act.y());
-// debug("%d,%d %d,%d %f",m_dragBegin.x(),m_dragBegin.y(),act.x(),act.y(),dAngle);
- QPointArray thePoints = m_dragPointArray.copy();
- for(unsigned int i=0;i<thePoints.size();i++)
+ case Rectangle:
+ r = new KviCanvasRectangle(canvas(),pnt.x(),pnt.y(),0,0);
+ break;
+ case RichText:
+ r = new KviCanvasRichText(canvas(),pnt.x(),pnt.y(),0,0);
+ break;
+ case Line:
+ r = new KviCanvasLine(canvas(),pnt.x(),pnt.y(),pnt.x(),pnt.y());
+ break;
+ case Ellipse:
+ r = new KviCanvasEllipse(canvas(),pnt.x(),pnt.y(),0,0);
+ break;
+ case Pie:
+ r = new KviCanvasPie(canvas(),pnt.x(),pnt.y(),0,0);
+ break;
+ case Chord:
+ r = new KviCanvasChord(canvas(),pnt.x(),pnt.y(),0,0);
+ break;
+ case PolygonTriangle:
{
- QPoint tmp = thePoints.point(i);
- double dx = tmp.x();
- double dy = tmp.y();
- ssm_2d_rotate(dx,dy,dAngle);
- thePoints.setPoint(i,(int)dx,(int)dy);
+ QPointArray pa(3);
+ pa.setPoint(0,0,-500);
+ pa.setPoint(1,-450,220);
+ pa.setPoint(2,450,220);
+ r = new KviCanvasPolygon(canvas(),pnt.x(),pnt.y(),pa,0.1);
}
- it->setInternalPoints(thePoints);
+ break;
+ case PolygonRectangle:
+ {
+ QPointArray pa(4);
+ pa.setPoint(0,-350,-350);
+ pa.setPoint(1,350,-350);
+ pa.setPoint(2,350,350);
+ pa.setPoint(3,-350,350);
+ r = new KviCanvasPolygon(canvas(),pnt.x(),pnt.y(),pa,0.1);
+ }
+ break;
+ case PolygonPentagon:
+ {
+ QPointArray pa(5);
+ calcPolygonPoints(pa,5);
+ r = new KviCanvasPolygon(canvas(),pnt.x(),pnt.y(),pa,0.1);
+ }
+ break;
+ case PolygonHexagon:
+ {
+ QPointArray pa(6);
+ calcPolygonPoints(pa,6);
+ r = new KviCanvasPolygon(canvas(),pnt.x(),pnt.y(),pa,0.1);
+ }
+ break;
+ }
+
+ if(r)
+ {
+ setItemSelected(r);
+ r->setEnabled(true);
+ r->show();
+ }
+
+ switch(KVI_CANVAS_RTTI_CONTROL_TYPE(r))
+ {
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE:
+ beginDragRectangle((KviCanvasRectangleItem *)r,pnt,true);
+ break;
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_LINE:
+ beginDragLine((KviCanvasLine *)r,pnt,true);
+ break;
+ // case KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON:
+ // beginDragPolygon((KviCanvasPolygon *)r,pnt,true);
+ // break;
}
- break;
- default:
- break;
+
+ // canvas()->update();
}
- canvas()->update();
-}
-
-void KviCanvasView::beginDragRectangle(KviCanvasRectangleItem * it,const QPoint & p,bool bInitial)
-{
- m_dragBegin = QPoint((int)(p.x() - it->x()),(int)(p.y() - it->y()));
-
- if(bInitial)
+
+ void KviCanvasView::setItemSelected(QCanvasItem * it)
{
- // Right bottom
- m_dragMode = RightBottom;
- setCursor(sizeFDiagCursor);
- return;
+ clearSelection();
+ it->setSelected(true);
+ m_pSelectedItem = it;
+ m_pCanvasWidget->m_pPropertiesWidget->editItem(it);
+
}
-
- if(p.x() < (((int)it->x()) + 2))
+
+ void KviCanvasView::clearSelection()
{
- // Left edge
- if(p.y() < (((int)it->y()) + 2))
+ if(!m_pSelectedItem)return;
+ m_pSelectedItem->setSelected(false);
+ m_pSelectedItem = 0;
+ m_pCanvasWidget->m_pPropertiesWidget->editItem(0);
+ }
+
+ void KviCanvasView::beginDragLine(KviCanvasLine * it,const QPoint &p,bool bInitial)
+ {
+ QPoint sp = it->startPoint();
+
+ m_dragBegin = p - sp;
+
+ if(bInitial)
{
- // Left top
- m_dragMode = LeftTop;
- setCursor(sizeFDiagCursor);
+ m_dragMode = Bottom;
+ setCursor(sizeAllCursor);
return;
}
- if(p.y() > ( it->bottom() - 2))
+
+ if((abs(p.x() - sp.x()) < 3) && (abs(p.y() - sp.y()) < 3))
{
- // Left bottom
- m_dragMode = LeftBottom;
- setCursor(sizeBDiagCursor);
+ m_dragMode = Top;
+ setCursor(sizeAllCursor);
return;
}
- m_dragMode = Left;
- setCursor(sizeHorCursor);
- return;
- }
-
- if(p.x() > (it->right() - 2))
- {
- // Right edge
- if(p.y() < (((int)it->y()) + 2))
+
+ sp = it->endPoint();
+ if((abs(p.x() - sp.x()) < 3) && (abs(p.y() - sp.y()) < 3))
{
- // Right top
- m_dragMode = RightTop;
- setCursor(sizeBDiagCursor);
+ m_dragMode = Bottom;
+ setCursor(sizeAllCursor);
return;
}
- if(p.y() > ( it->bottom() - 2))
+
+ m_dragMode = All;
+ setCursor(pointingHandCursor);
+ }
+
+ void KviCanvasView::dragLine(KviCanvasLine * it,const QPoint &p)
+ {
+ switch(m_dragMode)
{
- // Right bottom
- m_dragMode = RightBottom;
- setCursor(sizeFDiagCursor);
- return;
+ case Bottom:
+ {
+ QPoint sp = it->startPoint();
+ it->setPoints(sp.x(),sp.y(),p.x(),p.y());
+ }
+ break;
+ case Top:
+ {
+ QPoint ep = it->endPoint();
+ it->setPoints(p.x(),p.y(),ep.x(),ep.y());
+ }
+ break;
+ case All:
+ {
+ QPoint sp = p - m_dragBegin;
+ QPoint ep = sp + (it->endPoint() - it->startPoint());
+ it->setPoints(sp.x(),sp.y(),ep.x(),ep.y());
+ }
+ break;
+ default: /* make gcc happy */
+ break;
}
- m_dragMode = Right;
- setCursor(sizeHorCursor);
- return;
+ canvas()->update();
}
- // Somewhere in the middle
- if(p.y() < (((int)it->y()) + 2))
+ static double ssm_2d_rotationAngleFromXAxis(double dx,double dy)
{
- // Top
- m_dragMode = Top;
- setCursor(sizeVerCursor);
- return;
+ //
+ // v1 . v2 dx * 1 + dy * 0 dx
+ //acos(---------) = acos(-----------------) = acos(---------)
+ // |v1||v2| |(dx,dy)| * 1 |(dx,dy)|
+ //
+
+ //double dVal = hypot(dx,dy);
+ double dVal = sqrt((dx * dx) + (dy * dy));
+
+ if(dVal == 0.0)return 0; // ???
+
+ dVal = acos(dx / dVal);
+
+ return (dy > 0.0) ? dVal : -dVal;
}
- if(p.y() > ( it->bottom() - 2))
+
+ static double ssm_2d_rotationAngle(double drefx,double drefy,double drotatedx,double drotatedy)
{
- // Bottom
- m_dragMode = Bottom;
- setCursor(sizeVerCursor);
- return;
+ double dRefAngle = ssm_2d_rotationAngleFromXAxis(drefx,drefy);
+ double dRotAngle = ssm_2d_rotationAngleFromXAxis(drotatedx,drotatedy);
+ return dRotAngle - dRefAngle;
}
-
- m_dragMode = All;
- setCursor(pointingHandCursor);
-}
-
-void KviCanvasView::dragRectangle(KviCanvasRectangleItem * it,const QPoint & p)
-{
-
- int aux1,aux2,aux3,aux4;
-
- switch(m_dragMode)
+
+ static void ssm_2d_rotate(double &dx,double &dy,double dAngle)
{
- case All:
- it->move(p.x() - m_dragBegin.x(),p.y() - m_dragBegin.y());
- break;
- case Left:
- aux1 = it->width() + (int)(it->x() - p.x());
- aux2 = p.x();
- if(aux1 < 1)
- {
- aux2 += (aux1 - 1);
- aux1 = 1;
- }
- it->move(aux2,it->y());
- it->setSize(aux1,it->height());
- break;
- case Right:
- aux1 = it->width() + (p.x() - it->right());
- if(aux1 < 1)aux1 = 1;
- it->setSize(aux1,it->height());
- break;
- case Top:
- aux1 = it->height() + (int)(it->y() - p.y());
- aux2 = p.y();
- if(aux1 < 1)
- {
- aux2 += (aux1 - 1);
- aux1 = 1;
- }
- it->move(it->x(),aux2);
- it->setSize(it->width(),aux1);
- break;
- case Bottom:
- aux1 = (int)it->height() + (p.y() - it->bottom());
- if(aux1 < 1)aux1 = 1;
- it->setSize(it->width(),aux1);
- break;
- case LeftTop:
- aux1 = it->width() + (int)(it->x() - p.x());
- aux3 = p.x();
- if(aux1 < 1)
+ // Rotation matrix:
+ //
+ // | cos(x) sin(x) |
+ // | |
+ // | -sin(x) cos(x) |
+
+ double s = sin(dAngle);
+ double c = cos(dAngle);
+
+ double tmpX = (dx * c) - (dy * s);
+ double tmpY = (dx * s) + (dy * c);
+
+ dx = tmpX;
+ dy = tmpY;
+ }
+
+ static double ssm_hypot(double a,double b)
+ {
+ return sqrt((a * a) + (b * b));
+ }
+
+ void KviCanvasView::beginDragPolygon(KviCanvasPolygon * it,const QPoint &p,bool bShift,bool bCtrl)
+ {
+ m_dragBegin = QPoint((int)(p.x() - it->x()),(int)(p.y() - it->y()));
+
+ QPointArray pa = it->areaPoints();
+
+ for(unsigned int i=0;i<pa.size();i++)
+ {
+ QPoint pnt = pa.point(i);
+ double dX = pnt.x() - p.x();
+ double dY = pnt.y() - p.y();
+ double dHypot = sqrt((dX * dX) + (dY * dY));
+ if(dHypot < 3.0)
{
- aux3 += (aux1 - 1);
- aux1 = 1;
+ // We're dragging a point
+ m_dragMode = SinglePoint;
+ m_dragPointIndex = i;
+ setCursor(crossCursor);
+ return;
}
- aux2 = it->height() + (int)(it->y() - p.y());
- aux4 = p.y();
- if(aux2 < 1)
+ }
+
+ if(bShift)
+ {
+ m_dragMode = Scale;
+ m_dragScaleFactor = it->scaleFactor();
+ setCursor(sizeAllCursor);
+ return;
+ }
+
+ if(bCtrl)
+ {
+ m_dragMode = Rotate;
+ m_dragPointArray = it->internalPoints();
+ // debug("Here");
+ setCursor(sizeHorCursor);
+ return;
+ }
+
+ m_dragMode = All;
+ setCursor(pointingHandCursor);
+ }
+
+ void KviCanvasView::dragPolygon(KviCanvasPolygon * it,const QPoint &p)
+ {
+ switch(m_dragMode)
+ {
+ case All:
+ it->move(p.x() - m_dragBegin.x(),p.y() - m_dragBegin.y());
+ break;
+ case SinglePoint:
{
- aux4 += (aux2 - 1);
- aux2 = 1;
+ QPointArray pnt = it->internalPoints();
+ pnt.setPoint(m_dragPointIndex,(int)((p.x() - it->x()) / it->scaleFactor()),(int)((p.y() - it->y()) / it->scaleFactor()));
+ it->setInternalPoints(pnt);
}
- it->setSize(aux1,aux2);
- it->move(aux3,aux4);
- break;
- case RightTop:
- aux1 = it->width() + (int)(p.x() - it->right());
- if(aux1 < 1)aux1 = 1;
- aux2 = it->height() + (int)(it->y() - p.y());
- aux4 = p.y();
- if(aux2 < 1)
+ break;
+ case Scale:
{
- aux4 += (aux2 - 1);
- aux2 = 1;
+ double dDistance = ssm_hypot(p.x() - it->x(),p.y() - it->y());
+ double dOriginal = ssm_hypot(m_dragBegin.x(),m_dragBegin.y());
+ if(dOriginal < 1)dOriginal = 1;
+ if(dDistance < 0.1)dDistance = 0.1;
+ it->setScaleFactor(m_dragScaleFactor * dDistance / dOriginal);
}
- it->setSize(aux1,aux2);
- it->move(it->x(),aux4);
- break;
- case LeftBottom:
- aux1 = it->width() + (int)(it->x() - p.x());
- aux3 = p.x();
- if(aux1 < 1)
+ break;
+ case Rotate:
{
- aux3 += (aux1 - 1);
- aux1 = 1;
+ QPoint act((int)(p.x() - it->x()),(int)(p.y() - it->y()));
+ double dAngle = ssm_2d_rotationAngle(m_dragBegin.x(),m_dragBegin.y(),act.x(),act.y());
+ // debug("%d,%d %d,%d %f",m_dragBegin.x(),m_dragBegin.y(),act.x(),act.y(),dAngle);
+ QPointArray thePoints = m_dragPointArray.copy();
+ for(unsigned int i=0;i<thePoints.size();i++)
+ {
+ QPoint tmp = thePoints.point(i);
+ double dx = tmp.x();
+ double dy = tmp.y();
+ ssm_2d_rotate(dx,dy,dAngle);
+ thePoints.setPoint(i,(int)dx,(int)dy);
+ }
+ it->setInternalPoints(thePoints);
}
- aux2 = it->height() + (int)(p.y() - it->bottom());
- if(aux2 < 1)aux2 = 1;
- it->setSize(aux1,aux2);
- it->move(aux3,it->y());
- break;
- case RightBottom:
- aux1 = it->width() + (int)(p.x() - it->right());
- if(aux1 < 1)aux1 = 1;
- aux2 = it->height() + (int)(p.y() - it->bottom());
- if(aux2 < 1)aux2 = 1;
- it->setSize(aux1,aux2);
- break;
- default:
- break;
+ break;
+ default:
+ break;
+ }
+ canvas()->update();
}
-
- canvas()->update();
-}
-
-void KviCanvasView::contentsMouseMoveEvent(QMouseEvent *e)
-{
-// QPoint p = inverseWorldMatrix().map(e->pos());
- QPoint p = e->pos();
- if(e->state() & Qt::LeftButton)
+
+ void KviCanvasView::beginDragRectangle(KviCanvasRectangleItem * it,const QPoint & p,bool bInitial)
{
- if((m_dragMode != None) && (m_pSelectedItem))
+ m_dragBegin = QPoint((int)(p.x() - it->x()),(int)(p.y() - it->y()));
+
+ if(bInitial)
{
-#if QT_VERSION >= 300
- if(m_pSelectedItem->isEnabled())m_pSelectedItem->setEnabled(false);
-#else
- if(m_pSelectedItem->enabled())m_pSelectedItem->setEnabled(false);
-#endif
- switch(KVI_CANVAS_RTTI_CONTROL_TYPE(m_pSelectedItem))
+ // Right bottom
+ m_dragMode = RightBottom;
+ setCursor(sizeFDiagCursor);
+ return;
+ }
+
+ if(p.x() < (((int)it->x()) + 2))
+ {
+ // Left edge
+ if(p.y() < (((int)it->y()) + 2))
{
- case KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE:
- dragRectangle((KviCanvasRectangleItem *)m_pSelectedItem,p);
- break;
- case KVI_CANVAS_RTTI_CONTROL_TYPE_LINE:
- dragLine((KviCanvasLine *)m_pSelectedItem,p);
- break;
- case KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON:
- dragPolygon((KviCanvasPolygon *)m_pSelectedItem,p);
- break;
+ // Left top
+ m_dragMode = LeftTop;
+ setCursor(sizeFDiagCursor);
+ return;
}
+ if(p.y() > ( it->bottom() - 2))
+ {
+ // Left bottom
+ m_dragMode = LeftBottom;
+ setCursor(sizeBDiagCursor);
+ return;
+ }
+ m_dragMode = Left;
+ setCursor(sizeHorCursor);
+ return;
}
- } else {
- // Without buttons
- if(m_state == Idle)
- {
- QCanvasItemList l = canvas()->collisions(p);
- QCanvasItemList::Iterator it = l.begin();
- if(it != l.end())
+ if(p.x() > (it->right() - 2))
+ {
+ // Right edge
+ if(p.y() < (((int)it->y()) + 2))
{
- // Got an item
- QCanvasItem * hit = (QCanvasItem *)*it;
- // Now find the point on that we have clicked it
- if(hit == m_pSelectedItem)
- {
- switch(KVI_CANVAS_RTTI_CONTROL_TYPE(m_pSelectedItem))
- {
- case KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE:
- beginDragRectangle((KviCanvasRectangleItem *)m_pSelectedItem,p);
- break;
- case KVI_CANVAS_RTTI_CONTROL_TYPE_LINE:
- beginDragLine((KviCanvasLine *)m_pSelectedItem,p);
- break;
- case KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON:
- beginDragPolygon((KviCanvasPolygon *)m_pSelectedItem,p);
- break;
- }
- }
- else if(m_dragMode != None)setCursor(arrowCursor);
- } else {
- if(m_dragMode != None)setCursor(arrowCursor);
+ // Right top
+ m_dragMode = RightTop;
+ setCursor(sizeBDiagCursor);
+ return;
}
+ if(p.y() > ( it->bottom() - 2))
+ {
+ // Right bottom
+ m_dragMode = RightBottom;
+ setCursor(sizeFDiagCursor);
+ return;
+ }
+ m_dragMode = Right;
+ setCursor(sizeHorCursor);
+ return;
}
+
+ // Somewhere in the middle
+ if(p.y() < (((int)it->y()) + 2))
+ {
+ // Top
+ m_dragMode = Top;
+ setCursor(sizeVerCursor);
+ return;
+ }
+ if(p.y() > ( it->bottom() - 2))
+ {
+ // Bottom
+ m_dragMode = Bottom;
+ setCursor(sizeVerCursor);
+ return;
+ }
+
+ m_dragMode = All;
+ setCursor(pointingHandCursor);
}
-}
-
-void KviCanvasView::contentsMouseReleaseEvent(QMouseEvent *e)
-{
- if(m_dragMode != None)
+
+ void KviCanvasView::dragRectangle(KviCanvasRectangleItem * it,const QPoint & p)
{
- // Was just dragging a rectangle
- m_dragMode = None;
- setCursor(arrowCursor);
- if(m_pSelectedItem)
+
+ int aux1,aux2,aux3,aux4;
+
+ switch(m_dragMode)
{
- m_pSelectedItem->setEnabled(true);
- canvas()->update();
+ case All:
+ it->move(p.x() - m_dragBegin.x(),p.y() - m_dragBegin.y());
+ break;
+ case Left:
+ aux1 = it->width() + (int)(it->x() - p.x());
+ aux2 = p.x();
+ if(aux1 < 1)
+ {
+ aux2 += (aux1 - 1);
+ aux1 = 1;
+ }
+ it->move(aux2,it->y());
+ it->setSize(aux1,it->height());
+ break;
+ case Right:
+ aux1 = it->width() + (p.x() - it->right());
+ if(aux1 < 1)aux1 = 1;
+ it->setSize(aux1,it->height());
+ break;
+ case Top:
+ aux1 = it->height() + (int)(it->y() - p.y());
+ aux2 = p.y();
+ if(aux1 < 1)
+ {
+ aux2 += (aux1 - 1);
+ aux1 = 1;
+ }
+ it->move(it->x(),aux2);
+ it->setSize(it->width(),aux1);
+ break;
+ case Bottom:
+ aux1 = (int)it->height() + (p.y() - it->bottom());
+ if(aux1 < 1)aux1 = 1;
+ it->setSize(it->width(),aux1);
+ break;
+ case LeftTop:
+ aux1 = it->width() + (int)(it->x() - p.x());
+ aux3 = p.x();
+ if(aux1 < 1)
+ {
+ aux3 += (aux1 - 1);
+ aux1 = 1;
+ }
+ aux2 = it->height() + (int)(it->y() - p.y());
+ aux4 = p.y();
+ if(aux2 < 1)
+ {
+ aux4 += (aux2 - 1);
+ aux2 = 1;
+ }
+ it->setSize(aux1,aux2);
+ it->move(aux3,aux4);
+ break;
+ case RightTop:
+ aux1 = it->width() + (int)(p.x() - it->right());
+ if(aux1 < 1)aux1 = 1;
+ aux2 = it->height() + (int)(it->y() - p.y());
+ aux4 = p.y();
+ if(aux2 < 1)
+ {
+ aux4 += (aux2 - 1);
+ aux2 = 1;
+ }
+ it->setSize(aux1,aux2);
+ it->move(it->x(),aux4);
+ break;
+ case LeftBottom:
+ aux1 = it->width() + (int)(it->x() - p.x());
+ aux3 = p.x();
+ if(aux1 < 1)
+ {
+ aux3 += (aux1 - 1);
+ aux1 = 1;
+ }
+ aux2 = it->height() + (int)(p.y() - it->bottom());
+ if(aux2 < 1)aux2 = 1;
+ it->setSize(aux1,aux2);
+ it->move(aux3,it->y());
+ break;
+ case RightBottom:
+ aux1 = it->width() + (int)(p.x() - it->right());
+ if(aux1 < 1)aux1 = 1;
+ aux2 = it->height() + (int)(p.y() - it->bottom());
+ if(aux2 < 1)aux2 = 1;
+ it->setSize(aux1,aux2);
+ break;
+ default:
+ break;
}
+
+ canvas()->update();
}
-}
-
-void KviCanvasView::contentsMousePressEvent(QMouseEvent *e)
-{
- if(e->button() & Qt::LeftButton)
+
+ void KviCanvasView::contentsMouseMoveEvent(QMouseEvent *e)
{
-// QPoint p = inverseWorldMatrix().map(e->pos());
+ // QPoint p = inverseWorldMatrix().map(e->pos());
QPoint p = e->pos();
-
- switch(m_state)
+ if(e->state() & Qt::LeftButton)
{
- case SelectOrigin:
- clearSelection();
- setCursor(arrowCursor);
- m_state = Idle;
- insertObjectAt(p,m_objectToInsert);
- canvas()->update();
- break;
-
- case Idle:
+ if((m_dragMode != None) && (m_pSelectedItem))
+ {
+ if(m_pSelectedItem->isEnabled())m_pSelectedItem->setEnabled(false);
+ switch(KVI_CANVAS_RTTI_CONTROL_TYPE(m_pSelectedItem))
+ {
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE:
+ dragRectangle((KviCanvasRectangleItem *)m_pSelectedItem,p);
+ break;
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_LINE:
+ dragLine((KviCanvasLine *)m_pSelectedItem,p);
+ break;
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON:
+ dragPolygon((KviCanvasPolygon *)m_pSelectedItem,p);
+ break;
+ }
+ }
+ } else {
+ // Without buttons
+ if(m_state == Idle)
{
QCanvasItemList l = canvas()->collisions(p);
QCanvasItemList::Iterator it = l.begin();
-
+
if(it != l.end())
{
// Got an item
- QCanvasItem * hit = *it;
- if(hit != m_pSelectedItem)
- {
- // Was not selected yet
- setItemSelected(hit);
- canvas()->update();
- }
+ QCanvasItem * hit = (QCanvasItem *)*it;
// Now find the point on that we have clicked it
- switch(KVI_CANVAS_RTTI_CONTROL_TYPE(hit))
+ if(hit == m_pSelectedItem)
{
- case KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE:
- beginDragRectangle(((KviCanvasRectangleItem *)hit),p);
- break;
- case KVI_CANVAS_RTTI_CONTROL_TYPE_LINE:
- beginDragLine(((KviCanvasLine *)hit),p);
- break;
- case KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON:
- beginDragPolygon(((KviCanvasPolygon *)hit),p,e->state() & Qt::ShiftButton,e->state() & Qt::ControlButton);
- break;
+ switch(KVI_CANVAS_RTTI_CONTROL_TYPE(m_pSelectedItem))
+ {
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE:
+ beginDragRectangle((KviCanvasRectangleItem *)m_pSelectedItem,p);
+ break;
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_LINE:
+ beginDragLine((KviCanvasLine *)m_pSelectedItem,p);
+ break;
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON:
+ beginDragPolygon((KviCanvasPolygon *)m_pSelectedItem,p);
+ break;
+ }
}
+ else if(m_dragMode != None)setCursor(arrowCursor);
} else {
- // No item
- clearSelection();
- canvas()->update();
+ if(m_dragMode != None)setCursor(arrowCursor);
}
}
- break;
}
}
-}
-
-
-void KviCanvasView::propertyChanged(const QString &s,const QVariant &v)
-{
- if(!m_pSelectedItem)return;
-
-
- switch(KVI_CANVAS_RTTI_CONTROL_TYPE(m_pSelectedItem))
- {
- case KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE:
- ((KviCanvasRectangleItem *)m_pSelectedItem)->setProperty(s,v);
- break;
- case KVI_CANVAS_RTTI_CONTROL_TYPE_LINE:
- ((KviCanvasLine *)m_pSelectedItem)->setProperty(s,v);
- break;
- case KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON:
- ((KviCanvasPolygon *)m_pSelectedItem)->setProperty(s,v);
- break;
- }
-
- canvas()->update();
-}
-
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-// KviVariantTableItem
-//
-
-
-
-KviVariantTableItem::KviVariantTableItem(QTable * t,const QVariant & property)
-: QTableItem(t,QTableItem::WhenCurrent,QString::null)
-{
- m_property = property;
-}
-
-KviVariantTableItem::~KviVariantTableItem()
-{
-}
-
-
-QWidget * KviVariantTableItem::createEditor() const
-{
- switch(m_property.type())
+
+ void KviCanvasView::contentsMouseReleaseEvent(QMouseEvent *e)
{
- case QVariant::String:
- {
- QLineEdit * e = new QLineEdit(table()->viewport());
- e->setText(m_property.toString());
- return e;
- }
- break;
- case QVariant::Int:
- {
- QLineEdit * e = new QLineEdit(table()->viewport());
- QString sz;
- sz.setNum(m_property.toInt());
- e->setText(sz);
- e->setValidator(new QIntValidator(e));
- return e;
- }
- break;
- case QVariant::UInt:
- {
- QLineEdit * e = new QLineEdit(table()->viewport());
- QString sz;
- sz.setNum(m_property.toInt());
- e->setText(sz);
- QIntValidator * i = new QIntValidator(e);
- i->setBottom(0);
- e->setValidator(i);
- return e;
- }
- break;
- case QVariant::Bool:
- {
- QComboBox * b = new QComboBox(false,table()->viewport());
- b->insertItem("FALSE");
- b->insertItem("TRUE");
- b->setCurrentItem(m_property.toBool() ? 1 : 0);
- return b;
- }
- break;
- case QVariant::Color:
+ if(m_dragMode != None)
{
- QLineEdit * e = new QLineEdit(table()->viewport());
- e->setText(m_property.toColor().name());
- return e;
- }
- break;
- case QVariant::Font:
- {
- QComboBox * b = new QComboBox(true,table()->viewport());
-
- QString tmp;
- QString tmpDefault;
- QFont f = QFont();
- f.setStyleHint(QFont::SansSerif);
- tmpDefault = f.family();
- f.setStyleHint(QFont::TypeWriter);
- tmp.setNum(m_property.toFont().pointSize());
- tmp.prepend(", ");
- tmp.prepend(m_property.toFont().family());
- b->insertItem(tmp);
- b->insertItem(tmpDefault + ", 8");
- b->insertItem(tmpDefault + ", 10");
- b->insertItem(tmpDefault + ", 12");
- b->insertItem(tmpDefault + ", 14");
- b->insertItem(tmpDefault + ", 16");
- b->insertItem(tmpDefault + ", 18");
- b->insertItem(tmpDefault + ", 20");
- b->insertItem(tmpDefault + ", 24");
- b->insertItem(tmpDefault + ", 28");
- b->insertItem(tmpDefault + ", 32");
- b->insertItem(tmpDefault + ", 40");
- b->insertItem(tmpDefault + ", 48");
- b->insertItem(f.family() + ", 12");
- b->setCurrentItem(0);
-
- b->setCurrentItem(m_property.toBool() ? 1 : 0);
- return b;
+ // Was just dragging a rectangle
+ m_dragMode = None;
+ setCursor(arrowCursor);
+ if(m_pSelectedItem)
+ {
+ m_pSelectedItem->setEnabled(true);
+ canvas()->update();
+ }
}
- break;
- default:
- break;
}
- return 0;
-}
-
-void KviVariantTableItem::setContentFromEditor(QWidget * w)
-{
- switch(m_property.type())
+
+ void KviCanvasView::contentsMousePressEvent(QMouseEvent *e)
{
- case QVariant::String:
- m_property = QVariant(((QLineEdit *)w)->text());
- break;
- case QVariant::Int:
- m_property = QVariant(((QLineEdit *)w)->text().toInt());
- break;
- case QVariant::UInt:
- m_property = QVariant(((QLineEdit *)w)->text().toUInt());
- break;
- case QVariant::Bool:
- m_property = QVariant(((QComboBox *)w)->currentItem(),1);
- break;
- case QVariant::Color:
- m_property.asColor().setNamedColor(((QLineEdit *)w)->text());
- break;
- case QVariant::Font:
+ if(e->button() & Qt::LeftButton)
{
- KviStr txt = ((QComboBox *)w)->currentText();
- if(txt.hasData())
+ // QPoint p = inverseWorldMatrix().map(e->pos());
+ QPoint p = e->pos();
+
+ switch(m_state)
{
- KviStr fam = txt;
- fam.cutFromFirst(',',true);
- fam.stripWhiteSpace();
- KviStr psz = txt;
- psz.cutToFirst(',',true);
- psz.stripWhiteSpace();
- bool bOk;
- unsigned int uSize = psz.toUInt(&bOk);
- if(!bOk)uSize = 12;
- m_property = QVariant(QFont(fam.ptr(),uSize));
+ case SelectOrigin:
+ clearSelection();
+ setCursor(arrowCursor);
+ m_state = Idle;
+ insertObjectAt(p,m_objectToInsert);
+ canvas()->update();
+ break;
+
+ case Idle:
+ {
+ QCanvasItemList l = canvas()->collisions(p);
+ QCanvasItemList::Iterator it = l.begin();
+
+ if(it != l.end())
+ {
+ // Got an item
+ QCanvasItem * hit = *it;
+ if(hit != m_pSelectedItem)
+ {
+ // Was not selected yet
+ setItemSelected(hit);
+ canvas()->update();
+ }
+ // Now find the point on that we have clicked it
+ switch(KVI_CANVAS_RTTI_CONTROL_TYPE(hit))
+ {
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE:
+ beginDragRectangle(((KviCanvasRectangleItem *)hit),p);
+ break;
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_LINE:
+ beginDragLine(((KviCanvasLine *)hit),p);
+ break;
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON:
+ beginDragPolygon(((KviCanvasPolygon *)hit),p,e->state() & Qt::ShiftButton,e->state() & Qt::ControlButton);
+ break;
+ }
+ } else {
+ // No item
+ clearSelection();
+ canvas()->update();
+ }
+ }
+ break;
}
-
}
- break;
- default:
- break;
}
-}
-
-
-void KviVariantTableItem::paint(QPainter *p,const QColorGroup &cg,const QRect &cr,bool)
-{
- p->fillRect(0,0,cr.width(),cr.height(),cg.base());
-
- if(m_property.type() == QVariant::Color)
+
+ void KviCanvasView::propertyChanged(const QString &s,const QVariant &v)
+ {
+ if(!m_pSelectedItem)return;
+
+ switch(KVI_CANVAS_RTTI_CONTROL_TYPE(m_pSelectedItem))
+ {
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE:
+ ((KviCanvasRectangleItem *)m_pSelectedItem)->setProperty(s,v);
+ break;
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_LINE:
+ ((KviCanvasLine *)m_pSelectedItem)->setProperty(s,v);
+ break;
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON:
+ ((KviCanvasPolygon *)m_pSelectedItem)->setProperty(s,v);
+ break;
+ }
+
+ canvas()->update();
+ }
+
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //
+ // KviVariantTableItem
+ //
+ KviVariantTableItem::KviVariantTableItem(QTable * t,const QVariant & property)
+ : QTableItem(t,QTableItem::WhenCurrent,QString::null)
+ {
+ m_property = property;
+ }
+
+ KviVariantTableItem::~KviVariantTableItem()
+ {
+ }
+
+ QWidget * KviVariantTableItem::createEditor() const
{
- p->fillRect(3,3,cr.width() - 6,cr.height() - 6,m_property.asColor());
- } else {
- QString sz;
switch(m_property.type())
{
case QVariant::String:
- sz = m_property.toString();
+ {
+ QLineEdit * e = new QLineEdit(table()->viewport());
+ e->setText(m_property.toString());
+ return e;
+ }
+ break;
+ case QVariant::Int:
+ {
+ QLineEdit * e = new QLineEdit(table()->viewport());
+ QString sz;
+ sz.setNum(m_property.toInt());
+ e->setText(sz);
+ e->setValidator(new QIntValidator(e));
+ return e;
+ }
+ break;
+ case QVariant::UInt:
+ {
+ QLineEdit * e = new QLineEdit(table()->viewport());
+ QString sz;
+ sz.setNum(m_property.toInt());
+ e->setText(sz);
+ QIntValidator * i = new QIntValidator(e);
+ i->setBottom(0);
+ e->setValidator(i);
+ return e;
+ }
break;
case QVariant::Bool:
- sz = m_property.toBool() ? "TRUE" : "FALSE";
+ {
+ QComboBox * b = new QComboBox(false,table()->viewport());
+ b->insertItem("FALSE");
+ b->insertItem("TRUE");
+ b->setCurrentItem(m_property.toBool() ? 1 : 0);
+ return b;
+ }
+ break;
+ case QVariant::Color:
+ {
+ QLineEdit * e = new QLineEdit(table()->viewport());
+ e->setText(m_property.toColor().name());
+ return e;
+ }
break;
case QVariant::Font:
- sz.setNum(m_property.toFont().pointSize());
- sz.prepend(", ");
- sz.prepend(m_property.toFont().family());
+ {
+ QComboBox * b = new QComboBox(true,table()->viewport());
+ QString tmp;
+ QString tmpDefault;
+ QFont f = QFont();
+ f.setStyleHint(QFont::SansSerif);
+ tmpDefault = f.family();
+ f.setStyleHint(QFont::TypeWriter);
+ tmp.setNum(m_property.toFont().pointSize());
+ tmp.prepend(", ");
+ tmp.prepend(m_property.toFont().family());
+ b->insertItem(tmp);
+ b->insertItem(tmpDefault + ", 8");
+ b->insertItem(tmpDefault + ", 10");
+ b->insertItem(tmpDefault + ", 12");
+ b->insertItem(tmpDefault + ", 14");
+ b->insertItem(tmpDefault + ", 16");
+ b->insertItem(tmpDefault + ", 18");
+ b->insertItem(tmpDefault + ", 20");
+ b->insertItem(tmpDefault + ", 24");
+ b->insertItem(tmpDefault + ", 28");
+ b->insertItem(tmpDefault + ", 32");
+ b->insertItem(tmpDefault + ", 40");
+ b->insertItem(tmpDefault + ", 48");
+ b->insertItem(f.family() + ", 12");
+ b->setCurrentItem(0);
+ b->setCurrentItem(m_property.toBool() ? 1 : 0);
+ return b;
+ }
+ break;
+ default:
+ break;
+ }
+ return 0;
+ }
+
+ void KviVariantTableItem::setContentFromEditor(QWidget * w)
+ {
+ switch(m_property.type())
+ {
+ case QVariant::String:
+ m_property = QVariant(((QLineEdit *)w)->text());
break;
case QVariant::Int:
- sz.setNum(m_property.toInt());
+ m_property = QVariant(((QLineEdit *)w)->text().toInt());
break;
case QVariant::UInt:
- sz.setNum(m_property.toUInt());
+ m_property = QVariant(((QLineEdit *)w)->text().toUInt());
+ break;
+ case QVariant::Bool:
+ m_property = QVariant(((QComboBox *)w)->currentItem(),1);
+ break;
+ case QVariant::Color:
+ m_property.asColor().setNamedColor(((QLineEdit *)w)->text());
+ break;
+ case QVariant::Font:
+ {
+ KviStr txt = ((QComboBox *)w)->currentText();
+ if(txt.hasData())
+ {
+ KviStr fam = txt;
+ fam.cutFromFirst(',',true);
+ fam.stripWhiteSpace();
+ KviStr psz = txt;
+ psz.cutToFirst(',',true);
+ psz.stripWhiteSpace();
+ bool bOk;
+ unsigned int uSize = psz.toUInt(&bOk);
+ if(!bOk)uSize = 12;
+ m_property = QVariant(QFont(fam.ptr(),uSize));
+ }
+ }
break;
default:
break;
}
- p->setPen(cg.text());
- p->drawText(0,0,cr.width(),cr.height(),Qt::AlignLeft | Qt::AlignTop,sz);
}
-}
-
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-// KviCanvasItemPropertiesWidget
-//
-
-
-KviCanvasItemPropertiesWidget::KviCanvasItemPropertiesWidget(QWidget * par)
-: QTable(par)
-{
- setSelectionMode(QTable::NoSelection);
- setColumnMovingEnabled(false);
- setRowMovingEnabled(false);
- setShowGrid(true);
- setNumCols(2);
- setSorting(false);
- setLeftMargin(0);
- verticalHeader()->hide();
- connect(this,SIGNAL(valueChanged(int,int)),this,SLOT(cellEdited(int,int)));
-}
-
-KviCanvasItemPropertiesWidget::~KviCanvasItemPropertiesWidget()
-{
-}
-
-void KviCanvasItemPropertiesWidget::cellEdited(int row,int)
-{
- QTableItem * it = item(row,0);
- if(!it)return;
- QString szName = it->text();
- it = item(row,1);
- if(!it)return;
- emit propertyChanged(szName,((KviVariantTableItem *)it)->property());
-}
-
-void KviCanvasItemPropertiesWidget::editItem(QCanvasItem * it)
-{
- if(!it)
+
+ void KviVariantTableItem::paint(QPainter *p,const QColorGroup &cg,const QRect &cr,bool)
+ {
+ p->fillRect(0,0,cr.width(),cr.height(),cg.base());
+
+ if(m_property.type() == QVariant::Color)
+ {
+ p->fillRect(3,3,cr.width() - 6,cr.height() - 6,m_property.asColor());
+ } else {
+ QString sz;
+ switch(m_property.type())
+ {
+ case QVariant::String:
+ sz = m_property.toString();
+ break;
+ case QVariant::Bool:
+ sz = m_property.toBool() ? "TRUE" : "FALSE";
+ break;
+ case QVariant::Font:
+ sz.setNum(m_property.toFont().pointSize());
+ sz.prepend(", ");
+ sz.prepend(m_property.toFont().family());
+ break;
+ case QVariant::Int:
+ sz.setNum(m_property.toInt());
+ break;
+ case QVariant::UInt:
+ sz.setNum(m_property.toUInt());
+ break;
+ default:
+ break;
+ }
+ p->setPen(cg.text());
+ p->drawText(0,0,cr.width(),cr.height(),Qt::AlignLeft | Qt::AlignTop,sz);
+ }
+ }
+
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //
+ // KviCanvasItemPropertiesWidget
+ //
+ KviCanvasItemPropertiesWidget::KviCanvasItemPropertiesWidget(QWidget * par)
+ : QTable(par)
{
+ setSelectionMode(QTable::NoSelection);
+ setColumnMovingEnabled(false);
+ setRowMovingEnabled(false);
+ setShowGrid(true);
+ setNumCols(2);
+ setSorting(false);
+ setLeftMargin(0);
+ verticalHeader()->hide();
+ connect(this,SIGNAL(valueChanged(int,int)),this,SLOT(cellEdited(int,int)));
+ }
+
+ KviCanvasItemPropertiesWidget::~KviCanvasItemPropertiesWidget()
+ {
+ }
+
+ void KviCanvasItemPropertiesWidget::cellEdited(int row,int)
+ {
+ QTableItem * it = item(row,0);
+ if(!it)return;
+ QString szName = it->text();
+ it = item(row,1);
+ if(!it)return;
+ emit propertyChanged(szName,((KviVariantTableItem *)it)->property());
+ }
+
+ void KviCanvasItemPropertiesWidget::editItem(QCanvasItem * it)
+ {
+ if(!it)
+ {
+ for(int i=0;i<numRows();i++)
+ {
+ clearCell(i,0);
+ clearCell(i,1);
+ clearCellWidget(i,1);
+ }
+ setNumRows(0);
+ return;
+ }
+
+ QMap<QString,QVariant> * m = 0;
+
+ switch(KVI_CANVAS_RTTI_CONTROL_TYPE(it))
+ {
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE:
+ m = ((KviCanvasRectangleItem *)it)->properties();
+ break;
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_LINE:
+ m = ((KviCanvasLine *)it)->properties();
+ break;
+ case KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON:
+ m = ((KviCanvasPolygon *)it)->properties();
+ break;
+ }
+
+ if(!m)
+ {
+ editItem(0);
+ return;
+ }
+
for(int i=0;i<numRows();i++)
{
clearCell(i,0);
clearCell(i,1);
clearCellWidget(i,1);
}
- setNumRows(0);
- return;
- }
-
- QMap<QString,QVariant> * m = 0;
-
- switch(KVI_CANVAS_RTTI_CONTROL_TYPE(it))
- {
- case KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE:
- m = ((KviCanvasRectangleItem *)it)->properties();
- break;
- case KVI_CANVAS_RTTI_CONTROL_TYPE_LINE:
- m = ((KviCanvasLine *)it)->properties();
- break;
- case KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON:
- m = ((KviCanvasPolygon *)it)->properties();
- break;
+
+ setNumRows(m->count());
+
+ QTableItem * item;
+
+ int idx = 0;
+
+ for(QMap<QString,QVariant>::ConstIterator iter = m->begin();iter != m->end();++iter)
+ {
+ item = new QTableItem(this,QTableItem::Never,iter.key().utf8().data());
+ setItem(idx,0,item);
+ item = new KviVariantTableItem(this,iter.data());
+ setItem(idx,1,item);
+ idx++;
+ }
+
}
-
- if(!m)
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //
+ // KviCanvasWidget
+ //
+ KviCanvasWidget::KviCanvasWidget(QWidget * par)
+ : QWidget(par,"canvas_widget")
{
- editItem(0);
- return;
+ m_pCanvas = new QCanvas(this);
+ //#warning "Make this size as parameter of Dcc ?"
+ m_pCanvas->resize(648,480);
+ m_pMenuBar = new QMenuBar(this);
+ m_pSplitter = new QSplitter(QSplitter::Horizontal,this);
+ m_pCanvasView = new KviCanvasView(m_pCanvas,this,m_pSplitter);
+ m_pStatusLabel = new QLabel(this);
+ m_pPropertiesWidget = new KviCanvasItemPropertiesWidget(m_pSplitter);
+ QValueList<int> l;
+ l.append(80);
+ l.append(20);
+ m_pSplitter->setSizes(l);
+
+ connect(m_pPropertiesWidget,SIGNAL(propertyChanged(const QString &,const QVariant &)),m_pCanvasView,SLOT(propertyChanged(const QString &,const QVariant &)));
+
+ KviTalPopupMenu * add = new KviTalPopupMenu(m_pMenuBar);
+ KviTalPopupMenu * shapes = new KviTalPopupMenu(add);
+ KviTalPopupMenu * polygons = new KviTalPopupMenu(add);
+ KviTalPopupMenu * items = new KviTalPopupMenu(add);
+ shapes->insertItem(__tr2qs_ctx("&Line","dcc"),m_pCanvasView,SLOT(insertLine()));
+ shapes->insertItem(__tr2qs_ctx("&Rectangle","dcc"),m_pCanvasView,SLOT(insertRectangle()));
+ shapes->insertItem(__tr2qs_ctx("&Ellipse","dcc"),m_pCanvasView,SLOT(insertEllipse()));
+ shapes->insertItem(__tr2qs_ctx("&Pie","dcc"),m_pCanvasView,SLOT(insertPie()));
+ shapes->insertItem(__tr2qs_ctx("&Chord","dcc"),m_pCanvasView,SLOT(insertChord()));
+
+ items->insertItem(__tr2qs_ctx("&Rich text (html)","dcc"),m_pCanvasView,SLOT(insertRichText()));
+
+ polygons->insertItem(__tr2qs_ctx("&Triangle","dcc"),m_pCanvasView,SLOT(insertPolygonTriangle()));
+ polygons->insertItem(__tr2qs_ctx("&Rectangle","dcc"),m_pCanvasView,SLOT(insertPolygonRectangle()));
+ polygons->insertItem(__tr2qs_ctx("&Pentagon","dcc"),m_pCanvasView,SLOT(insertPolygonPentagon()));
+ polygons->insertItem(__tr2qs_ctx("&Hexagon","dcc"),m_pCanvasView,SLOT(insertPolygonHexagon()));
+
+ add->insertItem(__tr2qs_ctx("&Shape","dcc"),shapes);
+ add->insertItem(__tr2qs_ctx("&Item","dcc"),items);
+ add->insertItem(__tr2qs_ctx("&Polygons","dcc"),polygons);
+
+ m_pMenuBar->insertItem(__tr2qs_ctx("&Insert","dcc"),add);
}
-
- for(int i=0;i<numRows();i++)
+
+ KviCanvasWidget::~KviCanvasWidget()
{
- clearCell(i,0);
- clearCell(i,1);
- clearCellWidget(i,1);
}
-
- setNumRows(m->count());
-
- QTableItem * item;
-
- int idx = 0;
-
- for(QMap<QString,QVariant>::ConstIterator iter = m->begin();iter != m->end();++iter)
+
+ void KviCanvasWidget::resizeEvent(QResizeEvent *)
{
- item = new QTableItem(this,QTableItem::Never,iter.key().utf8().data());
- setItem(idx,0,item);
- item = new KviVariantTableItem(this,iter.data());
- setItem(idx,1,item);
- idx++;
+ int h = m_pMenuBar->sizeHint().height();
+ m_pMenuBar->setGeometry(0,0,width(),h);
+ int h2 = m_pStatusLabel->sizeHint().height();
+ m_pStatusLabel->setGeometry(0,height() - h2,width(),h2);
+ m_pSplitter->setGeometry(0,h,width(),height() - (h + h2));
}
-
-}
-
-//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
-//
-// KviCanvasWidget
-//
-
-KviCanvasWidget::KviCanvasWidget(QWidget * par)
-: QWidget(par,"canvas_widget")
-{
- m_pCanvas = new QCanvas(this);
-//#warning "Make this size as parameter of Dcc ?"
- m_pCanvas->resize(648,480);
- m_pMenuBar = new QMenuBar(this);
- m_pSplitter = new QSplitter(QSplitter::Horizontal,this);
- m_pCanvasView = new KviCanvasView(m_pCanvas,this,m_pSplitter);
- m_pStatusLabel = new QLabel(this);
- m_pPropertiesWidget = new KviCanvasItemPropertiesWidget(m_pSplitter);
- QValueList<int> l;
- l.append(80);
- l.append(20);
- m_pSplitter->setSizes(l);
-
- connect(m_pPropertiesWidget,SIGNAL(propertyChanged(const QString &,const QVariant &)),m_pCanvasView,SLOT(propertyChanged(const QString &,const QVariant &)));
-
- KviTalPopupMenu * add = new KviTalPopupMenu(m_pMenuBar);
- KviTalPopupMenu * shapes = new KviTalPopupMenu(add);
- KviTalPopupMenu * polygons = new KviTalPopupMenu(add);
- KviTalPopupMenu * items = new KviTalPopupMenu(add);
- shapes->insertItem(__tr2qs_ctx("&Line","dcc"),m_pCanvasView,SLOT(insertLine()));
- shapes->insertItem(__tr2qs_ctx("&Rectangle","dcc"),m_pCanvasView,SLOT(insertRectangle()));
- shapes->insertItem(__tr2qs_ctx("&Ellipse","dcc"),m_pCanvasView,SLOT(insertEllipse()));
- shapes->insertItem(__tr2qs_ctx("&Pie","dcc"),m_pCanvasView,SLOT(insertPie()));
- shapes->insertItem(__tr2qs_ctx("&Chord","dcc"),m_pCanvasView,SLOT(insertChord()));
-
- items->insertItem(__tr2qs_ctx("&Rich text (html)","dcc"),m_pCanvasView,SLOT(insertRichText()));
-
- polygons->insertItem(__tr2qs_ctx("&Triangle","dcc"),m_pCanvasView,SLOT(insertPolygonTriangle()));
- polygons->insertItem(__tr2qs_ctx("&Rectangle","dcc"),m_pCanvasView,SLOT(insertPolygonRectangle()));
- polygons->insertItem(__tr2qs_ctx("&Pentagon","dcc"),m_pCanvasView,SLOT(insertPolygonPentagon()));
- polygons->insertItem(__tr2qs_ctx("&Hexagon","dcc"),m_pCanvasView,SLOT(insertPolygonHexagon()));
-
- add->insertItem(__tr2qs_ctx("&Shape","dcc"),shapes);
- add->insertItem(__tr2qs_ctx("&Item","dcc"),items);
- add->insertItem(__tr2qs_ctx("&Polygons","dcc"),polygons);
-
- m_pMenuBar->insertItem(__tr2qs_ctx("&Insert","dcc"),add);
-}
-
-KviCanvasWidget::~KviCanvasWidget()
-{
-}
-
-
-
-void KviCanvasWidget::resizeEvent(QResizeEvent *)
-{
- int h = m_pMenuBar->sizeHint().height();
- m_pMenuBar->setGeometry(0,0,width(),h);
- int h2 = m_pStatusLabel->sizeHint().height();
- m_pStatusLabel->setGeometry(0,height() - h2,width(),h2);
- m_pSplitter->setGeometry(0,h,width(),height() - (h + h2));
-}
-
-
-#include "m_canvaswidget.moc"
-
+
+ #include "m_canvaswidget.moc"
#endif
diff --git a/src/modules/dcc/canvaswidget.h b/src/modules/dcc/canvaswidget.h
index 28d123e19..cf1d201f3 100644
--- a/src/modules/dcc/canvaswidget.h
+++ b/src/modules/dcc/canvaswidget.h
@@ -25,298 +25,283 @@
#include "broker.h"
#ifdef COMPILE_DCC_CANVAS
-
-
-#include <qcanvas.h>
-
-//#ifdef QT_NO_CANVAS
-// #warning "HEre is not"
-//#endif
-
-
-#include <qmenubar.h>
-#include <qlabel.h>
-
-#include <qmap.h>
-#include <qvariant.h>
-#include <qtable.h>
-#include <qsplitter.h>
-
-
-
-class KviCanvasWidget;
-
-
-
-#define KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE 1
-#define KVI_CANVAS_RTTI_CONTROL_TYPE_LINE 2
-#define KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON 4
-
-#define KVI_CANVAS_RTTI_CONTROL_TYPE_MASK 255
-
-#define KVI_CANVAS_RTTI_RECTANGLE (KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE | (1 << 8))
-#define KVI_CANVAS_RTTI_RICHTEXT (KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE | (2 << 8))
-#define KVI_CANVAS_RTTI_LINE (KVI_CANVAS_RTTI_CONTROL_TYPE_LINE | (3 << 8))
-#define KVI_CANVAS_RTTI_ELLIPSE (KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE | (4 << 8))
-#define KVI_CANVAS_RTTI_CHORD (KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE | (5 << 8))
-#define KVI_CANVAS_RTTI_PIE (KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE | (6 << 8))
-#define KVI_CANVAS_RTTI_POLYGON (KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON | (7 << 8))
-
-#define KVI_CANVAS_RTTI_CONTROL_TYPE(__item) (__item->rtti() & KVI_CANVAS_RTTI_CONTROL_TYPE_MASK)
-
-
-
-class KviCanvasPolygon : public QCanvasPolygon
-{
-public:
- KviCanvasPolygon(QCanvas * c,int x,int y,QPointArray &pnts,double dScaleFactor);
- virtual ~KviCanvasPolygon();
-protected:
- QMap<QString,QVariant> m_properties;
- double m_dScaleFactor;
- QPointArray m_points;
-public:
- virtual void draw(QPainter & p);
- double scaleFactor(){ return m_dScaleFactor; };
- void setScaleFactor(double dScaleFactor);
- void resetPoints();
- const QPointArray & internalPoints(){ return m_points; };
- void setInternalPoints(const QPointArray &pnts);
- QMap<QString,QVariant> * properties(){ return &m_properties; };
- virtual void setProperty(const QString &property,const QVariant &val);
- virtual int rtti() const;
-};
-
-
-
-
-class KviCanvasRectangleItem : public QCanvasRectangle
-{
- friend class KviCanvasRectangle;
- friend class KviCanvasRichText;
- friend class KviCanvasEllipticItem;
-protected:
- KviCanvasRectangleItem(QCanvas * c,int x,int y,int w,int h);
-public:
- virtual ~KviCanvasRectangleItem();
-protected:
- QMap<QString,QVariant> m_properties;
-public:
- int right(){ return ((int)x()) + width(); };
- int bottom(){ return ((int)y()) + height(); };
- QMap<QString,QVariant> * properties(){ return &m_properties; };
- virtual void setProperty(const QString &property,const QVariant &val);
-// QVariant property(const QString &name){ return m_properties[name]; };
-protected:
- void drawSelection(QPainter &p);
-};
-
-
-class KviCanvasEllipticItem : public KviCanvasRectangleItem
-{
- friend class KviCanvasEllipse;
- friend class KviCanvasChord;
- friend class KviCanvasPie;
-protected:
- KviCanvasEllipticItem(QCanvas * c,int x,int y,int w,int h);
- ~KviCanvasEllipticItem();
-public:
- virtual void setProperty(const QString & property,const QVariant &val);
- virtual void draw(QPainter & p);
- virtual void drawContent(QPainter & p);
- virtual int rtti() const;
-};
-
-
-class KviCanvasEllipse : public KviCanvasEllipticItem
-{
-public:
- KviCanvasEllipse(QCanvas * c,int x,int y,int w,int h);
- ~KviCanvasEllipse();
-public:
- virtual void drawContent(QPainter & p);
- virtual int rtti() const;
-};
-
-
-class KviCanvasPie : public KviCanvasEllipticItem
-{
-public:
- KviCanvasPie(QCanvas * c,int x,int y,int w,int h);
- ~KviCanvasPie();
-public:
- virtual void drawContent(QPainter & p);
- virtual int rtti() const;
-};
-
-
-class KviCanvasChord : public KviCanvasEllipticItem
-{
-public:
- KviCanvasChord(QCanvas * c,int x,int y,int w,int h);
- ~KviCanvasChord();
-public:
- virtual void drawContent(QPainter & p);
- virtual int rtti() const;
-};
-
-
-class KviCanvasLine : public QCanvasLine
-{
-public:
- KviCanvasLine(QCanvas * c,int x1,int y1,int x2,int y2);
- virtual ~KviCanvasLine();
-protected:
- QMap<QString,QVariant> m_properties;
-public:
- QMap<QString,QVariant> * properties(){ return &m_properties; };
- virtual void setProperty(const QString &property,const QVariant &val);
-// QVariant property(const QString &name){ return m_properties[name]; };
- virtual void draw(QPainter & p);
- virtual int rtti() const;
-};
-
-
-
-class KviCanvasRectangle : public KviCanvasRectangleItem
-{
-public:
- KviCanvasRectangle(QCanvas * c,int x,int y,int w,int h);
- ~KviCanvasRectangle();
-public:
- virtual void draw(QPainter & p);
- virtual void setProperty(const QString &property,const QVariant &val);
- virtual int rtti() const;
-};
-
-
-class KviCanvasRichText : public KviCanvasRectangleItem
-{
-public:
- KviCanvasRichText(QCanvas * c,int x,int y,int w,int h);
- ~KviCanvasRichText();
-public:
- virtual void draw(QPainter & p);
- virtual int rtti() const;
-};
-
-
-class KviCanvasView : public QCanvasView
-{
- Q_OBJECT
-public:
- KviCanvasView(QCanvas * c,KviCanvasWidget * cw,QWidget * par);
- ~KviCanvasView();
-public:
- enum State { Idle , SelectOrigin };
- enum ObjectType {
+ #include <QCanvas>
+
+ //#ifdef QT_NO_CANVAS
+ // #warning "Here is not"
+ //#endif
+
+
+ #include <QMenuBar>
+ #include <QLabel>
+ #include <QMap>
+ #include <QVariant>
+ #include <QTable>
+ #include <QSplitter>
+
+ class KviCanvasWidget;
+
+ #define KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE 1
+ #define KVI_CANVAS_RTTI_CONTROL_TYPE_LINE 2
+ #define KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON 4
+
+ #define KVI_CANVAS_RTTI_CONTROL_TYPE_MASK 255
+
+ #define KVI_CANVAS_RTTI_RECTANGLE (KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE | (1 << 8))
+ #define KVI_CANVAS_RTTI_RICHTEXT (KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE | (2 << 8))
+ #define KVI_CANVAS_RTTI_LINE (KVI_CANVAS_RTTI_CONTROL_TYPE_LINE | (3 << 8))
+ #define KVI_CANVAS_RTTI_ELLIPSE (KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE | (4 << 8))
+ #define KVI_CANVAS_RTTI_CHORD (KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE | (5 << 8))
+ #define KVI_CANVAS_RTTI_PIE (KVI_CANVAS_RTTI_CONTROL_TYPE_RECTANGLE | (6 << 8))
+ #define KVI_CANVAS_RTTI_POLYGON (KVI_CANVAS_RTTI_CONTROL_TYPE_POLYGON | (7 << 8))
+
+ #define KVI_CANVAS_RTTI_CONTROL_TYPE(__item) (__item->rtti() & KVI_CANVAS_RTTI_CONTROL_TYPE_MASK)
+
+
+
+ class KviCanvasPolygon : public QCanvasPolygon
+ {
+ public:
+ KviCanvasPolygon(QCanvas * c,int x,int y,QPointArray &pnts,double dScaleFactor);
+ virtual ~KviCanvasPolygon();
+ protected:
+ QMap<QString,QVariant> m_properties;
+ double m_dScaleFactor;
+ QPointArray m_points;
+ public:
+ virtual void draw(QPainter & p);
+ double scaleFactor(){ return m_dScaleFactor; };
+ void setScaleFactor(double dScaleFactor);
+ void resetPoints();
+ const QPointArray & internalPoints(){ return m_points; };
+ void setInternalPoints(const QPointArray &pnts);
+ QMap<QString,QVariant> * properties(){ return &m_properties; };
+ virtual void setProperty(const QString &property,const QVariant &val);
+ virtual int rtti() const;
+ };
+
+
+ class KviCanvasRectangleItem : public QCanvasRectangle
+ {
+ friend class KviCanvasRectangle;
+ friend class KviCanvasRichText;
+ friend class KviCanvasEllipticItem;
+ protected:
+ KviCanvasRectangleItem(QCanvas * c,int x,int y,int w,int h);
+ public:
+ virtual ~KviCanvasRectangleItem();
+ protected:
+ QMap<QString,QVariant> m_properties;
+ public:
+ int right(){ return ((int)x()) + width(); };
+ int bottom(){ return ((int)y()) + height(); };
+ QMap<QString,QVariant> * properties(){ return &m_properties; };
+ virtual void setProperty(const QString &property,const QVariant &val);
+ // QVariant property(const QString &name){ return m_properties[name]; };
+ protected:
+ void drawSelection(QPainter &p);
+ };
+
+
+ class KviCanvasEllipticItem : public KviCanvasRectangleItem
+ {
+ friend class KviCanvasEllipse;
+ friend class KviCanvasChord;
+ friend class KviCanvasPie;
+ protected:
+ KviCanvasEllipticItem(QCanvas * c,int x,int y,int w,int h);
+ ~KviCanvasEllipticItem();
+ public:
+ virtual void setProperty(const QString & property,const QVariant &val);
+ virtual void draw(QPainter & p);
+ virtual void drawContent(QPainter & p);
+ virtual int rtti() const;
+ };
+
+
+ class KviCanvasEllipse : public KviCanvasEllipticItem
+ {
+ public:
+ KviCanvasEllipse(QCanvas * c,int x,int y,int w,int h);
+ ~KviCanvasEllipse();
+ public:
+ virtual void drawContent(QPainter & p);
+ virtual int rtti() const;
+ };
+
+
+ class KviCanvasPie : public KviCanvasEllipticItem
+ {
+ public:
+ KviCanvasPie(QCanvas * c,int x,int y,int w,int h);
+ ~KviCanvasPie();
+ public:
+ virtual void drawContent(QPainter & p);
+ virtual int rtti() const;
+ };
+
+
+ class KviCanvasChord : public KviCanvasEllipticItem
+ {
+ public:
+ KviCanvasChord(QCanvas * c,int x,int y,int w,int h);
+ ~KviCanvasChord();
+ public:
+ virtual void drawContent(QPainter & p);
+ virtual int rtti() const;
+ };
+
+
+ class KviCanvasLine : public QCanvasLine
+ {
+ public:
+ KviCanvasLine(QCanvas * c,int x1,int y1,int x2,int y2);
+ virtual ~KviCanvasLine();
+ protected:
+ QMap<QString,QVariant> m_properties;
+ public:
+ QMap<QString,QVariant> * properties(){ return &m_properties; };
+ virtual void setProperty(const QString &property,const QVariant &val);
+ // QVariant property(const QString &name){ return m_properties[name]; };
+ virtual void draw(QPainter & p);
+ virtual int rtti() const;
+ };
+
+
+ class KviCanvasRectangle : public KviCanvasRectangleItem
+ {
+ public:
+ KviCanvasRectangle(QCanvas * c,int x,int y,int w,int h);
+ ~KviCanvasRectangle();
+ public:
+ virtual void draw(QPainter & p);
+ virtual void setProperty(const QString &property,const QVariant &val);
+ virtual int rtti() const;
+ };
+
+
+ class KviCanvasRichText : public KviCanvasRectangleItem
+ {
+ public:
+ KviCanvasRichText(QCanvas * c,int x,int y,int w,int h);
+ ~KviCanvasRichText();
+ public:
+ virtual void draw(QPainter & p);
+ virtual int rtti() const;
+ };
+
+
+ class KviCanvasView : public QCanvasView
+ {
+ Q_OBJECT
+ public:
+ KviCanvasView(QCanvas * c,KviCanvasWidget * cw,QWidget * par);
+ ~KviCanvasView();
+ public:
+ enum State { Idle , SelectOrigin };
+ enum ObjectType {
Rectangle , RichText , Line , Ellipse , Chord , Pie ,
PolygonTriangle , PolygonRectangle , PolygonPentagon ,
PolygonHexagon
- };
- enum DragMode {
+ };
+ enum DragMode {
None , All , Left , Right , Top , Bottom , LeftTop , RightTop ,
LeftBottom , RightBottom , Scale , SinglePoint , Rotate
+ };
+ protected:
+ KviCanvasWidget * m_pCanvasWidget;
+
+ // Insertion of objects
+ State m_state;
+ ObjectType m_objectToInsert;
+
+ // Selected item
+ QCanvasItem * m_pSelectedItem;
+
+ DragMode m_dragMode;
+ QPoint m_dragBegin;
+ double m_dragScaleFactor;
+ unsigned int m_dragPointIndex;
+ QPointArray m_dragPointArray;
+ protected:
+ void beginDragRectangle(KviCanvasRectangleItem * it,const QPoint &p,bool bInitial = false);
+ void dragRectangle(KviCanvasRectangleItem * it,const QPoint & p);
+
+ void beginDragLine(KviCanvasLine * it,const QPoint &p,bool bInitial = false);
+ void dragLine(KviCanvasLine * it,const QPoint &p);
+
+ void beginDragPolygon(KviCanvasPolygon * it,const QPoint &p,bool bShift = false,bool bCtrl = false);
+ void dragPolygon(KviCanvasPolygon * it,const QPoint &p);
+
+ void setItemSelected(QCanvasItem * it);
+ void clearSelection();
+ void insertObjectAt(const QPoint & pnt,ObjectType o);
+ virtual void contentsMousePressEvent(QMouseEvent *e);
+ virtual void contentsMouseMoveEvent(QMouseEvent *e);
+ virtual void contentsMouseReleaseEvent(QMouseEvent *e);
+ public slots:
+ void insertRectangle();
+ void insertRichText();
+ void insertLine();
+ void insertPie();
+ void insertChord();
+ void insertEllipse();
+ void insertPolygonTriangle();
+ void insertPolygonRectangle();
+ void insertPolygonPentagon();
+ void insertPolygonHexagon();
+ void propertyChanged(const QString &s,const QVariant &v);
};
-protected:
- KviCanvasWidget * m_pCanvasWidget;
-
- // Insertion of objects
- State m_state;
- ObjectType m_objectToInsert;
-
- // Selected item
- QCanvasItem * m_pSelectedItem;
-
- DragMode m_dragMode;
- QPoint m_dragBegin;
- double m_dragScaleFactor;
- unsigned int m_dragPointIndex;
- QPointArray m_dragPointArray;
-protected:
- void beginDragRectangle(KviCanvasRectangleItem * it,const QPoint &p,bool bInitial = false);
- void dragRectangle(KviCanvasRectangleItem * it,const QPoint & p);
-
- void beginDragLine(KviCanvasLine * it,const QPoint &p,bool bInitial = false);
- void dragLine(KviCanvasLine * it,const QPoint &p);
-
- void beginDragPolygon(KviCanvasPolygon * it,const QPoint &p,bool bShift = false,bool bCtrl = false);
- void dragPolygon(KviCanvasPolygon * it,const QPoint &p);
-
-
- void setItemSelected(QCanvasItem * it);
- void clearSelection();
- void insertObjectAt(const QPoint & pnt,ObjectType o);
- virtual void contentsMousePressEvent(QMouseEvent *e);
- virtual void contentsMouseMoveEvent(QMouseEvent *e);
- virtual void contentsMouseReleaseEvent(QMouseEvent *e);
-public slots:
- void insertRectangle();
- void insertRichText();
- void insertLine();
- void insertPie();
- void insertChord();
- void insertEllipse();
- void insertPolygonTriangle();
- void insertPolygonRectangle();
- void insertPolygonPentagon();
- void insertPolygonHexagon();
- void propertyChanged(const QString &s,const QVariant &v);
-};
-
-// For Qt3.0 this might need to be changed
-
-class KviVariantTableItem : public QTableItem
-{
-public:
- KviVariantTableItem(QTable * t,const QVariant & property);
- ~KviVariantTableItem();
-private:
- QVariant m_property;
-public:
- virtual QWidget * createEditor() const;
- virtual void setContentFromEditor(QWidget *w);
- QVariant & property(){ return m_property; };
- virtual void paint(QPainter *p,const QColorGroup &cg,const QRect &cr,bool selected);
-};
-
-
-
-class KviCanvasItemPropertiesWidget : public QTable
-{
- Q_OBJECT
-public:
- KviCanvasItemPropertiesWidget(QWidget * par);
- ~KviCanvasItemPropertiesWidget();
-public:
- void editItem(QCanvasItem * it);
-protected slots:
- void cellEdited(int row,int col);
-signals:
- void propertyChanged(const QString &s,const QVariant &v);
-};
-
-
-
-class KviCanvasWidget : public QWidget
-{
- friend class KviCanvasView;
- Q_OBJECT
-public:
- KviCanvasWidget(QWidget * par);
- ~KviCanvasWidget();
-protected:
- QSplitter * m_pSplitter;
- QCanvas * m_pCanvas;
- QMenuBar * m_pMenuBar;
- KviCanvasView * m_pCanvasView;
- QLabel * m_pStatusLabel;
- KviCanvasItemPropertiesWidget * m_pPropertiesWidget;
-protected:
- virtual void resizeEvent(QResizeEvent *);
-};
-
+
+ // For Qt3.0 this might need to be changed
+ class KviVariantTableItem : public QTableItem
+ {
+ public:
+ KviVariantTableItem(QTable * t,const QVariant & property);
+ ~KviVariantTableItem();
+ private:
+ QVariant m_property;
+ public:
+ virtual QWidget * createEditor() const;
+ virtual void setContentFromEditor(QWidget *w);
+ QVariant & property(){ return m_property; };
+ virtual void paint(QPainter *p,const QColorGroup &cg,const QRect &cr,bool selected);
+ };
+
+
+ class KviCanvasItemPropertiesWidget : public QTable
+ {
+ Q_OBJECT
+ public:
+ KviCanvasItemPropertiesWidget(QWidget * par);
+ ~KviCanvasItemPropertiesWidget();
+ public:
+ void editItem(QCanvasItem * it);
+ protected slots:
+ void cellEdited(int row,int col);
+ signals:
+ void propertyChanged(const QString &s,const QVariant &v);
+ };
+
+
+ class KviCanvasWidget : public QWidget
+ {
+ friend class KviCanvasView;
+ Q_OBJECT
+ public:
+ KviCanvasWidget(QWidget * par);
+ ~KviCanvasWidget();
+ protected:
+ QSplitter * m_pSplitter;
+ QCanvas * m_pCanvas;
+ QMenuBar * m_pMenuBar;
+ KviCanvasView * m_pCanvasView;
+ QLabel * m_pStatusLabel;
+ KviCanvasItemPropertiesWidget * m_pPropertiesWidget;
+ protected:
+ virtual void resizeEvent(QResizeEvent *);
+ };
#endif
#endif //_CANVAS_WIDGET_H_
diff --git a/src/modules/dcc/chat.cpp b/src/modules/dcc/chat.cpp
index ef06da588..5bd2b26ca 100644
--- a/src/modules/dcc/chat.cpp
+++ b/src/modules/dcc/chat.cpp
@@ -56,6 +56,11 @@
#include "kvi_ircconnectionuserinfo.h"
#include "kvi_kvs_eventtriggers.h"
#include "kvi_qcstring.h"
+#include "kvi_tal_vbox.h"
+
+#include <QSplitter>
+#include <QEvent>
+#include <QResizeEvent>
#ifdef COMPILE_CRYPT_SUPPORT
#include "kvi_crypt.h"
@@ -63,17 +68,10 @@
#include "kvi_mirccntrl.h"
#endif
-#include <qsplitter.h>
-#include <qevent.h>
-#include "kvi_tal_vbox.h"
-
-
#ifdef COMPILE_SSL_SUPPORT
#include "kvi_sslmaster.h"
#endif
-
-
extern KviDccBroker * g_pDccBroker;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -162,7 +160,6 @@ void KviDccChat::startConnection()
int ret = m_pMarshal->dccListen(m_pDescriptor->szListenIp,m_pDescriptor->szListenPort,m_pDescriptor->bDoTimeout);
#endif
if(ret != KviError_success)handleMarshalError(ret);
-
} else {
// ACTIVE CONNECTION
output(KVI_OUT_DCCMSG,__tr2qs_ctx("Attempting an active DCC %s connection","dcc"),m_pDescriptor->szType.utf8().data());
@@ -185,7 +182,6 @@ void KviDccChat::connectionInProgress()
if(m_pDescriptor->bSendRequest)
{
-
KviStr ip;
if(!m_pDescriptor->szFakeIp.isEmpty())
{
@@ -289,7 +285,6 @@ QPixmap * KviDccChat::myIconPtr()
return g_pIconManager->getSmallIcon(KVI_SMALLICON_DCCMSG);
}
-
void KviDccChat::getBaseLogFileName(KviStr &buffer)
{
buffer.sprintf("%s_%s_%s",m_pDescriptor->szNick.utf8().data(),m_pDescriptor->szIp.utf8().data(),m_pDescriptor->szPort.utf8().data());
@@ -543,13 +538,11 @@ KviDccChatThread::KviDccChatThread(KviWindow *wnd,kvi_socket_t fd)
m_pOutBuffers->setAutoDelete(true);
}
-
KviDccChatThread::~KviDccChatThread()
{
if(m_pOutBuffers)delete m_pOutBuffers;
}
-
void KviDccChatThread::run()
{
KviDccThreadIncomingData data;
diff --git a/src/modules/dcc/chat.h b/src/modules/dcc/chat.h
index d309d1482..37552da19 100644
--- a/src/modules/dcc/chat.h
+++ b/src/modules/dcc/chat.h
@@ -24,20 +24,22 @@
//
//=============================================================================
-#include "kvi_window.h"
-#include "kvi_string.h"
-#include "kvi_databuffer.h"
-
#include "window.h"
#include "descriptor.h"
#include "thread.h"
+#include "kvi_window.h"
+#include "kvi_string.h"
+#include "kvi_databuffer.h"
#include "kvi_pointerlist.h"
#ifdef COMPILE_SSL_SUPPORT
class KviSSL;
#endif
+class KviDccMarshal;
+class QSplitter;
+
class KviDccChatThread : public KviDccThread
{
public:
@@ -60,8 +62,6 @@ public:
virtual void sendRawData(const void * buffer,int len); // mutex (m_pOutBuffers usage)
};
-class KviDccMarshal;
-class QSplitter;
class KviDccChat : public KviDccWindow
{
@@ -97,5 +97,4 @@ protected slots:
void textViewRightClicked();
};
-
#endif //_CHAT_H_
diff --git a/src/modules/dcc/codec.h b/src/modules/dcc/codec.h
index 0e0d77cf1..315919161 100644
--- a/src/modules/dcc/codec.h
+++ b/src/modules/dcc/codec.h
@@ -52,6 +52,4 @@ public:
virtual int decodedFrameSize();
};
-
-
#endif //_CODEC_H_
diff --git a/src/modules/dcc/descriptor.cpp b/src/modules/dcc/descriptor.cpp
index 261500a35..859e7d33c 100644
--- a/src/modules/dcc/descriptor.cpp
+++ b/src/modules/dcc/descriptor.cpp
@@ -23,17 +23,14 @@
//=============================================================================
#include "descriptor.h"
+#include "send.h"
+#include "window.h"
#include "kvi_locale.h"
#include "kvi_kvs_eventtriggers.h"
-
#include "kvi_window.h"
#include "kvi_app.h"
-#include "send.h"
-#include "window.h"
-
-
static unsigned int g_uNextDescriptorId = 1; // we use 0 as an invalid descriptor id
static KviPointerHashTable<int,KviDccDescriptor> * g_pDescriptorDict = 0;
@@ -95,7 +92,6 @@ KviDccDescriptor::KviDccDescriptor(KviConsole * pConsole)
iSampleRate = 0;
-
m_bCreationEventTriggered = false;
}
@@ -147,7 +143,6 @@ void KviDccDescriptor::triggerCreationEvent()
}
}
-
KviDccDescriptor * KviDccDescriptor::find(unsigned int uId)
{
if(!g_pDescriptorDict)return 0;
diff --git a/src/modules/dcc/descriptor.h b/src/modules/dcc/descriptor.h
index ec6bee789..1cb1add97 100644
--- a/src/modules/dcc/descriptor.h
+++ b/src/modules/dcc/descriptor.h
@@ -26,13 +26,10 @@
#include "kvi_string.h"
#include "kvi_console.h"
-
#include "kvi_pointerhashtable.h"
-
class KviDccWindow;
class KviDccFileTransfer;
-
class KviDccDescriptor
{
public:
@@ -123,18 +120,15 @@ public:
QString szLocalFileSize; // RECVFILE: local file size (to resume), SENDFILE: file to send size
bool bRecvFile; // do we have to RECEIVE the file or SEND it ?
-
bool bResume; // do we want to resume ?
bool bNoAcks; // blind dcc send ? (do not receive nor send acknowledges)
bool bIsIncomingAvatar; // It is an Incoming Avatar DCC SEND ?
// DCC VOICE
-
KviStr szCodec; // codec name
int iSampleRate; // Sample rate
public:
- // new interface... but should be converted to QString...
QString protocol(){ return szType; };
bool isActive(){ return bActive; };
QString remoteNick(){ return szNick; };
@@ -157,7 +151,4 @@ public:
bool isFileTransfer(){ return (isFileUpload() || isFileDownload()); };
};
-
-
-
#endif //_DESCRIPTOR_H_
diff --git a/src/modules/dcc/dialogs.cpp b/src/modules/dcc/dialogs.cpp
index 18f1f4f5c..d971e65b1 100644
--- a/src/modules/dcc/dialogs.cpp
+++ b/src/modules/dcc/dialogs.cpp
@@ -25,12 +25,14 @@
#include "kvi_iconmanager.h"
#include "kvi_app.h"
-#include <qlayout.h>
-#include <qpushbutton.h>
-#include <qlabel.h>
-#include <qstringlist.h>
-#include <qevent.h>
-#include <qdesktopwidget.h>
+#include <QLayout>
+#include <QPushButton>
+#include <QLabel>
+#include <QStringList>
+#include <QDesktopWidget>
+#include <QEvent>
+#include <QCloseEvent>
+#include <QShowEvent>
KviDccBox::KviDccBox(KviDccBroker * br,KviDccDescriptor * dcc)
{
@@ -55,10 +57,9 @@ KviDccAcceptBox::KviDccAcceptBox(KviDccBroker * br,KviDccDescriptor * dcc,const
{
QVBoxLayout * vb = new QVBoxLayout(this,4,4);
QLabel * l = new QLabel(text,this);
-#ifdef COMPILE_USE_QT4
l->setWordWrap(true);
-#endif
vb->addWidget(l);
+
QHBoxLayout *hb = new QHBoxLayout(4);
vb->addLayout(hb,Qt::AlignCenter);
QPushButton * btn = new QPushButton(__tr2qs_ctx("&Accept","dcc"),this);
@@ -111,16 +112,12 @@ void KviDccAcceptBox::showEvent(QShowEvent *e)
}
-
-
KviDccRenameBox::KviDccRenameBox(KviDccBroker * br,KviDccDescriptor * dcc,const QString &text,bool bDisableResume)
: QWidget(0,"dcc_rename_box") , KviDccBox(br,dcc)
{
QVBoxLayout * vb = new QVBoxLayout(this,4,4);
QLabel * l = new QLabel(text,this);
-#ifdef COMPILE_USE_QT4
l->setWordWrap(true);
-#endif
vb->addWidget(l);
QHBoxLayout *hb = new QHBoxLayout(4);
@@ -200,9 +197,6 @@ void KviDccRenameBox::cancelClicked()
g_pApp->collectGarbage(this);
}
-
-
-
#ifndef COMPILE_USE_STANDALONE_MOC_SOURCES
#include "m_dialogs.moc"
#endif //!COMPILE_USE_STANDALONE_MOC_SOURCES
diff --git a/src/modules/dcc/dialogs.h b/src/modules/dcc/dialogs.h
index 438b4e76a..991ff5f6c 100644
--- a/src/modules/dcc/dialogs.h
+++ b/src/modules/dcc/dialogs.h
@@ -22,11 +22,11 @@
// Inc. ,59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
+#include "broker.h"
-#include <qwidget.h>
#include "kvi_filedialog.h"
-#include "broker.h"
+#include <QWidget>
class KviDccBox
{
@@ -41,7 +41,6 @@ public:
};
-
class KviDccAcceptBox : public QWidget , public KviDccBox
{
Q_OBJECT
diff --git a/src/modules/dcc/gsmcodec.cpp b/src/modules/dcc/gsmcodec.cpp
index 85f274abf..345fed909 100644
--- a/src/modules/dcc/gsmcodec.cpp
+++ b/src/modules/dcc/gsmcodec.cpp
@@ -25,125 +25,122 @@
#include "gsmcodec.h"
#ifdef COMPILE_USE_GSM
-
-#include <dlfcn.h>
-
-#define GSM_PACKED_FRAME_SIZE_IN_BYTES 33
-#define GSM_UNPACKED_FRAME_SIZE_IN_BYTES 320
-#define GSM_UNPACKED_FRAME_SIZE_IN_SHORTS 160
-
-void * (*gsm_session_create)() = 0;
-void (*gsm_session_destroy)(void *) = 0;
-void (*gsm_session_encode)(void *,short *,unsigned char *) = 0;
-int (*gsm_session_decode)(void *,unsigned char *,short *) = 0;
-
-
-void * g_pGSMCodecLibraryHandle = 0;
-
-bool kvi_gsm_codec_init()
-{
- if(g_pGSMCodecLibraryHandle)return true; // Already initialized
-
- g_pGSMCodecLibraryHandle = dlopen("libgsm.so",RTLD_NOW | RTLD_GLOBAL);
- if(!g_pGSMCodecLibraryHandle)return false; // no way to open it
-
- gsm_session_create = (void * (*)()) dlsym(g_pGSMCodecLibraryHandle,"gsm_create");
- gsm_session_destroy = (void (*)(void *)) dlsym(g_pGSMCodecLibraryHandle,"gsm_destroy");
- gsm_session_encode = (void (*)(void *,short *,unsigned char *)) dlsym(g_pGSMCodecLibraryHandle,"gsm_encode");
- gsm_session_decode = (int (*)(void *,unsigned char *,short *)) dlsym(g_pGSMCodecLibraryHandle,"gsm_decode");
-
- if(! (gsm_session_create && gsm_session_destroy && gsm_session_encode && gsm_session_decode))
+ #include <dlfcn.h>
+
+ #define GSM_PACKED_FRAME_SIZE_IN_BYTES 33
+ #define GSM_UNPACKED_FRAME_SIZE_IN_BYTES 320
+ #define GSM_UNPACKED_FRAME_SIZE_IN_SHORTS 160
+
+ void * (*gsm_session_create)() = 0;
+ void (*gsm_session_destroy)(void *) = 0;
+ void (*gsm_session_encode)(void *,short *,unsigned char *) = 0;
+ int (*gsm_session_decode)(void *,unsigned char *,short *) = 0;
+
+ void * g_pGSMCodecLibraryHandle = 0;
+
+ bool kvi_gsm_codec_init()
{
- dlclose(g_pGSMCodecLibraryHandle);
- g_pGSMCodecLibraryHandle = 0;
- return false;
+ if(g_pGSMCodecLibraryHandle)return true; // Already initialized
+
+ g_pGSMCodecLibraryHandle = dlopen("libgsm.so",RTLD_NOW | RTLD_GLOBAL);
+ if(!g_pGSMCodecLibraryHandle)return false; // no way to open it
+
+ gsm_session_create = (void * (*)()) dlsym(g_pGSMCodecLibraryHandle,"gsm_create");
+ gsm_session_destroy = (void (*)(void *)) dlsym(g_pGSMCodecLibraryHandle,"gsm_destroy");
+ gsm_session_encode = (void (*)(void *,short *,unsigned char *)) dlsym(g_pGSMCodecLibraryHandle,"gsm_encode");
+ gsm_session_decode = (int (*)(void *,unsigned char *,short *)) dlsym(g_pGSMCodecLibraryHandle,"gsm_decode");
+
+ if(! (gsm_session_create && gsm_session_destroy && gsm_session_encode && gsm_session_decode))
+ {
+ dlclose(g_pGSMCodecLibraryHandle);
+ g_pGSMCodecLibraryHandle = 0;
+ return false;
+ }
+ return true;
}
- return true;
-}
-
-void kvi_gsm_codec_done()
-{
- if(g_pGSMCodecLibraryHandle)
+
+ void kvi_gsm_codec_done()
{
- dlclose(g_pGSMCodecLibraryHandle);
- g_pGSMCodecLibraryHandle = 0;
+ if(g_pGSMCodecLibraryHandle)
+ {
+ dlclose(g_pGSMCodecLibraryHandle);
+ g_pGSMCodecLibraryHandle = 0;
+ }
}
-}
-
-
-
-KviDccVoiceGsmCodec::KviDccVoiceGsmCodec()
-: KviDccVoiceCodec()
-{
- m_pEncodeState = gsm_session_create();
- m_pDecodeState = gsm_session_create();
- m_szName = "gsm (compression 33:320)";
-}
-
-KviDccVoiceGsmCodec::~KviDccVoiceGsmCodec()
-{
- gsm_session_destroy(m_pEncodeState);
- gsm_session_destroy(m_pDecodeState);
-}
-
-void KviDccVoiceGsmCodec::encode(KviDataBuffer * signal,KviDataBuffer * stream)
-{
- if(signal->size() < GSM_UNPACKED_FRAME_SIZE_IN_BYTES)return; // nothing to encode
-
- unsigned char * ptr = signal->data();
-
- int uFrames = signal->size() / GSM_UNPACKED_FRAME_SIZE_IN_BYTES;
- int uTotalDataCompressed = uFrames * GSM_UNPACKED_FRAME_SIZE_IN_BYTES;
- int uFrameOffset = stream->size();
- unsigned char * endPtr = ptr + uTotalDataCompressed;
-
- stream->addSize(GSM_PACKED_FRAME_SIZE_IN_BYTES * uFrames);
-
- while(ptr != endPtr)
+
+
+ KviDccVoiceGsmCodec::KviDccVoiceGsmCodec()
+ : KviDccVoiceCodec()
{
- gsm_session_encode(m_pEncodeState,(short *)ptr,stream->data() + uFrameOffset);
- ptr += GSM_UNPACKED_FRAME_SIZE_IN_BYTES;
- uFrameOffset += GSM_PACKED_FRAME_SIZE_IN_BYTES;
+ m_pEncodeState = gsm_session_create();
+ m_pDecodeState = gsm_session_create();
+ m_szName = "gsm (compression 33:320)";
}
- signal->remove(uTotalDataCompressed);
-}
-
-void KviDccVoiceGsmCodec::decode(KviDataBuffer * stream,KviDataBuffer * signal)
-{
- if(stream->size() < GSM_PACKED_FRAME_SIZE_IN_BYTES)return; // nothing to decode
-
- unsigned char * ptr = stream->data();
-
- // Gsm codec
- int uFrames = stream->size() / GSM_PACKED_FRAME_SIZE_IN_BYTES;
- int uTotalDataDecompressed = uFrames * GSM_PACKED_FRAME_SIZE_IN_BYTES;
- int uSignalOffset = signal->size();
- unsigned char * endPtr = ptr + (uTotalDataDecompressed);
-
- signal->addSize(GSM_UNPACKED_FRAME_SIZE_IN_BYTES * uFrames);
-
- while(ptr != endPtr)
+
+ KviDccVoiceGsmCodec::~KviDccVoiceGsmCodec()
{
- // We don't check the return value here
- // Well..it is either an unrecoverable internal error
- // or a broken frame...
- // but if we receive broken frames over DCC...well....better
- // check the hardware...or the remote codec as well...
- gsm_session_decode(m_pDecodeState,ptr,(short *)(signal->data() + uSignalOffset));
- ptr += GSM_PACKED_FRAME_SIZE_IN_BYTES;
- uSignalOffset += GSM_UNPACKED_FRAME_SIZE_IN_BYTES;
+ gsm_session_destroy(m_pEncodeState);
+ gsm_session_destroy(m_pDecodeState);
+ }
+
+ void KviDccVoiceGsmCodec::encode(KviDataBuffer * signal,KviDataBuffer * stream)
+ {
+ if(signal->size() < GSM_UNPACKED_FRAME_SIZE_IN_BYTES)return; // nothing to encode
+
+ unsigned char * ptr = signal->data();
+
+ int uFrames = signal->size() / GSM_UNPACKED_FRAME_SIZE_IN_BYTES;
+ int uTotalDataCompressed = uFrames * GSM_UNPACKED_FRAME_SIZE_IN_BYTES;
+ int uFrameOffset = stream->size();
+ unsigned char * endPtr = ptr + uTotalDataCompressed;
+
+ stream->addSize(GSM_PACKED_FRAME_SIZE_IN_BYTES * uFrames);
+
+ while(ptr != endPtr)
+ {
+ gsm_session_encode(m_pEncodeState,(short *)ptr,stream->data() + uFrameOffset);
+ ptr += GSM_UNPACKED_FRAME_SIZE_IN_BYTES;
+ uFrameOffset += GSM_PACKED_FRAME_SIZE_IN_BYTES;
+ }
+ signal->remove(uTotalDataCompressed);
+ }
+
+ void KviDccVoiceGsmCodec::decode(KviDataBuffer * stream,KviDataBuffer * signal)
+ {
+ if(stream->size() < GSM_PACKED_FRAME_SIZE_IN_BYTES)return; // nothing to decode
+
+ unsigned char * ptr = stream->data();
+
+ // Gsm codec
+ int uFrames = stream->size() / GSM_PACKED_FRAME_SIZE_IN_BYTES;
+ int uTotalDataDecompressed = uFrames * GSM_PACKED_FRAME_SIZE_IN_BYTES;
+ int uSignalOffset = signal->size();
+ unsigned char * endPtr = ptr + (uTotalDataDecompressed);
+
+ signal->addSize(GSM_UNPACKED_FRAME_SIZE_IN_BYTES * uFrames);
+
+ while(ptr != endPtr)
+ {
+ // We don't check the return value here
+ // Well..it is either an unrecoverable internal error
+ // or a broken frame...
+ // but if we receive broken frames over DCC...well....better
+ // check the hardware...or the remote codec as well...
+ gsm_session_decode(m_pDecodeState,ptr,(short *)(signal->data() + uSignalOffset));
+ ptr += GSM_PACKED_FRAME_SIZE_IN_BYTES;
+ uSignalOffset += GSM_UNPACKED_FRAME_SIZE_IN_BYTES;
+ }
+ stream->remove(uTotalDataDecompressed);
+ }
+
+ int KviDccVoiceGsmCodec::encodedFrameSize()
+ {
+ return GSM_PACKED_FRAME_SIZE_IN_BYTES;
+ }
+
+ int KviDccVoiceGsmCodec::decodedFrameSize()
+ {
+ return GSM_UNPACKED_FRAME_SIZE_IN_BYTES;
}
- stream->remove(uTotalDataDecompressed);
-}
-
-int KviDccVoiceGsmCodec::encodedFrameSize()
-{
- return GSM_PACKED_FRAME_SIZE_IN_BYTES;
-}
-
-int KviDccVoiceGsmCodec::decodedFrameSize()
-{
- return GSM_UNPACKED_FRAME_SIZE_IN_BYTES;
-}
#endif // COMPILE_USE_GSM
diff --git a/src/modules/dcc/libkvidcc.cpp b/src/modules/dcc/libkvidcc.cpp
index 26e2a4de9..1efb2a6ec 100644
--- a/src/modules/dcc/libkvidcc.cpp
+++ b/src/modules/dcc/libkvidcc.cpp
@@ -22,6 +22,13 @@
//
//=============================================================================
+#include "gsmcodec.h"
+#include "broker.h"
+#include "voice.h"
+#include "utils.h"
+#include "send.h"
+#include "window.h"
+
#include "kvi_debug.h"
#include "kvi_settings.h"
#include "kvi_string.h"
@@ -41,14 +48,7 @@
#include "kvi_ircconnection.h"
#include "kvi_ircconnectionuserinfo.h"
-#include "gsmcodec.h"
-#include "broker.h"
-#include "voice.h"
-#include "utils.h"
-#include "send.h"
-#include "window.h"
-
-#include <qfileinfo.h>
+#include <QFileInfo>
#ifdef COMPILE_ON_WINDOWS
// Ugly Windoze compiler...
@@ -2754,8 +2754,8 @@ static bool dcc_module_can_unload(KviModule *m)
}
KVIRC_MODULE(
- "Dcc",
- "1.0.0",
+ "DCC",
+ "4.0.0",
"Copyright (C) 2000-2004:\n" \
" Szymon Stefanek (pragma at kvirc dot net)\n",
"DCC extension for KVIrc\n",
diff --git a/src/modules/dcc/marshal.cpp b/src/modules/dcc/marshal.cpp
index add48e9bc..c67d3d010 100644
--- a/src/modules/dcc/marshal.cpp
+++ b/src/modules/dcc/marshal.cpp
@@ -31,12 +31,9 @@
#include "kvi_socket.h"
#include "kvi_fileutils.h"
-
#include <stdlib.h> //for exit()
-
-
KviDccMarshal::KviDccMarshal(KviDccMarshalOutputContext * ctx)
: QObject(0,"dcc_marshal")
{
@@ -160,7 +157,6 @@ void KviDccMarshal::doListen()
return;
}
-
#ifndef COMPILE_IPV6_SUPPORT
if(m_bIpV6)
{
@@ -556,7 +552,6 @@ void KviDccMarshal::snActivated(int)
emit connected();
}
-
void KviDccMarshal::doSSLHandshake(int)
{
#ifdef COMPILE_SSL_SUPPORT
diff --git a/src/modules/dcc/marshal.h b/src/modules/dcc/marshal.h
index 542222d6b..b7d19e7fe 100644
--- a/src/modules/dcc/marshal.h
+++ b/src/modules/dcc/marshal.h
@@ -24,18 +24,19 @@
#include "kvi_string.h"
#include "kvi_sockettype.h"
-#include <qobject.h>
-#include <qsocketnotifier.h>
-#include <qtimer.h>
#include "kvi_inttypes.h"
+#include <QObject>
+#include <QSocketNotifier>
+#include <QTimer>
+
class KviWindow;
+class KviDccMarshal;
#ifdef COMPILE_SSL_SUPPORT
#include "kvi_sslmaster.h"
#endif
-class KviDccMarshal;
class KviDccMarshalOutputContext
{
diff --git a/src/modules/dcc/requests.cpp b/src/modules/dcc/requests.cpp
index db8fb3e72..080aa9a7a 100644
--- a/src/modules/dcc/requests.cpp
+++ b/src/modules/dcc/requests.cpp
@@ -23,6 +23,13 @@
//=============================================================================
#define _KVI_DEBUG_CHECK_RANGE_
+
+#include "gsmcodec.h"
+#include "broker.h"
+#include "voice.h"
+#include "utils.h"
+#include "send.h"
+
#include "kvi_debug.h"
#include "kvi_settings.h"
#include "kvi_string.h"
@@ -34,7 +41,6 @@
#include "kvi_netutils.h"
#include "kvi_frame.h"
#include "kvi_console.h"
-
#include "kvi_error.h"
#include "kvi_options.h"
#include "kvi_defaults.h"
@@ -44,13 +50,7 @@
#include "kvi_ircconnection.h"
#include "kvi_ircconnectionuserinfo.h"
-#include "gsmcodec.h"
-#include "broker.h"
-#include "voice.h"
-#include "utils.h"
-#include "send.h"
-
-#include <qfileinfo.h>
+#include <QFileInfo>
#ifdef COMPILE_ON_WINDOWS
// Ugly Windoze compiler...
@@ -146,7 +146,6 @@ static void dcc_module_set_dcc_type(KviDccDescriptor * d,const char * szBaseType
if(d->bIsTdcc)d->szType.prepend('T');
}
-
static bool dcc_module_normalize_target_data(KviDccRequest * dcc,KviStr &ipaddr,KviStr &port)
{
if(!port.isUnsignedNum())
@@ -522,7 +521,7 @@ static void dccModuleParseDccAccept(KviDccRequest *dcc)
// DCC ACCEPT <filename> 0 <resumesize> <tag>
if(!g_pDccBroker->handleResumeAccepted(dcc->szParam1.ptr(),dcc->szParam2.ptr(),dcc->szParam4.ptr()))
{
-//#warning "IF KviOption_boolReplyCtcpErrmsgOnInvalidAccept..."
+ //#warning "IF KviOption_boolReplyCtcpErrmsgOnInvalidAccept..."
if(!dcc->ctcpMsg->msg->haltOutput())
{
KviStr szError(KviStr::Format,__tr2qs_ctx("Can't proceed with DCC RECV: Transfer not initiated for file %s on port %s","dcc"),dcc->szParam1.ptr(),dcc->szParam2.ptr());
@@ -558,7 +557,7 @@ static void dccModuleParseDccResume(KviDccRequest *dcc)
if(!g_pDccBroker->handleResumeRequest(dcc,dcc->szParam1.ptr(),dcc->szParam2.ptr(),filePos,dcc->szParam4.ptr()))
{
-//#warning "IF KviOption_boolReplyCtcpErrmsgOnInvalidResume..."
+ //#warning "IF KviOption_boolReplyCtcpErrmsgOnInvalidResume..."
if(!dcc->ctcpMsg->msg->haltOutput())
{
KviStr szError(KviStr::Format,
@@ -754,7 +753,7 @@ static void dccModuleParseDccRSend(KviDccRequest *dcc)
}
#endif //!COMPILE_SSL_SUPPORT
-//#warning "When behind a firewall, we should reply an error message and avoid setting up the listening connection"
+ //#warning "When behind a firewall, we should reply an error message and avoid setting up the listening connection"
KviDccDescriptor * d = new KviDccDescriptor(dcc->pConsole);
d->szNick = dcc->ctcpMsg->pSource->nick();
@@ -853,11 +852,11 @@ static void dccModuleParseDccGet(KviDccRequest *dcc)
return;
}
-//#warning "IF NOT IGNORE DCC GET!"
-
-//#warning "CREATE IT MINIMIZED ETC..."
-//#warning "MAYBE USE A DIALOG TO ACCEPT THE REQUEST ?"
-//#warning "DO NOT ACCEPT /etc/* requests..."
+ //#warning "IF NOT IGNORE DCC GET!"
+
+ //#warning "CREATE IT MINIMIZED ETC..."
+ //#warning "MAYBE USE A DIALOG TO ACCEPT THE REQUEST ?"
+ //#warning "DO NOT ACCEPT /etc/* requests..."
if(KVI_OPTION_BOOL(KviOption_boolCantAcceptIncomingDccConnections))
{
@@ -919,7 +918,7 @@ static void dccModuleParseDccGet(KviDccRequest *dcc)
d->szListenIp = "0.0.0.0";
} else
d->szListenIp=QString(tmp);
-//#warning "DO STH WITH THIS PORT (HOW TO SPECIFY IT ?)"
+ //#warning "DO STH WITH THIS PORT (HOW TO SPECIFY IT ?)"
d->szListenPort = "0"; // any port is ok
if(KVI_OPTION_BOOL(KviOption_boolDccSendFakeAddressByDefault))
@@ -1078,15 +1077,12 @@ static void dccModuleParseDccCanvas(KviDccRequest *dcc)
#endif
}
-
static void dccModuleParseDccList(KviDccRequest *dcc)
{
// DCC LIST <mask> <ipaddr> <port>
// FIXME!
}
-
-
typedef void (*dccParseProc)(KviDccRequest *);
typedef struct _dccParseProcEntry
{
diff --git a/src/modules/dcc/send.cpp b/src/modules/dcc/send.cpp
index 82315fe7b..8a4401c88 100644
--- a/src/modules/dcc/send.cpp
+++ b/src/modules/dcc/send.cpp
@@ -22,19 +22,14 @@
//
//=============================================================================
+#define _KVI_DEBUG_CHECK_RANGE_
+
#include "send.h"
#include "broker.h"
#include "marshal.h"
#include "broker.h"
#include "window.h"
-#include "kvi_styled_controls.h"
-
-#ifdef COMPILE_ON_WINDOWS
- // Ugly Windoze compiler...
- #include "dialogs.h"
-#endif
-#define _KVI_DEBUG_CHECK_RANGE_
#include "kvi_debug.h"
#include "kvi_app.h"
#include "kvi_options.h"
@@ -50,7 +45,6 @@
#include "kvi_memmove.h"
#include "kvi_thread.h"
#include "kvi_ircsocket.h"
-
#include "kvi_mediatype.h"
#include "kvi_socket.h"
#include "kvi_kvs_eventtriggers.h"
@@ -59,16 +53,22 @@
#include "kvi_ircconnectionuserinfo.h"
#include "kvi_sparser.h"
#include "kvi_kvs_script.h"
+#include "kvi_styled_controls.h"
-#include <qevent.h>
-#include <qfile.h>
-#include <qpainter.h>
-#include <qdatetime.h>
+#ifdef COMPILE_ON_WINDOWS
+ // Ugly Windoze compiler...
+ #include "dialogs.h"
+#endif
+
+#include <QFile>
+#include <QPainter>
+#include <QDateTime>
#include <qglobal.h>
-#include <qcheckbox.h>
-#include <qspinbox.h>
-#include <qlayout.h>
-#include <qpushbutton.h>
+#include <QCheckBox>
+#include <QSpinBox>
+#include <QLayout>
+#include <QPushButton>
+#include <QEvent>
#define INSTANT_BANDWIDTH_CHECK_INTERVAL_IN_MSECS 3000
#define INSTANT_BANDWIDTH_CHECK_INTERVAL_IN_SECS 3
@@ -930,7 +930,6 @@ void KviDccFileTransfer::abort()
displayUpdate();
}
-
void KviDccFileTransfer::fillContextPopup(KviTalPopupMenu * m,int column)
{
m->insertItem(__tr2qs_ctx("Configure Bandwidth...","dcc"),this,SLOT(configureBandwidth()));
@@ -975,6 +974,7 @@ void KviDccFileTransfer::retryTDCC()
QString szCommand = "dcc.send -r=$console($dcc.irccontext(" + szId + ")) -t " + szRemoteNick + " " + "\"" + szFileName + "\"";
KviKvsScript::run(szCommand,g_pActiveWindow);
}
+
void KviDccFileTransfer::retryRevDCC()
{
abort();
@@ -1340,7 +1340,6 @@ int KviDccFileTransfer::displayHeight(int iLineSpacing)
QString KviDccFileTransfer::tipText()
{
-
QString s;
s = QString("<table><tr><td bgcolor=\"#000000\"><font color=\"#FFFFFF\"><b>DCC %1 (ID %2)</b></font></td></tr>").arg(m_szDccType.ptr()).arg(id());
@@ -1403,7 +1402,6 @@ KviDccFileTransfer * KviDccFileTransfer::nonFailedTransferWithLocalFileName(cons
return 0;
}
-
unsigned int KviDccFileTransfer::runningTransfersCount()
{
if(!g_pDccFileTransfers)return 0;
@@ -1463,7 +1461,6 @@ void KviDccFileTransfer::addToTransferLog(const QString &s)
m_szTransferLog += "<br>";
}
-
void KviDccFileTransfer::connectionInProgress()
{
if(m_pDescriptor->bActive)
@@ -1583,9 +1580,6 @@ void KviDccFileTransfer::sslError(const char * msg)
#endif
}
-
-
-
bool KviDccFileTransfer::event(QEvent *e)
{
if(e->type() == KVI_THREAD_EVENT)
@@ -1818,10 +1812,6 @@ bool KviDccFileTransfer::doResume(const char * filename,const char * port,unsign
}
-
-
-
-
KviDccFileTransferBandwidthDialog::KviDccFileTransferBandwidthDialog(QWidget * pParent,KviDccFileTransfer * t)
: QDialog(pParent)
{
@@ -1893,7 +1883,6 @@ void KviDccFileTransferBandwidthDialog::closeEvent(QCloseEvent * e)
}
-
#ifndef COMPILE_USE_STANDALONE_MOC_SOURCES
#include "m_send.moc"
#endif //!COMPILE_USE_STANDALONE_MOC_SOURCES
diff --git a/src/modules/dcc/send.h b/src/modules/dcc/send.h
index c083ce4af..4a4d7cc3d 100644
--- a/src/modules/dcc/send.h
+++ b/src/modules/dcc/send.h
@@ -24,27 +24,32 @@
//
//=============================================================================
-#include "kvi_window.h"
-#include "kvi_string.h"
-
#include "descriptor.h"
#include "window.h"
#include "thread.h"
+#include "kvi_window.h"
+#include "kvi_string.h"
#include "kvi_sockettype.h"
-
#include "kvi_pointerlist.h"
-#include <qlabel.h>
-#include <qprogressbar.h>
+#include "kvi_filetransfer.h"
+#include "kvi_time.h"
+#include "kvi_styled_controls.h"
#include "kvi_tal_popupmenu.h"
#include "kvi_tal_hbox.h"
#include "kvi_tal_vbox.h"
-#include <qfile.h>
-#include <qdialog.h>
-#include "kvi_filetransfer.h"
-#include "kvi_time.h"
+#include <QLabel>
+#include <QProgressBar>
+#include <QFile>
+#include <QDialog>
+class QSpinBox;
+class QTimer;
+class QPainter;
+class KviDccFileTransfer;
+class KviDccMarshal;
+class KviTalPopupMenu;
typedef struct _KviDccSendThreadOptions
{
@@ -142,11 +147,6 @@ protected:
virtual void run();
};
-class KviDccFileTransfer;
-class QSpinBox;
-class QTimer;
-
-#include "kvi_styled_controls.h"
class KviDccFileTransferBandwidthDialog : public QDialog
{
@@ -166,10 +166,6 @@ protected slots:
};
-class KviDccMarshal;
-class QPainter;
-class KviTalPopupMenu;
-
class KviDccFileTransfer : public KviFileTransfer, public KviDccMarshalOutputContext
{
enum GeneralStatus { Connecting , Transferring , Success , Failure };
diff --git a/src/modules/dcc/thread.cpp b/src/modules/dcc/thread.cpp
index 622fb6130..1d583c14d 100644
--- a/src/modules/dcc/thread.cpp
+++ b/src/modules/dcc/thread.cpp
@@ -20,8 +20,10 @@
// Inc. ,59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
-#include "thread.h"
#define _KVI_DEBUG_CHECK_RANGE_
+
+#include "thread.h"
+
#include "kvi_debug.h"
#include "kvi_window.h"
#include "kvi_error.h"
@@ -29,6 +31,7 @@
#include "kvi_malloc.h"
#include "kvi_netutils.h"
#include "kvi_socket.h"
+
#ifdef COMPILE_SSL_SUPPORT
#include "kvi_sslmaster.h"
#endif
diff --git a/src/modules/dcc/thread.h b/src/modules/dcc/thread.h
index 91b46f314..f7e8132a3 100644
--- a/src/modules/dcc/thread.h
+++ b/src/modules/dcc/thread.h
@@ -25,10 +25,9 @@
#include "kvi_settings.h"
#include "kvi_thread.h"
#include "kvi_sockettype.h"
-
#include "kvi_pointerlist.h"
-#include <qobject.h>
+#include <QObject>
#ifdef COMPILE_SSL_SUPPORT
#include "kvi_ssl.h"
diff --git a/src/modules/dcc/utils.cpp b/src/modules/dcc/utils.cpp
index 786952563..84c9af0c2 100644
--- a/src/modules/dcc/utils.cpp
+++ b/src/modules/dcc/utils.cpp
@@ -99,7 +99,6 @@ bool dcc_module_get_listen_ip_address(KviCommand *c,KviConsole * pConsole,QStrin
}
*/
-
bool dcc_kvs_get_listen_ip_address(KviKvsModuleCommandCall *c,KviConsole * pConsole,QString &szListenIp)
{
//
@@ -166,4 +165,3 @@ bool dcc_kvs_get_listen_ip_address(KviKvsModuleCommandCall *c,KviConsole * pCons
return true;
}
-
diff --git a/src/modules/dcc/voice.cpp b/src/modules/dcc/voice.cpp
index af0c46f44..96ab3dd54 100644
--- a/src/modules/dcc/voice.cpp
+++ b/src/modules/dcc/voice.cpp
@@ -23,6 +23,8 @@
#include "voice.h"
#include "marshal.h"
#include "broker.h"
+#include "adpcmcodec.h"
+#include "gsmcodec.h"
#include "kvi_settings.h"
#include "kvi_iconmanager.h"
@@ -36,15 +38,12 @@
#include "kvi_malloc.h"
#include "kvi_socket.h"
#include "kvi_ircconnection.h"
-
-#include "adpcmcodec.h"
-#include "gsmcodec.h"
-
-#include <qframe.h>
-#include <qsplitter.h>
#include "kvi_tal_vbox.h"
-#include <qslider.h>
-#include <qtooltip.h>
+
+#include <QFrame>
+#include <QSplitter>
+#include <QSlider>
+#include <QToolTip>
#ifndef COMPILE_ON_WINDOWS
#include <sys/time.h>
@@ -52,10 +51,9 @@
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
-//#include "kvi_error.h"
-
-#include <sys/stat.h> // for open()
-#include <sys/ioctl.h> // for ioctl()
+ //#include "kvi_error.h"
+ #include <sys/stat.h> // for open()
+ #include <sys/ioctl.h> // for ioctl()
#endif //!COMPILE_ON_WIDNOWS
extern KviDccBroker * g_pDccBroker;
@@ -142,7 +140,6 @@ KviDccVoiceThread::~KviDccVoiceThread()
#endif
}
-
bool KviDccVoiceThread::checkSoundcard()
{
#ifdef COMPILE_DISABLE_DCC_VOICE
@@ -280,8 +277,6 @@ bool KviDccVoiceThread::openSoundcardWithDuplexOption(int openMode,int failMode)
return (m_soundFdMode != failMode);
}
-
-
return true;
#else
return false;
@@ -300,8 +295,6 @@ void KviDccVoiceThread::closeSoundcard()
#endif
}
-
-
bool KviDccVoiceThread::readWriteStep()
{
#ifndef COMPILE_DISABLE_DCC_VOICE
@@ -644,8 +637,6 @@ exit_dcc:
}
-
-
KviDccVoice::KviDccVoice(KviFrame *pFrm,KviDccDescriptor * dcc,const char * name)
: KviDccWindow(KVI_WINDOW_TYPE_DCCVOICE,pFrm,name,dcc)
{
@@ -682,7 +673,7 @@ KviDccVoice::KviDccVoice(KviFrame *pFrm,KviDccDescriptor * dcc,const char * name
//#warning "The volume slider should be enabled only when receiving data"
m_pVolumeSlider = new QSlider(-100, 0, 10, 0, Qt::Vertical, m_pHBox, "dcc_voice_volume_slider");
m_pVolumeSlider->setValue(getMixerVolume());
-/* Update the tooltip */
+ /* Update the tooltip */
setMixerVolume(m_pVolumeSlider->value());
m_pVolumeSlider->setMaximumWidth(16);
m_pVolumeSlider->setMaximumHeight(2*m_pPlayingLabel->height());
@@ -691,17 +682,11 @@ KviDccVoice::KviDccVoice(KviFrame *pFrm,KviDccDescriptor * dcc,const char * name
m_pTalkButton = new QToolButton(m_pHBox);
m_pTalkButton->setEnabled(false);
m_pTalkButton->setToggleButton(true);
-#if QT_VERSION >= 300
QIconSet iset;
iset.setPixmap(*(g_pIconManager->getBigIcon(KVI_BIGICON_DISCONNECTED)),QIconSet::Large,QIconSet::Normal,QIconSet::Off);
iset.setPixmap(*(g_pIconManager->getBigIcon(KVI_BIGICON_CONNECTED)),QIconSet::Large,QIconSet::Normal,QIconSet::On);
m_pTalkButton->setIconSet(iset);
-#else
- m_pTalkButton->setOffIconSet(*(g_pIconManager->getBigIcon(KVI_BIGICON_DISCONNECTED)));
- m_pTalkButton->setOnIconSet(*(g_pIconManager->getBigIcon(KVI_BIGICON_CONNECTED)));
-#endif
m_pTalkButton->setUsesBigPixmap(true);
-
connect(m_pTalkButton,SIGNAL(toggled(bool)),this,SLOT(startOrStopTalking(bool)));
m_pHBox->setStretchFactor(vbox,1);
diff --git a/src/modules/dcc/voice.h b/src/modules/dcc/voice.h
index fcd8b5978..944551dd5 100644
--- a/src/modules/dcc/voice.h
+++ b/src/modules/dcc/voice.h
@@ -22,20 +22,22 @@
// Inc. ,59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
-#include "kvi_window.h"
-
-#include "kvi_databuffer.h"
-#include "kvi_sockettype.h"
-
#include "codec.h"
#include "descriptor.h"
#include "thread.h"
#include "window.h"
+#include "kvi_window.h"
+#include "kvi_databuffer.h"
+#include "kvi_sockettype.h"
#include "kvi_tal_hbox.h"
-#include <qlabel.h>
-#include <qtoolbutton.h>
-#include <qtimer.h>
+
+#include <QLabel>
+#include <QToolButton>
+#include <QTimer>
+
+class QSlider;
+class KviDccMarshal;
#ifndef _DCC_VOICE_CPP_
extern bool kvi_dcc_voice_is_valid_codec(const char * codecName);
@@ -97,8 +99,6 @@ protected:
virtual void run();
};
-class KviDccMarshal;
-class QSlider;
class KviDccVoice : public KviDccWindow
{
diff --git a/src/modules/dcc/window.cpp b/src/modules/dcc/window.cpp
index 6f9a36b60..fa64b2ad2 100644
--- a/src/modules/dcc/window.cpp
+++ b/src/modules/dcc/window.cpp
@@ -21,7 +21,8 @@
//
#include "window.h"
-#include "kvi_tal_hbox.h"
+
+#include "kvi_tal_hbox.h"
KviDccWindow::KviDccWindow(int type,KviFrame * lpFrm,const char * name,KviDccDescriptor * d)
: KviWindow(type,lpFrm,name)
diff --git a/src/modules/dcc/window.h b/src/modules/dcc/window.h
index 4a6a60499..16308e327 100644
--- a/src/modules/dcc/window.h
+++ b/src/modules/dcc/window.h
@@ -22,11 +22,11 @@
// Inc. ,59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
-#include "kvi_window.h"
-
#include "descriptor.h"
#include "marshal.h"
+#include "kvi_window.h"
+
class KviDccWindow : public KviWindow , public KviDccMarshalOutputContext
{
Q_OBJECT
@@ -44,6 +44,4 @@ public:
virtual const char * dccMarshalOutputContextString();
};
-
-
#endif //_WINDOW_H_