summaryrefslogtreecommitdiffstats
path: root/src/modules/spaste/controller.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/spaste/controller.cpp')
-rw-r--r--src/modules/spaste/controller.cpp121
1 files changed, 121 insertions, 0 deletions
diff --git a/src/modules/spaste/controller.cpp b/src/modules/spaste/controller.cpp
new file mode 100644
index 00000000..5a132dbd
--- /dev/null
+++ b/src/modules/spaste/controller.cpp
@@ -0,0 +1,121 @@
+// File : controller.cpp
+// Creation date : Thu Apr 30 2002 17:13:12 GMT by Juanjo �lvarez
+//
+// This file is part of the KVirc irc client distribution
+// Copyright (C) 2002 Juanjo �lvarez ([email protected])
+// Copyright (C) 2002 Szymon Stefanek ([email protected])
+//
+// This program is FREE software. You can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or (at your opinion) any later version.
+//
+// This program is distributed in the HOPE that it will be USEFUL,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+// See the GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, write to the Free Software Foundation,
+// Inc. ,51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+#include "controller.h"
+#include "kvi_window.h"
+#include "kvi_console.h"
+#include "kvi_mirccntrl.h"
+#include "kvi_app.h"
+#include "kvi_options.h"
+
+#include <qtimer.h>
+#include <qstringlist.h>
+#include <qclipboard.h>
+
+extern KviPointerList<SPasteController> * g_pControllerList;
+
+SPasteController::SPasteController(KviWindow * w,int id)
+ : m_pClipBuff(NULL),m_pFile(NULL),m_pId(id),m_pWindow(w)
+{
+ g_pControllerList->append(this);
+ //m_pWindow = w;
+ m_pTimer = new QTimer(this);
+}
+
+SPasteController::~SPasteController()
+{
+ g_pControllerList->removeRef(this);
+ if(m_pFile)
+ {
+ m_pFile->close();
+ delete m_pFile;
+ }
+ if(m_pTimer)
+ {
+ m_pTimer->stop();
+ delete m_pTimer;
+ }
+ if(m_pClipBuff)
+ delete m_pClipBuff;
+}
+
+bool SPasteController::pasteFileInit(QString &fileName)
+{
+ if(m_pClipBuff)return false; // can't paste a file while pasting the clipboard
+ if(m_pFile)return false; // can't paste two files at a time
+ m_pFile = new QFile(fileName);
+ if(!m_pFile->open(IO_ReadOnly))return false;
+ connect(m_pTimer,SIGNAL(timeout()),this,SLOT(pasteFile()));
+ m_pTimer->start(KVI_OPTION_UINT(KviOption_uintPasteDelay));
+ return true;
+}
+
+bool SPasteController::pasteClipboardInit(void)
+{
+ if(m_pFile)return false; // can't paste clipboard while pasting a file
+ QString tmp(g_pApp->clipboard()->text());
+ if(m_pClipBuff)
+ {
+ (*m_pClipBuff) += QStringList::split("\n",tmp,true);
+ } else {
+ m_pClipBuff = new QStringList(QStringList::split("\n",tmp,true));
+ m_clipBuffIterator = m_pClipBuff->begin();
+ }
+ connect(m_pTimer,SIGNAL(timeout()),this,SLOT(pasteClipboard()));
+ m_pTimer->start(KVI_OPTION_UINT(KviOption_uintPasteDelay));
+ return true;
+}
+
+void SPasteController::pasteFile(void)
+{
+#ifndef COMPILE_USE_QT4
+ QString line;
+ if(m_pFile->readLine(line,999) != -1)
+ {
+ if(line.isEmpty())
+ line = QChar(KVI_TEXT_RESET);
+ if( (!g_pApp->windowExists(m_pWindow)) || m_pWindow->console()->isNotConnected() )
+ {
+ m_pFile->close();
+ delete this;
+ } else m_pWindow->ownMessage(line.ascii());
+ } else { //File finished
+ m_pFile->close();
+ delete this;
+ }
+#endif
+}
+
+void SPasteController::pasteClipboard(void)
+{
+ if(m_clipBuffIterator != m_pClipBuff->end())
+ {
+ if((!g_pApp->windowExists(m_pWindow)) || m_pWindow->console()->isNotConnected() )
+ delete this;
+ else {
+ if((*m_clipBuffIterator).isEmpty())(*m_clipBuffIterator) = QChar(KVI_TEXT_RESET);
+ m_pWindow->ownMessage((*m_clipBuffIterator).ascii()); // <-- not good :/
+ ++m_clipBuffIterator;
+ }
+ } else delete this;//Clipboard finished
+}
+
+#include "controller.moc"