• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdenetwork API Reference
  • KDE Home
  • Contact Us
 

kopete/kopete

  • sources
  • kde-4.12
  • kdenetwork
  • kopete
  • kopete
  • chatwindow
kopeteemailwindow.cpp
Go to the documentation of this file.
1 /*
2  kopeteemailwindow.cpp - Kopete "email window" for single-shot messages
3 
4  Copyright (c) 2002 by Daniel Stone <dstone@kde.org>
5  Copyright (c) 2003 by Jason Keirstead <jason@keirstead.org>
6  Copyright (c) 2003 by Martijn Klingens <klingens@kde.org>
7 
8  Kopete (c) 2002-2003 by the Kopete developers <kopete-devel@kde.org>
9 
10  *************************************************************************
11  * *
12  * This program is free software; you can redistribute it and/or modify *
13  * it under the terms of the GNU General Public License as published by *
14  * the Free Software Foundation; either version 2 of the License, or *
15  * (at your option) any later version. *
16  * *
17  *************************************************************************
18 */
19 
20 #include "kopeteemailwindow.h"
21 
22 #include "chatmessagepart.h"
23 #include "chattexteditpart.h"
24 #include "kopetecontact.h"
25 #include "kopetemetacontact.h"
26 #include "kopeteemoticonaction.h"
27 #include "kopetechatsession.h"
28 #include "kopeteplugin.h"
29 #include "kopetepluginmanager.h"
30 #include "kopetestdaction.h"
31 #include "kopeteviewmanager.h"
32 
33 #include <kaction.h>
34 #include <ktoolbarspaceraction.h>
35 #include <kstandardaction.h>
36 #include <kcolordialog.h>
37 #include <kconfig.h>
38 #include <kcursor.h>
39 #include <kdebug.h>
40 #include <kdeversion.h>
41 #include <kedittoolbar.h>
42 #include <kfontdialog.h>
43 #include <kcolorscheme.h>
44 #include <khtmlview.h>
45 #include <kiconloader.h>
46 #include <klibloader.h>
47 #include <klocale.h>
48 #include <kmenubar.h>
49 #include <kmessagebox.h>
50 #include <kmenu.h>
51 #include <kpushbutton.h>
52 #include <ktextedit.h>
53 #include <kwindowsystem.h>
54 #include <kgenericfactory.h>
55 #include <kxmlguifactory.h>
56 #include <kvbox.h>
57 #include <ktoolbar.h>
58 #include <kicon.h>
59 
60 #include <qlabel.h>
61 #include <qlayout.h>
62 #include <qtimer.h>
63 #include <QPixmap>
64 #include <QCloseEvent>
65 #include <QHBoxLayout>
66 #include <QList>
67 #include <QMovie>
68 #include <QSplitter>
69 #include <kactioncollection.h>
70 
71 K_PLUGIN_FACTORY( EmailWindowPluginFactory, registerPlugin<EmailWindowPlugin>(); )
72 K_EXPORT_PLUGIN( EmailWindowPluginFactory( "kopete_emailwindow" ) )
73 
74 EmailWindowPlugin::EmailWindowPlugin(QObject *parent, const QVariantList &) :
75  Kopete::ViewPlugin( EmailWindowPluginFactory::componentData(), parent )
76 {}
77 
78 KopeteView* EmailWindowPlugin::createView( Kopete::ChatSession *manager )
79 {
80  //TODO: foreignMessage, how will we do this cleanly?
81  return new KopeteEmailWindow(manager,this, false);
82 }
83 
84 class KopeteEmailWindow::Private
85 {
86 public:
87  QList<Kopete::Message> messageQueue;
88  bool showingMessage;
89  bool sendInProgress;
90  bool visible;
91  int queuePosition;
92  KPushButton *btnReplySend;
93  KPushButton *btnReadNext;
94  KPushButton *btnReadPrev;
95  QSplitter *split;
96  ChatMessagePart *messagePart;
97  KopeteEmailWindow::WindowMode mode;
98  KAction *chatSend;
99  QLabel *anim;
100  QMovie animIcon;
101  QPixmap normalIcon;
102  QString unreadMessageFrom;
103  ChatTextEditPart *editPart;
104 
105  KActionMenu *actionActionMenu;
106  KopeteEmoticonAction *actionSmileyMenu;
107 };
108 
109 KopeteEmailWindow::KopeteEmailWindow( Kopete::ChatSession *manager, EmailWindowPlugin *parent, bool foreignMessage )
110  : KParts::MainWindow( ), KopeteView( manager, parent ), d( new Private )
111 {
112  KVBox *v = new KVBox( this );
113  setCentralWidget( v );
114 
115  setMinimumSize( QSize( 75, 20 ) );
116 
117  d->split = new QSplitter( v );
118  d->split->setOrientation( Qt::Vertical );
119 
120  d->messagePart = new ChatMessagePart( manager, d->split);
121 
122  // FIXME: should this be in ChatView too? maybe move to ChatMessagePart?
123  d->messagePart->view()->setMarginWidth( 4 );
124  d->messagePart->view()->setMarginHeight( 4 );
125  d->messagePart->view()->setMinimumSize( QSize( 75, 20 ) );
126 
127  d->editPart = new ChatTextEditPart( manager, d->split );
128 
129  /*
130  FIXME: dude, wtf?
131  QDomDocument doc = d->editPart->domDocument();
132  QDomNode menu = doc.documentElement().firstChild();
133  menu.removeChild( menu.firstChild() ); // Remove File
134  menu.removeChild( menu.firstChild() ); // Remove Edit
135  menu.removeChild( menu.firstChild() ); // Remove View
136  menu.removeChild( menu.lastChild() ); //Remove Help
137 
138  doc.documentElement().removeChild( doc.documentElement().childNodes().item(1) ); //Remove MainToolbar
139  doc.documentElement().removeChild( doc.documentElement().lastChild() ); // Remove Edit popup
140  */
141  connect( d->editPart, SIGNAL(messageSent(Kopete::Message&)),
142  this, SIGNAL(messageSent(Kopete::Message&)) );
143  connect( d->editPart, SIGNAL(canSendChanged(bool)),
144  this, SLOT(slotUpdateReplySend()) );
145  connect( d->editPart, SIGNAL(typing(bool)),
146  manager, SIGNAL(typing(bool)) );
147 
148  //Connections to the manager and the ViewManager that every view should have
149  connect( this, SIGNAL(closing(KopeteView*)),
150  KopeteViewManager::viewManager(), SLOT(slotViewDestroyed(KopeteView*)) );
151  connect( this, SIGNAL(activated(KopeteView*)),
152  KopeteViewManager::viewManager(), SLOT(slotViewActivated(KopeteView*)) );
153  connect( this, SIGNAL(messageSent(Kopete::Message&)),
154  manager, SLOT(sendMessage(Kopete::Message&)) );
155  connect( manager, SIGNAL(messageSuccess()),
156  this, SLOT(messageSentSuccessfully()));
157 
158  QWidget *containerWidget = new QWidget( v );
159  containerWidget->setSizePolicy( QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum) );
160 
161  QHBoxLayout *h = new QHBoxLayout( containerWidget );
162  h->setMargin( 4 );
163  h->setSpacing( 4 );
164  h->addStretch();
165 
166  d->btnReadPrev = new KPushButton( i18n( "<< Prev" ), containerWidget );
167  connect( d->btnReadPrev, SIGNAL(pressed()), this, SLOT(slotReadPrev()) );
168  h->addWidget( d->btnReadPrev, 0, Qt::AlignRight | Qt::AlignVCenter );
169  d->btnReadPrev->setEnabled( false );
170 
171  d->btnReadNext = new KPushButton( i18n( "(0) Next >>" ), containerWidget );
172  connect( d->btnReadNext, SIGNAL(pressed()), this, SLOT(slotReadNext()) );
173  h->addWidget( d->btnReadNext, 0, Qt::AlignRight | Qt::AlignVCenter );
174 
175  d->btnReplySend = new KPushButton( containerWidget );
176  connect( d->btnReplySend, SIGNAL(pressed()), this, SLOT(slotReplySend()) );
177  h->addWidget( d->btnReplySend, 0, Qt::AlignRight | Qt::AlignVCenter );
178 
179  initActions();
180 // setWFlags(Qt::WDestructiveClose);
181 
182  d->showingMessage = false;
183 
184  if( foreignMessage )
185  toggleMode( Read );
186  else
187  toggleMode( Send );
188 
189  KSharedConfig::Ptr config = KGlobal::config();
190  applyMainWindowSettings( config->group( QLatin1String( "KopeteEmailWindow" ) ) );
191 
192  d->sendInProgress = false;
193 
194  d->visible = false;
195  d->queuePosition = 0;
196 
197  setCaption( manager->displayName() );
198 
199  slotUpdateReplySend();
200 }
201 
202 KopeteEmailWindow::~KopeteEmailWindow()
203 {
204  emit( closing( this ) );
205 
206  // saves menubar, toolbar and statusbar setting
207  KConfigGroup cg( KGlobal::config(), QLatin1String( "KopeteEmailWindow" ) );
208  saveMainWindowSettings( cg );
209  cg.sync();
210 
211  delete d;
212 }
213 
214 void KopeteEmailWindow::initActions(void)
215 {
216  KActionCollection *coll = actionCollection();
217 
218  d->chatSend = new KAction( KIcon("mail-send"), i18n( "&Send Message" ), this );
219  coll->addAction( "chat_send", d->chatSend );
220  //Default to 'Return' for sending messages
221  d->chatSend->setShortcut( QKeySequence( Qt::Key_Return ) );
222  connect( d->chatSend, SIGNAL(triggered()), this, SLOT(slotReplySend()) );
223 
224  KStandardAction::quit ( this, SLOT(slotCloseView()), coll );
225 
226  KStandardAction::cut( d->editPart->widget(), SLOT(cut()), coll );
227  KStandardAction::copy( this, SLOT(slotCopy()), coll);
228  KStandardAction::paste( d->editPart->widget(), SLOT(paste()), coll );
229 
230  KAction* action;
231  action = new KAction( KIcon("preferences-desktop-font"), i18n( "&Set Font..." ), coll );
232  coll->addAction( "format_font", action );
233  connect( action, SIGNAL(triggered(bool)), d->editPart, SLOT(setFont()) );
234 
235  action = new KAction( KIcon("format-stroke-color"), i18n( "Set Text &Color..." ), coll );
236  coll->addAction( "format_color", action );
237  connect( action, SIGNAL(triggered()), d->editPart, SLOT(setForegroundColorColor()) );
238 
239  action = new KAction( KIcon("format-fill-color"), i18n( "Set &Background Color..." ), coll );
240  coll->addAction( "format_bgcolor", action );
241  connect( action, SIGNAL(triggered()), d->editPart, SLOT(setBackgroundColorColor()) );
242 
243  KStandardAction::showMenubar( this, SLOT(slotViewMenuBar()), coll );
244  setStandardToolBarMenuEnabled( true );
245 
246  d->actionSmileyMenu = new KopeteEmoticonAction( coll );
247  coll->addAction( "format_smiley", d->actionSmileyMenu );
248  d->actionSmileyMenu->setDelayed( false );
249  connect(d->actionSmileyMenu, SIGNAL(activated(QString)), this, SLOT(slotSmileyActivated(QString)));
250 
251  // add configure key bindings menu item
252  KStandardAction::keyBindings( guiFactory(), SLOT(configureShortcuts()), coll );
253  KStandardAction::configureToolbars(this, SLOT(slotConfToolbar()), coll);
254  //FIXME: no longer works?
255  KopeteStdAction::preferences( coll , "settings_prefs" );
256 
257  // The animated toolbarbutton
258  d->normalIcon = QPixmap( BarIcon( QLatin1String( "kopete" ) ) );
259 // d->animIcon = KGlobal::iconLoader()->loadMovie( QLatin1String( "newmessage" ), KIconLoader::Toolbar);
260  d->animIcon.setPaused(true);
261 
262  d->anim = new QLabel( this );
263  d->anim->setObjectName( QLatin1String("kde toolbar widget") );
264  d->anim->setMargin( 5 );
265  d->anim->setPixmap( d->normalIcon );
266 
267  KAction *spacerAction = new KToolBarSpacerAction( this );
268  spacerAction->setText( i18n( "Spacer for Animation" ) );
269  coll->addAction( "toolbar_spacer", spacerAction );
270 
271  KAction *animAction = new KAction( i18n("Toolbar Animation"), coll );
272  coll->addAction( "toolbar_animation", action );
273  animAction->setDefaultWidget( d->anim );
274 
275  setXMLFile( QLatin1String( "kopeteemailwindow.rc" ) );
276  createGUI( d->editPart );
277  //createGUI( QLatin1String( "kopeteemailwindow.rc" ) );
278  guiFactory()->addClient(m_manager);
279 }
280 
281 void KopeteEmailWindow::closeEvent( QCloseEvent *e )
282 {
283  // DO NOT call base class's closeEvent - see comment in KopeteApplication constructor for reason
284 
285  // Save settings if auto-save is enabled, and settings have changed
286  if ( settingsDirty() && autoSaveSettings() )
287  saveAutoSaveSettings();
288 
289  e->accept();
290 }
291 
292 void KopeteEmailWindow::slotViewMenuBar()
293 {
294  if( !menuBar()->isHidden() )
295  menuBar()->hide();
296  else
297  menuBar()->show();
298 }
299 
300 void KopeteEmailWindow::slotSmileyActivated(const QString &sm )
301 {
302  if ( !sm.isNull() )
303  d->editPart->addText( sm );
304 }
305 
306 void KopeteEmailWindow::slotConfToolbar()
307 {
308  KConfigGroup cg( KGlobal::config(), QLatin1String( "KopeteEmailWindow" ) );
309  saveMainWindowSettings( cg );
310  QPointer <KEditToolBar> dlg = new KEditToolBar(actionCollection());
311  dlg->setResourceFile("kopeteemailwindow.rc");
312  if (dlg->exec())
313  {
314  createGUI( d->editPart );
315  applyMainWindowSettings( cg );
316  }
317  delete dlg;
318 }
319 
320 void KopeteEmailWindow::slotCopy()
321 {
322 // kDebug(14010) ;
323 
324  if ( d->messagePart->hasSelection() )
325  d->messagePart->copy();
326  else
327  d->editPart->textEdit()->copy();
328 }
329 
330 void KopeteEmailWindow::appendMessage(Kopete::Message &message)
331 {
332  if( message.from() != m_manager->myself() )
333  {
334  if( d->mode == Send )
335  toggleMode( Reply );
336 
337  d->messageQueue.append( message );
338 
339  if( !d->showingMessage )
340  slotReadNext();
341  else
342  {
343  QPalette palette;
344  palette.setColor(d->btnReadNext->foregroundRole(), QColor("red") );
345  d->btnReadNext->setPalette(palette);
346 
347  updateNextButton();
348  }
349 
350  d->unreadMessageFrom = message.from()->metaContact() ?
351  message.from()->metaContact()->displayName() : message.from()->contactId();
352  QTimer::singleShot( 1000, this, SLOT(slotMarkMessageRead()) );
353  }
354 }
355 
356 void KopeteEmailWindow::slotMarkMessageRead()
357 {
358  d->unreadMessageFrom.clear();
359 }
360 
361 void KopeteEmailWindow::updateNextButton()
362 {
363  if( d->queuePosition == d->messageQueue.count() )
364  {
365  d->btnReadNext->setEnabled( false );
366 
367  QPalette palette;
368  palette.setColor(d->btnReadNext->foregroundRole(), KColorScheme(QPalette::Active, KColorScheme::View).foreground().color() );
369  d->btnReadNext->setPalette(palette);
370  }
371  else
372  d->btnReadNext->setEnabled( true );
373 
374  if( d->queuePosition == 1 )
375  d->btnReadPrev->setEnabled( false );
376  else
377  d->btnReadPrev->setEnabled( true );
378 
379  d->btnReadNext->setText( i18n( "(%1) Next >>", d->messageQueue.count() - d->queuePosition ) );
380 }
381 
382 void KopeteEmailWindow::slotUpdateReplySend()
383 {
384  bool canSend;
385  if( d->mode == Read )
386  canSend = true;
387  else
388  canSend = d->editPart->canSend();
389 
390  d->btnReplySend->setEnabled( canSend );
391  d->chatSend->setEnabled( canSend );
392 }
393 
394 void KopeteEmailWindow::slotReadNext()
395 {
396 // kDebug(14010) ;
397 
398  d->showingMessage = true;
399 
400  d->queuePosition++;
401 
402  writeMessage( (d->messageQueue[ d->queuePosition - 1 ]) );
403 
404  updateNextButton();
405 }
406 
407 void KopeteEmailWindow::slotReadPrev()
408 {
409 // kDebug(14010) ;
410 
411  d->showingMessage = true;
412 
413  d->queuePosition--;
414 
415  writeMessage( (d->messageQueue[ d->queuePosition - 1 ]) );
416 
417  updateNextButton();
418 }
419 
420 void KopeteEmailWindow::writeMessage( Kopete::Message &msg )
421 {
422  d->messagePart->clear();
423  d->messagePart->appendMessage( msg );
424 }
425 
426 void KopeteEmailWindow::sendMessage()
427 {
428  if ( !d->editPart->canSend() )
429  return;
430  d->sendInProgress = true;
431  d->anim->setMovie( &d->animIcon );
432  d->animIcon.setPaused(false);
433  d->editPart->widget()->setEnabled( false );
434  d->editPart->sendMessage();
435 }
436 
437 void KopeteEmailWindow::messageSentSuccessfully()
438 {
439  d->sendInProgress = false;
440  d->anim->setPixmap( d->normalIcon );
441  d->animIcon.setPaused(true);
442  closeView();
443 }
444 
445 bool KopeteEmailWindow::closeView( bool force )
446 {
447  int response = KMessageBox::Continue;
448 
449  if( !force )
450  {
451  if( m_manager->members().count() > 1 )
452  {
453  QString shortCaption = windowTitle();
454  if( shortCaption.length() > 40 )
455  shortCaption = shortCaption.left( 40 ) + QLatin1String("...");
456 
457  response = KMessageBox::warningContinueCancel(this, i18n("<qt>You are about to leave the groupchat session <b>%1</b>.<br />"
458  "You will not receive future messages from this conversation.</qt>", shortCaption), i18n("Closing Group Chat"),
459  KGuiItem( i18n("Cl&ose Chat") ), KStandardGuiItem::cancel(), QLatin1String("AskCloseGroupChat"));
460  }
461 
462  if( !d->unreadMessageFrom.isNull() && ( response == KMessageBox::Continue ) )
463  {
464  response = KMessageBox::warningContinueCancel(this, i18n("<qt>You have received a message from <b>%1</b> in the last "
465  "second. Are you sure you want to close this chat?</qt>", d->unreadMessageFrom), i18n("Unread Message"),
466  KGuiItem( i18n("Cl&ose Chat") ), KStandardGuiItem::cancel(), QLatin1String("AskCloseChatRecentMessage"));
467  }
468 
469  if( d->sendInProgress && ( response == KMessageBox::Continue ) )
470  {
471  response = KMessageBox::warningContinueCancel(this, i18n("You have a message send in progress, which will be "
472  "aborted if this chat is closed. Are you sure you want to close this chat?"), i18n("Message in Transit"),
473  KGuiItem( i18n("Cl&ose Chat") ), KStandardGuiItem::cancel(), QLatin1String("AskCloseChatMessageInProgress") );
474  }
475  }
476 
477  if( response == KMessageBox::Continue )
478  {
479  d->visible = false;
480  deleteLater();
481  return true;
482  }
483  else
484  {
485  d->editPart->widget()->setEnabled( true );
486  }
487 
488  return false;
489 }
490 
491 void KopeteEmailWindow::toggleMode( WindowMode newMode )
492 {
493  d->mode = newMode;
494 
495  switch( d->mode )
496  {
497  case Send:
498  d->btnReplySend->setText( i18n( "Send" ) );
499  d->editPart->widget()->show();
500  d->messagePart->view()->hide();
501  d->btnReadNext->hide();
502  d->btnReadPrev->hide();
503  break;
504  case Read:
505  d->btnReplySend->setText( i18n( "Reply" ) );
506  d->editPart->widget()->hide();
507  d->messagePart->view()->show();
508  d->btnReadNext->show();
509  d->btnReadPrev->show();
510  break;
511  case Reply:
512  QList<int> splitPercent;
513  // FIXME: should be saved and restored
514  splitPercent.append(50);
515  splitPercent.append(50);
516  d->btnReplySend->setText( i18n( "Send" ) );
517  d->editPart->widget()->show();
518  d->messagePart->view()->show();
519  d->btnReadNext->show();
520  d->btnReadPrev->show();
521  d->split->setSizes( splitPercent );
522  d->editPart->widget()->setFocus();
523  break;
524  }
525  slotUpdateReplySend();
526 }
527 
528 void KopeteEmailWindow::slotReplySend()
529 {
530  if( d->mode == Read )
531  toggleMode( Reply );
532  else
533  sendMessage();
534 }
535 
536 //FIXME: Activate bool no longer needed due to setActiveWindow not being allowed
537 void KopeteEmailWindow::raise(bool activate)
538 {
539  makeVisible();
540 #ifdef Q_WS_X11
541  if ( !KWindowSystem::windowInfo( winId(), NET::WMDesktop ).onAllDesktops() )
542  KWindowSystem::setOnDesktop( winId(), KWindowSystem::currentDesktop() );
543 #endif
544  KXmlGuiWindow::raise();
545 
546  /* Removed Nov 2003
547  According to Zack, the user double-clicking a contact is not valid reason for a non-pager
548  to grab window focus. While I don't agree with this, and it runs contradictory to every other
549  IM out there, commenting this code out to agree with KWin policy.
550 
551  Redirect any bugs relating to the widnow now not grabbing focus on clicking a contact to KWin.
552  - Jason K
553  */
554  //Will not activate window if user was typing
555  if(activate)
556  KWindowSystem::activateWindow( winId() );
557 }
558 
559 void KopeteEmailWindow::changeEvent( QEvent *e )
560 {
561  if( e->type() == QEvent::ActivationChange && isActiveWindow() )
562  emit( activated( static_cast<KopeteView*>(this) ) );
563 }
564 
565 void KopeteEmailWindow::makeVisible()
566 {
567 // kDebug(14010) ;
568  d->visible = true;
569  show();
570 }
571 
572 bool KopeteEmailWindow::isVisible()
573 {
574  return d->visible;
575 }
576 
577 Kopete::Message KopeteEmailWindow::currentMessage()
578 {
579  return d->editPart->contents();
580 }
581 
582 void KopeteEmailWindow::setCurrentMessage( const Kopete::Message &newMessage )
583 {
584  d->editPart->setContents( newMessage );
585 }
586 
587 void KopeteEmailWindow::slotCloseView()
588 {
589  closeView();
590 }
591 
592 
593 #include "kopeteemailwindow.moc"
594 
595 // vim: set noet ts=4 sts=4 sw=4:
596 
KPushButton
KVBox
KopeteEmailWindow::activated
void activated(KopeteView *view)
EmailWindowPlugin::createView
KopeteView * createView(Kopete::ChatSession *manager)
Definition: kopeteemailwindow.cpp:78
KopeteEmailWindow::setCurrentMessage
virtual void setCurrentMessage(const Kopete::Message &newMessage)
Definition: kopeteemailwindow.cpp:582
kopeteemailwindow.h
QWidget
manager
virtual Kopete::ChatSession * manager(Kopete::Contact::CanCreateFlags)
Definition: chatwindowconfig.cpp:94
ChatMessagePart
Definition: chatmessagepart.h:44
KopeteEmailWindow::Send
Definition: kopeteemailwindow.h:36
KopeteEmoticonAction
Definition: kopeteemoticonaction.h:28
QObject
K_PLUGIN_FACTORY
K_PLUGIN_FACTORY(KopeteAccountConfigFactory, registerPlugin< KopeteAccountConfig >();) KopeteAccountConfig
Definition: kopeteaccountconfig.cpp:56
KopeteEmailWindow::changeEvent
virtual void changeEvent(QEvent *e)
Definition: kopeteemailwindow.cpp:559
KopeteEmailWindow::~KopeteEmailWindow
~KopeteEmailWindow()
Definition: kopeteemailwindow.cpp:202
KopeteEmailWindow::makeVisible
virtual void makeVisible()
Definition: kopeteemailwindow.cpp:565
chattexteditpart.h
KopeteEmailWindow::currentMessage
virtual Kopete::Message currentMessage()
Definition: kopeteemailwindow.cpp:577
KopeteEmailWindow::isVisible
virtual bool isVisible()
Definition: kopeteemailwindow.cpp:572
KopeteEmailWindow::WindowMode
WindowMode
Definition: kopeteemailwindow.h:36
KopeteEmailWindow::Read
Definition: kopeteemailwindow.h:36
KopeteEmailWindow::appendMessage
virtual void appendMessage(Kopete::Message &message)
Definition: kopeteemailwindow.cpp:330
ChatTextEditPart
An instant message composition part.
Definition: chattexteditpart.h:61
EmailWindowPlugin
This is the class that makes the emailwindow a plugin.
Definition: kopeteemailwindow.h:94
chatmessagepart.h
KopeteEmailWindow::messageSent
void messageSent(Kopete::Message &message)
KopeteEmailWindow::closing
void closing(KopeteView *view)
KopeteEmailWindow::messageSentSuccessfully
virtual void messageSentSuccessfully()
Definition: kopeteemailwindow.cpp:437
KActionMenu
KopeteEmailWindow
Definition: kopeteemailwindow.h:31
KopeteEmailWindow::Reply
Definition: kopeteemailwindow.h:36
KopeteEmailWindow::KopeteEmailWindow
KopeteEmailWindow(Kopete::ChatSession *, EmailWindowPlugin *parent, bool foreignMessage)
Definition: kopeteemailwindow.cpp:109
KopeteEmailWindow::raise
virtual void raise(bool activate=false)
Definition: kopeteemailwindow.cpp:537
KopeteEmailWindow::sendMessage
virtual void sendMessage()
Definition: kopeteemailwindow.cpp:426
KAction
QLabel
KopeteEmailWindow::closeEvent
virtual void closeEvent(QCloseEvent *e)
Definition: kopeteemailwindow.cpp:281
KopeteEmailWindow::closeView
virtual bool closeView(bool force=false)
Definition: kopeteemailwindow.cpp:445
KopeteView
kopeteemoticonaction.h
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:53:41 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kopete/kopete

Skip menu "kopete/kopete"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdenetwork API Reference

Skip menu "kdenetwork API Reference"
  • kget
  • kopete
  •   kopete
  •   libkopete
  • krdc
  • krfb

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal