Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/lintest/fb2edit.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKandrashin Denis <mail@lintest.ru>2012-09-15 15:17:46 +0400
committerKandrashin Denis <mail@lintest.ru>2012-09-15 15:17:46 +0400
commit95e15c351bdc5d90767a7afcd678af21bf51e075 (patch)
treee80fc8c58fed435362886b7cefd0994fdd5ddec8
parent1da667dbcd36197c589eaac2d0f2313019e2e7c7 (diff)
Modify text actions
-rw-r--r--3rdparty/gnome/24x24/edit-clear.pngbin0 -> 1177 bytes
-rw-r--r--source/fb2main.cpp36
-rw-r--r--source/fb2main.hpp1
-rw-r--r--source/fb2temp.cpp48
-rw-r--r--source/fb2temp.hpp13
-rw-r--r--source/fb2text.cpp26
-rw-r--r--source/fb2text.hpp7
-rw-r--r--source/ts/ru.qmbin10144 -> 10295 bytes
-rw-r--r--source/ts/ru.ts8
9 files changed, 80 insertions, 59 deletions
diff --git a/3rdparty/gnome/24x24/edit-clear.png b/3rdparty/gnome/24x24/edit-clear.png
new file mode 100644
index 0000000..62d435d
--- /dev/null
+++ b/3rdparty/gnome/24x24/edit-clear.png
Binary files differ
diff --git a/source/fb2main.cpp b/source/fb2main.cpp
index 0db62c7..981fa7d 100644
--- a/source/fb2main.cpp
+++ b/source/fb2main.cpp
@@ -378,7 +378,7 @@ void FbMainWindow::createActions()
menuText = menu = menuBar()->addMenu(tr("Fo&rmat"));
- actionClearFormat = act = new QAction(tr("Clear format"), this);
+ actionClearFormat = act = new QAction(FbIcon("edit-clear"), tr("Clear format"), this);
menu->addAction(act);
menu->addSeparator();
@@ -512,16 +512,21 @@ void FbMainWindow::createImgs()
void FbMainWindow::selectionChanged()
{
- actionCut->setEnabled(textFrame->view()->CutEnabled());
- actionCopy->setEnabled(textFrame->view()->CopyEnabled());
-
- actionTextBold->setChecked(textFrame->view()->BoldChecked());
- actionTextItalic->setChecked(textFrame->view()->ItalicChecked());
- actionTextStrike->setChecked(textFrame->view()->StrikeChecked());
- actionTextSub->setChecked(textFrame->view()->SubChecked());
- actionTextSup->setChecked(textFrame->view()->SupChecked());
+ FbTextEdit *view = textFrame->view();
+ actionCut->setEnabled(view->actionEnabled(QWebPage::Cut));
+ actionCopy->setEnabled(view->actionEnabled(QWebPage::Copy));
+ statusBar()->showMessage(view->page()->status());
+}
- statusBar()->showMessage(textFrame->view()->page()->status());
+void FbMainWindow::formatChanged()
+{
+ FbTextEdit *view = textFrame->view();
+ actionClearFormat->setEnabled(view->actionEnabled(QWebPage::RemoveFormat));
+ actionTextBold->setChecked(view->actionChecked(QWebPage::ToggleBold));
+ actionTextItalic->setChecked(view->actionChecked(QWebPage::ToggleItalic));
+ actionTextStrike->setChecked(view->actionChecked(QWebPage::ToggleStrikethrough));
+ actionTextSub->setChecked(view->actionChecked(QWebPage::ToggleSubscript));
+ actionTextSup->setChecked(view->actionChecked(QWebPage::ToggleSuperscript));
}
void FbMainWindow::canUndoChanged(bool canUndo)
@@ -536,12 +541,12 @@ void FbMainWindow::canRedoChanged(bool canRedo)
void FbMainWindow::undoChanged()
{
- actionUndo->setEnabled(textFrame->view()->UndoEnabled());
+ actionUndo->setEnabled(textFrame->view()->actionEnabled(QWebPage::Undo));
}
void FbMainWindow::redoChanged()
{
- actionRedo->setEnabled(textFrame->view()->RedoEnabled());
+ actionRedo->setEnabled(textFrame->view()->actionEnabled(QWebPage::Redo));
}
void FbMainWindow::createStatusBar()
@@ -668,6 +673,13 @@ void FbMainWindow::createTextToolbar()
connect(actionTextSub, SIGNAL(triggered()), textEdit->pageAction(QWebPage::ToggleSubscript), SIGNAL(triggered()));
connect(actionTextSup, SIGNAL(triggered()), textEdit->pageAction(QWebPage::ToggleSuperscript), SIGNAL(triggered()));
+ connect(textEdit->pageAction(QWebPage::RemoveFormat), SIGNAL(changed()), SLOT(formatChanged()));
+ connect(textEdit->pageAction(QWebPage::ToggleBold), SIGNAL(changed()), SLOT(formatChanged()));
+ connect(textEdit->pageAction(QWebPage::ToggleItalic), SIGNAL(changed()), SLOT(formatChanged()));
+ connect(textEdit->pageAction(QWebPage::ToggleStrikethrough), SIGNAL(changed()), SLOT(formatChanged()));
+ connect(textEdit->pageAction(QWebPage::ToggleSubscript), SIGNAL(changed()), SLOT(formatChanged()));
+ connect(textEdit->pageAction(QWebPage::ToggleSuperscript), SIGNAL(changed()), SLOT(formatChanged()));
+
connect(actionFind, SIGNAL(triggered()), textEdit, SLOT(find()));
connect(actionImage, SIGNAL(triggered()), textEdit, SLOT(insertImage()));
connect(actionNote, SIGNAL(triggered()), textEdit, SLOT(insertNote()));
diff --git a/source/fb2main.hpp b/source/fb2main.hpp
index 077abc7..06b9ad1 100644
--- a/source/fb2main.hpp
+++ b/source/fb2main.hpp
@@ -70,6 +70,7 @@ private slots:
void status(const QString &text);
void clipboardDataChanged();
void selectionChanged();
+ void formatChanged();
void undoChanged();
void redoChanged();
void openSettings();
diff --git a/source/fb2temp.cpp b/source/fb2temp.cpp
index e1d1942..7e0c553 100644
--- a/source/fb2temp.cpp
+++ b/source/fb2temp.cpp
@@ -1,6 +1,7 @@
#include "fb2temp.hpp"
#include <QAbstractListModel>
+#include <QBuffer>
#include <QCryptographicHash>
#include <QFileInfo>
#include <QImageReader>
@@ -21,11 +22,14 @@ FbTemporaryFile::FbTemporaryFile(const QString &name)
{
}
-qint64 FbTemporaryFile::write(const QByteArray &data)
+qint64 FbTemporaryFile::write(QByteArray &data)
{
open();
if (m_hash.isEmpty()) m_hash = md5(data);
m_size = QTemporaryFile::write(data);
+ QBuffer buffer(&data);
+ buffer.open(QIODevice::ReadOnly);
+ m_type = QImageReader::imageFormat(&buffer);
close();
return m_size;
}
@@ -57,7 +61,7 @@ FbTemporaryList::~FbTemporaryList()
while (it.hasNext()) delete it.next();
}
-QString FbTemporaryList::add(const QString &path, const QByteArray &data)
+QString FbTemporaryList::add(const QString &path, QByteArray &data)
{
QString hash = FbTemporaryFile::md5(data);
QString name = this->name(hash);
@@ -105,7 +109,7 @@ QByteArray FbTemporaryList::data(const QString &name) const
return QByteArray();
}
-const QString & FbTemporaryList::set(const QString &name, const QByteArray &data, const QString &hash)
+const QString & FbTemporaryList::set(const QString &name, QByteArray &data, const QString &hash)
{
FbTemporaryFile * file = get(name);
if (!file) append(file = new FbTemporaryFile(name));
@@ -210,20 +214,18 @@ QNetworkReply * FbNetworkAccessManager::imageRequest(Operation op, const QNetwor
return new FbImageReply(op, request, data);
}
-QString FbNetworkAccessManager::name(int index) const
+QVariant FbNetworkAccessManager::info(int row, int col) const
{
- if (0 <= index && index < count()) {
- return m_files[index]->name();
- }
- return QString();
-}
-
-int FbNetworkAccessManager::size(int index) const
-{
- if (0 <= index && index < count()) {
- return m_files[index]->size();
+ if (0 <= row && row < count()) {
+ FbTemporaryFile *file = m_files[row];
+ switch (col) {
+ case 0: return file->name();
+ case 1: return file->type();
+ case 2: return file->size();
+ }
+ return m_files[row]->name();
}
- return 0;
+ return QVariant();
}
QByteArray FbNetworkAccessManager::data(int index) const
@@ -252,7 +254,7 @@ FbListModel::FbListModel(FbNetworkAccessManager &files, QObject *parent)
int FbListModel::columnCount(const QModelIndex &parent) const
{
Q_UNUSED(parent);
- return 2;
+ return 3;
}
int FbListModel::rowCount(const QModelIndex &parent) const
@@ -266,7 +268,8 @@ QVariant FbListModel::headerData(int section, Qt::Orientation orientation, int r
if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
switch (section) {
case 0: return tr("File name");
- case 1: return tr("Size");
+ case 1: return tr("Type");
+ case 2: return tr("Size");
}
}
return QVariant();
@@ -277,15 +280,12 @@ QVariant FbListModel::data(const QModelIndex &index, int role) const
if (index.isValid()) {
switch (role) {
case Qt::DisplayRole: {
- switch (index.column()) {
- case 0: return m_files.name(index.row());
- case 1: return m_files.size(index.row());
- }
+ return m_files.info(index.row(), index.column());
} break;
case Qt::TextAlignmentRole: {
switch (index.column()) {
- case 0: return Qt::AlignLeft;
- case 1: return Qt::AlignRight;
+ case 2: return Qt::AlignRight;
+ default: return Qt::AlignLeft;
}
}
}
@@ -362,4 +362,6 @@ void FbListWidget::loadFinished(bool ok)
m_list->setModel(new FbListModel(*m_view.files(), this));
m_list->label()->clear();
m_list->reset();
+ m_list->resizeColumnToContents(1);
+ m_list->resizeColumnToContents(2);
}
diff --git a/source/fb2temp.hpp b/source/fb2temp.hpp
index 71aaae3..7e4d010 100644
--- a/source/fb2temp.hpp
+++ b/source/fb2temp.hpp
@@ -20,15 +20,17 @@ public:
static QString md5(const QByteArray &data);
public:
explicit FbTemporaryFile(const QString &name);
- inline qint64 write(const QByteArray &data);
+ inline qint64 write(QByteArray &data);
void setHash(const QString &hash) { m_hash = hash; }
const QString & hash() const { return m_hash; }
const QString & name() const { return m_name; }
+ const QString & type() const { return m_type; }
qint64 size() const { return m_size; }
QByteArray data();
private:
const QString m_name;
QString m_hash;
+ QString m_type;
qint64 m_size;
};
@@ -38,10 +40,10 @@ public:
explicit FbTemporaryList();
virtual ~FbTemporaryList();
- QString add(const QString &path, const QByteArray &data);
+ QString add(const QString &path, QByteArray &data);
bool exists(const QString &name) const;
FbTemporaryFile * get(const QString &name) const;
- const QString & set(const QString &name, const QByteArray &data, const QString &hash = QString());
+ const QString & set(const QString &name, QByteArray &data, const QString &hash = QString());
QString name(const QString &hash) const;
QByteArray data(const QString &name) const;
private:
@@ -92,13 +94,12 @@ public slots:
void data(QString name, QByteArray data);
public:
- QString add(const QString &path, const QByteArray &data) { return m_files.add(path, data); }
+ QString add(const QString &path, QByteArray &data) { return m_files.add(path, data); }
bool exists(const QString &name) const { return m_files.exists(name); }
FbTemporaryFile * get(const QString &name) const { return m_files.get(name); }
int count() const { return m_files.count(); }
QByteArray data(int index) const;
- QString name(int index) const;
- int size(int index) const;
+ QVariant info(int row, int col) const;
protected:
virtual QNetworkReply *createRequest(Operation op, const QNetworkRequest &request, QIODevice *outgoingData = 0);
diff --git a/source/fb2text.cpp b/source/fb2text.cpp
index 7eabb12..f936a09 100644
--- a/source/fb2text.cpp
+++ b/source/fb2text.cpp
@@ -375,6 +375,10 @@ void FbTextBase::addTools(QToolBar *tool)
tool->addSeparator();
+ act = pageAction(QWebPage::RemoveFormat);
+ act->setText(QObject::tr("Clear format"));
+ act->setIcon(FbIcon("edit-clear"));
+
act = pageAction(QWebPage::ToggleBold);
act->setIcon(FbIcon("format-text-bold"));
act->setText(QObject::tr("&Bold"));
@@ -462,6 +466,8 @@ void FbTextEdit::contextMenu(const QPoint &pos)
QMenu menu, *submenu;
submenu = menu.addMenu(tr("Fo&rmat"));
+ submenu->addAction(pageAction(QWebPage::RemoveFormat));
+ submenu->addSeparator();
submenu->addAction(pageAction(QWebPage::ToggleBold));
submenu->addAction(pageAction(QWebPage::ToggleItalic));
submenu->addAction(pageAction(QWebPage::ToggleStrikethrough));
@@ -581,24 +587,16 @@ void FbTextEdit::zoomReset()
setZoomFactor(1);
}
-bool FbTextEdit::UndoEnabled()
-{
- return pageAction(QWebPage::Undo)->isEnabled();
-}
-
-bool FbTextEdit::RedoEnabled()
-{
- return pageAction(QWebPage::Redo)->isEnabled();
-}
-
-bool FbTextEdit::CutEnabled()
+bool FbTextEdit::actionEnabled(QWebPage::WebAction action)
{
- return pageAction(QWebPage::Cut)->isEnabled();
+ QAction *act = pageAction(action);
+ return act ? act->isEnabled() : false;
}
-bool FbTextEdit::CopyEnabled()
+bool FbTextEdit::actionChecked(QWebPage::WebAction action)
{
- return pageAction(QWebPage::Copy)->isEnabled();
+ QAction *act = pageAction(action);
+ return act ? act->isChecked() : false;
}
bool FbTextEdit::BoldChecked()
diff --git a/source/fb2text.hpp b/source/fb2text.hpp
index d57cfb0..54c573f 100644
--- a/source/fb2text.hpp
+++ b/source/fb2text.hpp
@@ -118,10 +118,9 @@ public:
bool save(QByteArray *array);
bool save(QString *string);
- bool UndoEnabled();
- bool RedoEnabled();
- bool CutEnabled();
- bool CopyEnabled();
+ bool actionEnabled(QWebPage::WebAction action);
+ bool actionChecked(QWebPage::WebAction action);
+
bool BoldChecked();
bool ItalicChecked();
bool StrikeChecked();
diff --git a/source/ts/ru.qm b/source/ts/ru.qm
index 457c179..9c51aaf 100644
--- a/source/ts/ru.qm
+++ b/source/ts/ru.qm
Binary files differ
diff --git a/source/ts/ru.ts b/source/ts/ru.ts
index 36e6114..96c9f86 100644
--- a/source/ts/ru.ts
+++ b/source/ts/ru.ts
@@ -216,6 +216,10 @@
<source>Size</source>
<translation>Размер</translation>
</message>
+ <message>
+ <source>Type</source>
+ <translation>Тип</translation>
+ </message>
</context>
<context>
<name>FbMainWindow</name>
@@ -552,6 +556,10 @@
<source>Clear format</source>
<translation>&amp;Очистить формат</translation>
</message>
+ <message>
+ <source>Paste (no style)</source>
+ <translation>Вставить простой текст</translation>
+ </message>
</context>
<context>
<name>FbNodeDlg</name>