initial version
[kumushedit] / kumushedit.cpp
1 #include <QVBoxLayout>
2 #include <QTextEdit>
3 #include <QTextCursor>
4 #include <QTextCharFormat>
5 #include <QFileDialog>
6 #include <QTextStream>
7 #include <QClipboard>
8 #include <QDebug>
9 #include <QApplication>
10
11 #include "kumushedit.h"
12
13 KumushEdit::KumushEdit(QWidget *parent) :
14     QWidget(parent)
15 {
16     QVBoxLayout *layout = new QVBoxLayout;
17     createTextEdit();
18     layout->addWidget(mTextEdit);
19     createVKB();
20     layout->addWidget(mVKB);
21     layout->setSizeConstraint(QLayout::SetMaximumSize);
22     layout->setSpacing(0);
23     this->setLayout(layout);
24     connect(mVKB, SIGNAL(VKBButtonClicked(QString)), this, SLOT(VKBButtonClicked(QString)));
25     connect(mVKB, SIGNAL(openButtonClicked()), this, SLOT(openButtonClicked()));
26     connect(mVKB, SIGNAL(saveButtonClicked()), this, SLOT(saveButtonClicked()));
27     connect(mVKB, SIGNAL(copyButtonClicked()), this, SLOT(copyButtonClicked()));
28     connect(mVKB, SIGNAL(pasteButtonClicked()), this, SLOT(pasteButtonClicked()));
29     connect(mVKB, SIGNAL(fwButtonClicked()), this, SLOT(fwButtonClicked()));
30     connect(mVKB, SIGNAL(bwButtonClicked()), this, SLOT(bwButtonClicked()));
31     connect(mVKB, SIGNAL(bspaceButtonClicked()), this, SLOT(bspaceButtonClicked()));
32 }
33
34 KumushEdit::~KumushEdit()
35 {
36 }
37
38 void KumushEdit::createTextEdit()
39 {
40     mTextEdit = new QTextEdit;
41 }
42
43 void KumushEdit::createVKB()
44 {
45     mVKB = new VKB;
46 }
47
48 void KumushEdit::VKBButtonClicked(QString value)
49 {
50     QTextCursor cursor = mTextEdit->textCursor();
51     QTextCharFormat textFormat = cursor.charFormat();
52     textFormat.setFontFamily("UyghurEdit Riwaj");
53     cursor.insertText(value, textFormat);
54     mTextEdit->setFocus();
55     mTextEdit->ensureCursorVisible();
56 }
57
58 void KumushEdit::openButtonClicked()
59 {
60     fileName = QFileDialog::getOpenFileName(this, "Hojjetni Tallang", NULL, "Tekist Hojjetliri (*.txt)");
61     QFile file(fileName, this);
62     if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
63         return;
64     mTextEdit->clear();
65     QTextCursor cursor = mTextEdit->textCursor();
66     QTextCharFormat textFormat = cursor.charFormat();
67     textFormat.setFontFamily("UyghurEdit Riwaj");
68     QTextStream in(&file);
69     while (!in.atEnd()) {
70         QString line = in.readLine() + "\n";
71         cursor.insertText(line, textFormat);
72     }
73     file.close();
74     mTextEdit->setFocus();
75 }
76
77 void KumushEdit::saveButtonClicked()
78 {
79     fileName = QFileDialog::getSaveFileName(this, "Hojjetni Saqlang", fileName, "Tekist Hojjetliri (*.txt)");
80     QFile file(fileName, this);
81     if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
82         return;
83     QTextStream out(&file);
84     qDebug()<<mTextEdit->toPlainText();
85     out<<mTextEdit->toPlainText();
86     file.close();
87     mTextEdit->setFocus();
88 }
89
90 void KumushEdit::copyButtonClicked()
91 {
92     QClipboard *clipboard = QApplication::clipboard();
93     qDebug()<<mTextEdit->toPlainText();
94     clipboard->setText(mTextEdit->toPlainText());
95     qDebug()<<clipboard->text();
96     mTextEdit->setFocus();
97 }
98
99 void KumushEdit::pasteButtonClicked()
100 {
101     QClipboard *clipboard = QApplication::clipboard();
102     QString text = clipboard->text();
103     QTextCursor cursor = mTextEdit->textCursor();
104     QTextCharFormat textFormat = cursor.charFormat();
105     textFormat.setFontFamily("UyghurEdit Riwaj");
106     cursor.insertText(text, textFormat);
107     mTextEdit->setFocus();
108     mTextEdit->ensureCursorVisible();
109 }
110
111 void KumushEdit::fwButtonClicked()
112 {
113     QTextCursor cursor = mTextEdit->textCursor();
114     cursor.setPosition(cursor.position()+1);
115     mTextEdit->setTextCursor(cursor);
116     mTextEdit->setFocus();
117     mTextEdit->ensureCursorVisible();
118 }
119
120 void KumushEdit::bwButtonClicked()
121 {
122     QTextCursor cursor = mTextEdit->textCursor();
123     cursor.setPosition(cursor.position()-1);
124     mTextEdit->setTextCursor(cursor);
125     mTextEdit->setFocus();
126     mTextEdit->ensureCursorVisible();
127 }
128
129 void KumushEdit::bspaceButtonClicked()
130 {
131     mTextEdit->textCursor().deletePreviousChar();
132     mTextEdit->setFocus();
133     mTextEdit->ensureCursorVisible();
134 }