• 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.14
  • 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, SLOT(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  // FIXME: This code is not working. Slots setFont(), setForegroundColorColor() and setBackgroundColorColor do not exist
231  // Disable it for now
232 #if 0
233  KAction* action;
234  action = new KAction( KIcon("preferences-desktop-font"), i18n( "&Set Font..." ), coll );
235  coll->addAction( "format_font", action );
236  connect( action, SIGNAL(triggered(bool)), d->editPart, SLOT(setFont()) );
237 
238  action = new KAction( KIcon("format-stroke-color"), i18n( "Set Text &Color..." ), coll );
239  coll->addAction( "format_color", action );
240  connect( action, SIGNAL(triggered()), d->editPart, SLOT(setForegroundColorColor()) );
241 
242  action = new KAction( KIcon("format-fill-color"), i18n( "Set &Background Color..." ), coll );
243  coll->addAction( "format_bgcolor", action );
244  connect( action, SIGNAL(triggered()), d->editPart, SLOT(setBackgroundColorColor()) );
245 #endif
246 
247  KStandardAction::showMenubar( this, SLOT(slotViewMenuBar()), coll );
248  setStandardToolBarMenuEnabled( true );
249 
250  d->actionSmileyMenu = new KopeteEmoticonAction( coll );
251  coll->addAction( "format_smiley", d->actionSmileyMenu );
252  d->actionSmileyMenu->setDelayed( false );
253  connect(d->actionSmileyMenu, SIGNAL(activated(QString)), this, SLOT(slotSmileyActivated(QString)));
254 
255  // add configure key bindings menu item
256  KStandardAction::keyBindings( guiFactory(), SLOT(configureShortcuts()), coll );
257  KStandardAction::configureToolbars(this, SLOT(slotConfToolbar()), coll);
258  //FIXME: no longer works?
259  KopeteStdAction::preferences( coll , "settings_prefs" );
260 
261  // The animated toolbarbutton
262  d->normalIcon = QPixmap( BarIcon( QLatin1String( "kopete" ) ) );
263 // d->animIcon = KGlobal::iconLoader()->loadMovie( QLatin1String( "newmessage" ), KIconLoader::Toolbar);
264  d->animIcon.setPaused(true);
265 
266  d->anim = new QLabel( this );
267  d->anim->setObjectName( QLatin1String("kde toolbar widget") );
268  d->anim->setMargin( 5 );
269  d->anim->setPixmap( d->normalIcon );
270 
271  KAction *spacerAction = new KToolBarSpacerAction( this );
272  spacerAction->setText( i18n( "Spacer for Animation" ) );
273  coll->addAction( "toolbar_spacer", spacerAction );
274 
275  KAction *animAction = new KAction( i18n("Toolbar Animation"), coll );
276  coll->addAction( "toolbar_animation", animAction );
277  animAction->setDefaultWidget( d->anim );
278 
279  setXMLFile( QLatin1String( "kopeteemailwindow.rc" ) );
280  createGUI( d->editPart );
281  //createGUI( QLatin1String( "kopeteemailwindow.rc" ) );
282  guiFactory()->addClient(m_manager);
283 }
284 
285 void KopeteEmailWindow::closeEvent( QCloseEvent *e )
286 {
287  // DO NOT call base class's closeEvent - see comment in KopeteApplication constructor for reason
288 
289  // Save settings if auto-save is enabled, and settings have changed
290  if ( settingsDirty() && autoSaveSettings() )
291  saveAutoSaveSettings();
292 
293  e->accept();
294 }
295 
296 void KopeteEmailWindow::slotViewMenuBar()
297 {
298  if( !menuBar()->isHidden() )
299  menuBar()->hide();
300  else
301  menuBar()->show();
302 }
303 
304 void KopeteEmailWindow::slotSmileyActivated(const QString &sm )
305 {
306  if ( !sm.isNull() )
307  d->editPart->addText( sm );
308 }
309 
310 void KopeteEmailWindow::slotConfToolbar()
311 {
312  KConfigGroup cg( KGlobal::config(), QLatin1String( "KopeteEmailWindow" ) );
313  saveMainWindowSettings( cg );
314  QPointer <KEditToolBar> dlg = new KEditToolBar(actionCollection());
315  dlg->setResourceFile("kopeteemailwindow.rc");
316  if (dlg->exec())
317  {
318  createGUI( d->editPart );
319  applyMainWindowSettings( cg );
320  }
321  delete dlg;
322 }
323 
324 void KopeteEmailWindow::slotCopy()
325 {
326 // kDebug(14010) ;
327 
328  if ( d->messagePart->hasSelection() )
329  d->messagePart->copy();
330  else
331  d->editPart->textEdit()->copy();
332 }
333 
334 void KopeteEmailWindow::appendMessage(Kopete::Message &message)
335 {
336  if( message.from() != m_manager->myself() )
337  {
338  if( d->mode == Send )
339  toggleMode( Reply );
340 
341  d->messageQueue.append( message );
342 
343  if( !d->showingMessage )
344  slotReadNext();
345  else
346  {
347  QPalette palette;
348  palette.setColor(d->btnReadNext->foregroundRole(), QColor("red") );
349  d->btnReadNext->setPalette(palette);
350 
351  updateNextButton();
352  }
353 
354  d->unreadMessageFrom = message.from()->metaContact() ?
355  message.from()->metaContact()->displayName() : message.from()->contactId();
356  QTimer::singleShot( 1000, this, SLOT(slotMarkMessageRead()) );
357  }
358 }
359 
360 void KopeteEmailWindow::slotMarkMessageRead()
361 {
362  d->unreadMessageFrom.clear();
363 }
364 
365 void KopeteEmailWindow::updateNextButton()
366 {
367  if( d->queuePosition == d->messageQueue.count() )
368  {
369  d->btnReadNext->setEnabled( false );
370 
371  QPalette palette;
372  palette.setColor(d->btnReadNext->foregroundRole(), KColorScheme(QPalette::Active, KColorScheme::View).foreground().color() );
373  d->btnReadNext->setPalette(palette);
374  }
375  else
376  d->btnReadNext->setEnabled( true );
377 
378  if( d->queuePosition == 1 )
379  d->btnReadPrev->setEnabled( false );
380  else
381  d->btnReadPrev->setEnabled( true );
382 
383  d->btnReadNext->setText( i18n( "(%1) Next >>", d->messageQueue.count() - d->queuePosition ) );
384 }
385 
386 void KopeteEmailWindow::slotUpdateReplySend()
387 {
388  bool canSend;
389  if( d->mode == Read )
390  canSend = true;
391  else
392  canSend = d->editPart->canSend();
393 
394  d->btnReplySend->setEnabled( canSend );
395  d->chatSend->setEnabled( canSend );
396 }
397 
398 void KopeteEmailWindow::slotReadNext()
399 {
400 // kDebug(14010) ;
401 
402  d->showingMessage = true;
403 
404  d->queuePosition++;
405 
406  writeMessage( (d->messageQueue[ d->queuePosition - 1 ]) );
407 
408  updateNextButton();
409 }
410 
411 void KopeteEmailWindow::slotReadPrev()
412 {
413 // kDebug(14010) ;
414 
415  d->showingMessage = true;
416 
417  d->queuePosition--;
418 
419  writeMessage( (d->messageQueue[ d->queuePosition - 1 ]) );
420 
421  updateNextButton();
422 }
423 
424 void KopeteEmailWindow::writeMessage( Kopete::Message &msg )
425 {
426  d->messagePart->clear();
427  d->messagePart->appendMessage( msg );
428 }
429 
430 void KopeteEmailWindow::sendMessage()
431 {
432  if ( !d->editPart->canSend() )
433  return;
434  d->sendInProgress = true;
435  d->anim->setMovie( &d->animIcon );
436  d->animIcon.setPaused(false);
437  d->editPart->widget()->setEnabled( false );
438  d->editPart->sendMessage();
439 }
440 
441 void KopeteEmailWindow::messageSentSuccessfully()
442 {
443  d->sendInProgress = false;
444  d->anim->setPixmap( d->normalIcon );
445  d->animIcon.setPaused(true);
446  closeView();
447 }
448 
449 bool KopeteEmailWindow::closeView( bool force )
450 {
451  int response = KMessageBox::Continue;
452 
453  if( !force )
454  {
455  if( m_manager->members().count() > 1 )
456  {
457  QString shortCaption = windowTitle();
458  if( shortCaption.length() > 40 )
459  shortCaption = shortCaption.left( 40 ) + QLatin1String("...");
460 
461  response = KMessageBox::warningContinueCancel(this, i18n("<qt>You are about to leave the groupchat session <b>%1</b>.<br />"
462  "You will not receive future messages from this conversation.</qt>", shortCaption), i18n("Closing Group Chat"),
463  KGuiItem( i18n("Cl&ose Chat") ), KStandardGuiItem::cancel(), QLatin1String("AskCloseGroupChat"));
464  }
465 
466  if( !d->unreadMessageFrom.isNull() && ( response == KMessageBox::Continue ) )
467  {
468  response = KMessageBox::warningContinueCancel(this, i18n("<qt>You have received a message from <b>%1</b> in the last "
469  "second. Are you sure you want to close this chat?</qt>", d->unreadMessageFrom), i18n("Unread Message"),
470  KGuiItem( i18n("Cl&ose Chat") ), KStandardGuiItem::cancel(), QLatin1String("AskCloseChatRecentMessage"));
471  }
472 
473  if( d->sendInProgress && ( response == KMessageBox::Continue ) )
474  {
475  response = KMessageBox::warningContinueCancel(this, i18n("You have a message send in progress, which will be "
476  "aborted if this chat is closed. Are you sure you want to close this chat?"), i18n("Message in Transit"),
477  KGuiItem( i18n("Cl&ose Chat") ), KStandardGuiItem::cancel(), QLatin1String("AskCloseChatMessageInProgress") );
478  }
479  }
480 
481  if( response == KMessageBox::Continue )
482  {
483  d->visible = false;
484  deleteLater();
485  return true;
486  }
487  else
488  {
489  d->editPart->widget()->setEnabled( true );
490  }
491 
492  return false;
493 }
494 
495 void KopeteEmailWindow::toggleMode( WindowMode newMode )
496 {
497  d->mode = newMode;
498 
499  switch( d->mode )
500  {
501  case Send:
502  d->btnReplySend->setText( i18n( "Send" ) );
503  d->editPart->widget()->show();
504  d->messagePart->view()->hide();
505  d->btnReadNext->hide();
506  d->btnReadPrev->hide();
507  break;
508  case Read:
509  d->btnReplySend->setText( i18n( "Reply" ) );
510  d->editPart->widget()->hide();
511  d->messagePart->view()->show();
512  d->btnReadNext->show();
513  d->btnReadPrev->show();
514  break;
515  case Reply:
516  QList<int> splitPercent;
517  // FIXME: should be saved and restored
518  splitPercent.append(50);
519  splitPercent.append(50);
520  d->btnReplySend->setText( i18n( "Send" ) );
521  d->editPart->widget()->show();
522  d->messagePart->view()->show();
523  d->btnReadNext->show();
524  d->btnReadPrev->show();
525  d->split->setSizes( splitPercent );
526  d->editPart->widget()->setFocus();
527  break;
528  }
529  slotUpdateReplySend();
530 }
531 
532 void KopeteEmailWindow::slotReplySend()
533 {
534  if( d->mode == Read )
535  toggleMode( Reply );
536  else
537  sendMessage();
538 }
539 
540 //FIXME: Activate bool no longer needed due to setActiveWindow not being allowed
541 void KopeteEmailWindow::raise(bool activate)
542 {
543  makeVisible();
544 #ifdef Q_WS_X11
545  if ( !KWindowSystem::windowInfo( winId(), NET::WMDesktop ).onAllDesktops() )
546  KWindowSystem::setOnDesktop( winId(), KWindowSystem::currentDesktop() );
547 #endif
548  KXmlGuiWindow::raise();
549 
550  /* Removed Nov 2003
551  According to Zack, the user double-clicking a contact is not valid reason for a non-pager
552  to grab window focus. While I don't agree with this, and it runs contradictory to every other
553  IM out there, commenting this code out to agree with KWin policy.
554 
555  Redirect any bugs relating to the widnow now not grabbing focus on clicking a contact to KWin.
556  - Jason K
557  */
558  //Will not activate window if user was typing
559  if(activate)
560  KWindowSystem::activateWindow( winId() );
561 }
562 
563 void KopeteEmailWindow::changeEvent( QEvent *e )
564 {
565  if( e->type() == QEvent::ActivationChange && isActiveWindow() )
566  emit( activated( static_cast<KopeteView*>(this) ) );
567 }
568 
569 void KopeteEmailWindow::makeVisible()
570 {
571 // kDebug(14010) ;
572  d->visible = true;
573  show();
574 }
575 
576 bool KopeteEmailWindow::isVisible()
577 {
578  return d->visible;
579 }
580 
581 Kopete::Message KopeteEmailWindow::currentMessage()
582 {
583  return d->editPart->contents();
584 }
585 
586 void KopeteEmailWindow::setCurrentMessage( const Kopete::Message &newMessage )
587 {
588  d->editPart->setContents( newMessage );
589 }
590 
591 void KopeteEmailWindow::slotCloseView()
592 {
593  closeView();
594 }
595 
596 
597 #include "kopeteemailwindow.moc"
598 
599 // vim: set noet ts=4 sts=4 sw=4:
600 
KPushButton
QEvent
QWidget
QEvent::type
Type type() const
KVBox
KopeteEmailWindow::activated
void activated(KopeteView *view)
QPalette::setColor
void setColor(ColorGroup group, ColorRole role, const QColor &color)
EmailWindowPlugin::createView
KopeteView * createView(Kopete::ChatSession *manager)
Definition: kopeteemailwindow.cpp:78
KopeteEmailWindow::setCurrentMessage
virtual void setCurrentMessage(const Kopete::Message &newMessage)
Definition: kopeteemailwindow.cpp:586
kopeteemailwindow.h
QSizePolicy
manager
virtual Kopete::ChatSession * manager(Kopete::Contact::CanCreateFlags)
Definition: chatwindowconfig.cpp:94
ChatMessagePart
Definition: chatmessagepart.h:44
QPointer
QMovie
KopeteEmailWindow::Send
Definition: kopeteemailwindow.h:36
QHBoxLayout
KopeteEmoticonAction
Definition: kopeteemoticonaction.h:28
QString::isNull
bool isNull() const
K_PLUGIN_FACTORY
K_PLUGIN_FACTORY(KopeteAccountConfigFactory, registerPlugin< KopeteAccountConfig >();) KopeteAccountConfig
Definition: kopeteaccountconfig.cpp:56
KopeteEmailWindow::changeEvent
virtual void changeEvent(QEvent *e)
Definition: kopeteemailwindow.cpp:563
KopeteEmailWindow::~KopeteEmailWindow
~KopeteEmailWindow()
Definition: kopeteemailwindow.cpp:202
QCloseEvent
KopeteEmailWindow::makeVisible
virtual void makeVisible()
Definition: kopeteemailwindow.cpp:569
chattexteditpart.h
QBoxLayout::addWidget
void addWidget(QWidget *widget, int stretch, QFlags< Qt::AlignmentFlag > alignment)
KopeteEmailWindow::currentMessage
virtual Kopete::Message currentMessage()
Definition: kopeteemailwindow.cpp:581
QList::append
void append(const T &value)
KopeteEmailWindow::isVisible
virtual bool isVisible()
Definition: kopeteemailwindow.cpp:576
KopeteEmailWindow::WindowMode
WindowMode
Definition: kopeteemailwindow.h:36
QObject
KopeteEmailWindow::Read
Definition: kopeteemailwindow.h:36
KopeteEmailWindow::appendMessage
virtual void appendMessage(Kopete::Message &message)
Definition: kopeteemailwindow.cpp:334
ChatTextEditPart
An instant message composition part.
Definition: chattexteditpart.h:61
QString
QList< Kopete::Message >
QColor
QLayout::setMargin
void setMargin(int margin)
QWidget::setSizePolicy
void setSizePolicy(QSizePolicy)
EmailWindowPlugin
This is the class that makes the emailwindow a plugin.
Definition: kopeteemailwindow.h:94
chatmessagepart.h
QPixmap
QEvent::accept
void accept()
QSize
KopeteEmailWindow::messageSent
void messageSent(Kopete::Message &message)
KopeteEmailWindow::closing
void closing(KopeteView *view)
KopeteEmailWindow::messageSentSuccessfully
virtual void messageSentSuccessfully()
Definition: kopeteemailwindow.cpp:441
QSplitter
KActionMenu
KopeteEmailWindow
Definition: kopeteemailwindow.h:31
KopeteEmailWindow::Reply
Definition: kopeteemailwindow.h:36
QLatin1String
QKeySequence
QBoxLayout::addStretch
void addStretch(int stretch)
KopeteEmailWindow::KopeteEmailWindow
KopeteEmailWindow(Kopete::ChatSession *, EmailWindowPlugin *parent, bool foreignMessage)
Definition: kopeteemailwindow.cpp:109
KopeteEmailWindow::raise
virtual void raise(bool activate=false)
Definition: kopeteemailwindow.cpp:541
KopeteEmailWindow::sendMessage
virtual void sendMessage()
Definition: kopeteemailwindow.cpp:430
KAction
KopeteEmailWindow::closeEvent
virtual void closeEvent(QCloseEvent *e)
Definition: kopeteemailwindow.cpp:285
QString::length
int length() const
QString::left
QString left(int n) const
KopeteEmailWindow::closeView
virtual bool closeView(bool force=false)
Definition: kopeteemailwindow.cpp:449
KopeteView
QLabel
QPalette
QBoxLayout::setSpacing
void setSpacing(int spacing)
kopeteemoticonaction.h
QTimer::singleShot
singleShot
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:29:08 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