diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | 460c52653ab0dcca6f19a4f492ed2c5e4e963ab0 (patch) | |
tree | 67208f7c145782a7e90b123b982ca78d88cc2c87 /knotes/knotesnetsend.cpp | |
download | tdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.tar.gz tdepim-460c52653ab0dcca6f19a4f492ed2c5e4e963ab0.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'knotes/knotesnetsend.cpp')
-rw-r--r-- | knotes/knotesnetsend.cpp | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/knotes/knotesnetsend.cpp b/knotes/knotesnetsend.cpp new file mode 100644 index 000000000..7cf7567e4 --- /dev/null +++ b/knotes/knotesnetsend.cpp @@ -0,0 +1,104 @@ +/******************************************************************* + KNotes -- Notes for the KDE project + + Copyright (c) 2003, Daniel Martin <daniel.martin@pirack.com> + 2004, 2006, Michael Brade <brade@kde.org> + + 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 option) 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. + + In addition, as a special exception, the copyright holders give + permission to link the code of this program with any edition of + the Qt library by Trolltech AS, Norway (or with modified versions + of Qt that use the same license as Qt), and distribute linked + combinations including the two. You must obey the GNU General + Public License in all respects for all of the code used other than + Qt. If you modify this file, you may extend this exception to + your version of the file, but you are not obligated to do so. If + you do not wish to do so, delete this exception statement from + your version. +*******************************************************************/ + +#include <klocale.h> +#include <kmessagebox.h> + +#include "knotesnetsend.h" + +#define CONNECT_TIMEOUT 10000 + + +KNotesNetworkSender::KNotesNetworkSender( const QString& hostname, int port ) + : KBufferedSocket( hostname, QString::number( port ) ), + m_note( 0 ), m_title( 0 ), m_sender( 0 ), m_index( 0 ) +{ + enableRead( false ); + enableWrite( false ); + setTimeout( CONNECT_TIMEOUT ); + + // QObject:: prefix needed, otherwise the KStreamSocket::connect() + // mehtod is called!!! + QObject::connect( this, SIGNAL(connected( const KResolverEntry& )), + SLOT(slotConnected( const KResolverEntry& )) ); + QObject::connect( this, SIGNAL(gotError( int )), SLOT(slotError( int )) ); + QObject::connect( this, SIGNAL(closed()), SLOT(slotClosed()) ); + QObject::connect( this, SIGNAL(readyWrite()), SLOT(slotReadyWrite()) ); +} + +void KNotesNetworkSender::setSenderId( const QString& sender ) +{ + m_sender = sender.ascii(); +} + +void KNotesNetworkSender::setNote( const QString& title, const QString& text ) +{ + // TODO: support for unicode and rich text. + // Mmmmmm... how to behave with such heterogeneous environment? + // AFAIK, ATnotes does not allow UNICODE. + m_title = title.ascii(); + m_note = text.ascii(); +} + +void KNotesNetworkSender::slotConnected( const KResolverEntry& ) +{ + if ( m_sender.isEmpty() ) + m_note.prepend( m_title + "\n"); + else + m_note.prepend( m_title + " (" + m_sender + ")\n" ); + + enableWrite( true ); +} + +void KNotesNetworkSender::slotReadyWrite() +{ + m_index += writeBlock( m_note.data() + m_index, m_note.length() - m_index ); + + // If end of text reached, close connection + if ( m_index == m_note.length() ) + close(); +} + +void KNotesNetworkSender::slotError( int err ) +{ + KMessageBox::sorry( 0, i18n("Communication error: %1") + .arg( errorString( static_cast<KSocketBase::SocketError>(err) ) ) + ); + slotClosed(); +} + +void KNotesNetworkSender::slotClosed() +{ + deleteLater(); +} + +#include "knotesnetsend.moc" |