• 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
  • statusmenu
kopetestatuseditaction.cpp
Go to the documentation of this file.
1 /*
2  kopetestatuseditaction.cpp - Kopete Status Edit Action
3 
4  Copyright (c) 2008 by Roman Jarosz <kedgedev@centrum.cz>
5  Kopete (c) 2008 by the Kopete developers <kopete-devel@kde.org>
6 
7  *************************************************************************
8  * *
9  * This library is free software; you can redistribute it and/or *
10  * modify it under the terms of the GNU Lesser General Public *
11  * License as published by the Free Software Foundation; either *
12  * version 2 of the License, or (at your option) any later version. *
13  * *
14  *************************************************************************
15 */
16 #include "kopetestatuseditaction.h"
17 
18 
19 #include <QKeyEvent>
20 #include <QMenu>
21 
22 #include <kopetestatusmessage.h>
23 
24 #include "ui_kopetestatuseditwidget_base.h"
25 
26 namespace Kopete
27 {
28 
29 namespace UI
30 {
31 
32 StatusEditWidget::StatusEditWidget( QWidget *parent )
33 : QWidget( parent )
34 , ui( new Ui::KopeteStatusEditWidget )
35 {
36  ui->setupUi( this );
37 
38  ui->statusTitle->setClearButtonShown( true );
39  ui->buttonBox->addButton( KGuiItem( i18n( "C&lear" ), "edit-clear" ), QDialogButtonBox::DestructiveRole, this, SLOT(clearClicked()) );
40 
41  setFocusPolicy( Qt::StrongFocus );
42  setFocusProxy( ui->statusTitle );
43 
44  connect( ui->buttonBox, SIGNAL(accepted()), this, SLOT(changeClicked()) );
45 }
46 
47 StatusEditWidget::~StatusEditWidget()
48 {
49  delete ui;
50 }
51 
52 KDialogButtonBox *StatusEditWidget::buttonBox() const
53 {
54  return ui->buttonBox;
55 }
56 
57 Kopete::StatusMessage StatusEditWidget::statusMessage() const
58 {
59  Kopete::StatusMessage statusMessage;
60  statusMessage.setTitle( ui->statusTitle->text() );
61  statusMessage.setMessage( ui->statusMessage->toPlainText() );
62  return statusMessage;
63 }
64 
65 void StatusEditWidget::setStatusMessage( const Kopete::StatusMessage& statusMessage )
66 {
67  ui->statusTitle->setText( statusMessage.title() );
68  ui->statusMessage->setPlainText( statusMessage.message() );
69 }
70 
71 void StatusEditWidget::changeClicked()
72 {
73  emit statusChanged( statusMessage() );
74 }
75 
76 void StatusEditWidget::clearClicked()
77 {
78  setStatusMessage( Kopete::StatusMessage() );
79  emit statusChanged( statusMessage() );
80 }
81 
82 // FIXME: This should probably be in the action, implemented as an event-filter
83 // Prevents menu closing on widget click
84 void StatusEditWidget::mouseReleaseEvent( QMouseEvent * )
85 {}
86 
87 void StatusEditWidget::keyPressEvent( QKeyEvent* event )
88 {
89  // Change status on enter key press
90  if ( event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter )
91  {
92  changeClicked();
93  event->accept();
94  return;
95  }
96 
97  QWidget::keyPressEvent( event );
98 }
99 
100 StatusEditAction::StatusEditAction( QObject *parent )
101 : QWidgetAction( parent )
102 {
103  mStatusEditWidget = new StatusEditWidget();
104  setDefaultWidget( mStatusEditWidget );
105 
106  connect(mStatusEditWidget, SIGNAL(statusChanged(Kopete::StatusMessage)), SLOT(hideMenu()) );
107  connect(mStatusEditWidget, SIGNAL(statusChanged(Kopete::StatusMessage)), SIGNAL(statusChanged(Kopete::StatusMessage)) );
108 }
109 
110 Kopete::StatusMessage StatusEditAction::statusMessage() const
111 {
112  return mStatusEditWidget->statusMessage();
113 }
114 
115 void StatusEditAction::setStatusMessage( const Kopete::StatusMessage& statusMessage )
116 {
117  mStatusEditWidget->setStatusMessage( statusMessage );
118 }
119 
120 void StatusEditAction::hideMenu()
121 {
122  // Hack to hide menu
123  QMenu* menu = qobject_cast<QMenu*>(mStatusEditWidget->parent());
124  if ( menu )
125  {
126  menu->setActiveAction(this);
127  mStatusEditWidget->parent()->event( new QKeyEvent(QEvent::KeyPress, Qt::Key_Return, Qt::NoModifier) );
128  mStatusEditWidget->parent()->event( new QKeyEvent(QEvent::KeyRelease, Qt::Key_Return, Qt::NoModifier) );
129  }
130 }
131 
132 StatusEditDialog::StatusEditDialog( QWidget *parent )
133 : KDialog(parent)
134 , mStatusEditWidget( new StatusEditWidget )
135 {
136  setMainWidget( mStatusEditWidget );
137  setCaption( i18n("Edit Message") );
138 
139  // We use the buttonbox from the edit widget
140  setButtons(KDialog::None);
141  KDialogButtonBox *buttonBox = mStatusEditWidget->buttonBox();
142  buttonBox->setStandardButtons( buttonBox->standardButtons() | QDialogButtonBox::Cancel );
143  connect(buttonBox, SIGNAL(rejected()), SLOT(reject()) );
144 
145  connect(mStatusEditWidget, SIGNAL(statusChanged(Kopete::StatusMessage)), SLOT(accept()) );
146 }
147 
148 Kopete::StatusMessage StatusEditDialog::statusMessage() const
149 {
150  return mStatusEditWidget->statusMessage();
151 }
152 
153 void StatusEditDialog::setStatusMessage( const Kopete::StatusMessage& statusMessage )
154 {
155  mStatusEditWidget->setStatusMessage( statusMessage );
156 }
157 
158 
159 }
160 
161 }
162 
163 #include "kopetestatuseditaction.moc"
Kopete::UI::StatusEditAction::statusMessage
Kopete::StatusMessage statusMessage() const
Returns Kopete::StatusMessage.
Definition: kopetestatuseditaction.cpp:110
Kopete::UI::StatusEditWidget::keyPressEvent
virtual void keyPressEvent(QKeyEvent *event)
Definition: kopetestatuseditaction.cpp:87
Kopete::UI::StatusEditWidget::buttonBox
KDialogButtonBox * buttonBox() const
Definition: kopetestatuseditaction.cpp:52
kopetestatuseditaction.h
QWidget
KDialog
Kopete::UI::StatusEditAction::StatusEditAction
StatusEditAction(QObject *parent)
StatusEditAction constructor Action for changing status title and message.
Definition: kopetestatuseditaction.cpp:100
QObject
Kopete::UI::StatusEditAction::statusChanged
void statusChanged(const Kopete::StatusMessage &statusMessage)
This signal emitted after status message was changed.
Kopete::UI::StatusEditDialog::StatusEditDialog
StatusEditDialog(QWidget *parent=0)
Definition: kopetestatuseditaction.cpp:132
Kopete::UI::StatusEditWidget::~StatusEditWidget
~StatusEditWidget()
Definition: kopetestatuseditaction.cpp:47
Kopete::UI::StatusEditWidget::statusMessage
Kopete::StatusMessage statusMessage() const
Returns Kopete::StatusMessage.
Definition: kopetestatuseditaction.cpp:57
Kopete::UI::StatusEditWidget::StatusEditWidget
StatusEditWidget(QWidget *parent=0)
Definition: kopetestatuseditaction.cpp:32
Kopete::UI::StatusEditAction::setStatusMessage
void setStatusMessage(const Kopete::StatusMessage &statusMessage)
Set status message to statusMessage.
Definition: kopetestatuseditaction.cpp:115
Kopete::UI::StatusEditWidget::statusChanged
void statusChanged(const Kopete::StatusMessage &statusMessage)
This signal emitted after status message was changed.
QWidgetAction
Kopete::UI::StatusEditDialog::setStatusMessage
void setStatusMessage(const Kopete::StatusMessage &statusMessage)
Set status message to statusMessage.
Definition: kopetestatuseditaction.cpp:153
Kopete::UI::StatusEditWidget::setStatusMessage
void setStatusMessage(const Kopete::StatusMessage &statusMessage)
Set status message to statusMessage.
Definition: kopetestatuseditaction.cpp:65
Kopete::UI::StatusEditWidget::mouseReleaseEvent
virtual void mouseReleaseEvent(QMouseEvent *)
Definition: kopetestatuseditaction.cpp:84
Kopete::UI::StatusEditWidget
Definition: kopetestatuseditaction.h:38
Kopete::UI::StatusEditDialog::statusMessage
Kopete::StatusMessage statusMessage() const
Returns Kopete::StatusMessage.
Definition: kopetestatuseditaction.cpp:148
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