TwitterMicroBlog plugin made operational.
[choqok:choqok-obsolete.git] / libchoqok / ui / composerwidget.cpp
1 /*
2 This file is part of Choqok, the KDE micro-blogging client
3
4 Copyright (C) 2008-2009 Mehrdad Momeny <mehrdad.momeny@gmail.com>
5
6 This program is free software; you can redistribute it and/or
7 modify it under the terms of the GNU General Public License as
8 published by the Free Software Foundation; either version 2 of
9 the License or (at your option) version 3 or any later version
10 accepted by the membership of KDE e.V. (or its successor approved
11 by the membership of KDE e.V.), which shall act as a proxy
12 defined in Section 14 of version 3 of the license.
13
14
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
19
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, see http://www.gnu.org/licenses/
22 */
23 #include "composerwidget.h"
24 #include "choqoktextedit.h"
25 #include "account.h"
26 #include <microblog.h>
27 #include <QHBoxLayout>
28 #include <KDebug>
29
30 namespace Choqok
31 {
32
33 ComposerWidget::ComposerWidget(Account *account, QWidget* parent, Qt::WindowFlags f /*= 0*/)
34     : QWidget(parent, f),editor(new TextEdit(account->microblog()->postCharLimit(), this)),
35     mCurrentAccount(account)
36 {
37     QHBoxLayout *layout = new QHBoxLayout(this);
38     layout->addWidget(editor);
39     connect( editor, SIGNAL(returnPressed(QString)), SLOT(submitPost(QString)));
40     connect(mCurrentAccount->microblog(), SIGNAL(postCreated(Post*)), SLOT(slotPostSubmited(Post*)));
41     connect(editor, SIGNAL(textChanged()), SLOT(editorTextChanged()));
42     editorTextChanged();
43 }
44
45 ComposerWidget::~ComposerWidget()
46 {}
47
48 void ComposerWidget::setText(const QString &text)
49 {
50     editor->setPlainText(text);
51 }
52
53 void ComposerWidget::submitPost( const QString &text )
54 {
55     Post *ps = new Post;
56     ps->content = text;
57     mCurrentAccount->microblog()->createPost(ps);
58     editor->setEnabled(false);
59 }
60
61 void ComposerWidget::slotPostSubmited(Post *post)
62 {
63     if( post->content == editor->toPlainText() ) {
64         kDebug();
65         editor->clear();
66         editor->setEnabled(true);
67     }
68 }
69
70 void ComposerWidget::editorTextChanged()
71 {
72     if(editor->toPlainText().length())
73         editor->setMaximumHeight(80);
74     else
75         editor->setMaximumHeight(30);
76 }
77
78 }