2
kopetestatuseditaction.cpp - Kopete Status Edit Action
4
Copyright (c) 2008 by Roman Jarosz <kedgedev@centrum.cz>
5
Kopete (c) 2008 by the Kopete developers <kopete-devel@kde.org>
7
*************************************************************************
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. *
14
*************************************************************************
16
#include "kopetestatuseditaction.h"
22
#include <kopetestatusmessage.h>
24
#include "ui_kopetestatuseditwidget_base.h"
32
StatusEditWidget::StatusEditWidget( QWidget *parent )
34
, ui( new Ui::KopeteStatusEditWidget )
38
ui->statusTitle->setClearButtonShown( true );
39
ui->buttonBox->addButton( KGuiItem( i18n( "C&lear" ), "edit-clear" ), QDialogButtonBox::DestructiveRole, this, SLOT(clearClicked()) );
41
setFocusPolicy( Qt::StrongFocus );
42
setFocusProxy( ui->statusTitle );
44
connect( ui->buttonBox, SIGNAL(accepted()), this, SLOT(changeClicked()) );
47
StatusEditWidget::~StatusEditWidget()
52
KDialogButtonBox *StatusEditWidget::buttonBox() const
57
Kopete::StatusMessage StatusEditWidget::statusMessage() const
59
Kopete::StatusMessage statusMessage;
60
statusMessage.setTitle( ui->statusTitle->text() );
61
statusMessage.setMessage( ui->statusMessage->toPlainText() );
65
void StatusEditWidget::setStatusMessage( const Kopete::StatusMessage& statusMessage )
67
ui->statusTitle->setText( statusMessage.title() );
68
ui->statusMessage->setPlainText( statusMessage.message() );
71
void StatusEditWidget::changeClicked()
73
emit statusChanged( statusMessage() );
76
void StatusEditWidget::clearClicked()
78
setStatusMessage( Kopete::StatusMessage() );
79
emit statusChanged( statusMessage() );
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 * )
87
void StatusEditWidget::keyPressEvent( QKeyEvent* event )
89
// Change status on enter key press
90
if ( event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter )
97
QWidget::keyPressEvent( event );
100
StatusEditAction::StatusEditAction( QObject *parent )
101
: QWidgetAction( parent )
103
mStatusEditWidget = new StatusEditWidget();
104
setDefaultWidget( mStatusEditWidget );
106
connect(mStatusEditWidget, SIGNAL(statusChanged(Kopete::StatusMessage)), SLOT(hideMenu()) );
107
connect(mStatusEditWidget, SIGNAL(statusChanged(Kopete::StatusMessage)), SIGNAL(statusChanged(Kopete::StatusMessage)) );
110
Kopete::StatusMessage StatusEditAction::statusMessage() const
112
return mStatusEditWidget->statusMessage();
115
void StatusEditAction::setStatusMessage( const Kopete::StatusMessage& statusMessage )
117
mStatusEditWidget->setStatusMessage( statusMessage );
120
void StatusEditAction::hideMenu()
123
QMenu* menu = qobject_cast<QMenu*>(mStatusEditWidget->parent());
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) );
132
StatusEditDialog::StatusEditDialog( QWidget *parent )
134
, mStatusEditWidget( new StatusEditWidget )
136
setMainWidget( mStatusEditWidget );
137
setCaption( i18n("Edit Message") );
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()) );
145
connect(mStatusEditWidget, SIGNAL(statusChanged(Kopete::StatusMessage)), SLOT(accept()) );
148
Kopete::StatusMessage StatusEditDialog::statusMessage() const
150
return mStatusEditWidget->statusMessage();
153
void StatusEditDialog::setStatusMessage( const Kopete::StatusMessage& statusMessage )
155
mStatusEditWidget->setStatusMessage( statusMessage );
163
#include "kopetestatuseditaction.moc"