1
mirror of https://invent.kde.org/network/falkon.git synced 2024-12-20 10:46:35 +01:00

Added search for Source Viewer

This commit is contained in:
nowrep 2011-03-19 00:28:37 +01:00
parent d070c785a0
commit 2449573c13
6 changed files with 286 additions and 5 deletions

View File

@ -95,7 +95,8 @@ SOURCES += main.cpp\
navigation/locationpopup.cpp \
preferences/sslmanager.cpp \
tools/notification.cpp \
tools/htmlhighlighter.cpp
tools/htmlhighlighter.cpp \
other/sourceviewersearch.cpp
HEADERS += 3rdparty/squeezelabel.h \
3rdparty/qtwin.h \
@ -153,7 +154,8 @@ HEADERS += 3rdparty/squeezelabel.h \
navigation/locationpopup.h \
preferences/sslmanager.h \
tools/notification.h \
tools/htmlhighlighter.h
tools/htmlhighlighter.h \
other/sourceviewersearch.h
FORMS += \
preferences/autofillmanager.ui \
@ -174,7 +176,8 @@ FORMS += \
autofill/autofillnotification.ui \
rss/rssnotification.ui \
preferences/sslmanager.ui \
other/clearprivatedata.ui
other/clearprivatedata.ui \
other/sourceviewersearch.ui
RESOURCES += \
data/icons.qrc \

View File

@ -18,6 +18,7 @@
#include "sourceviewer.h"
#include "webview.h"
#include "htmlhighlighter.h"
#include "sourceviewersearch.h"
SourceViewer::SourceViewer(QWebPage* page, QWidget* parent) :
QWidget(parent)
@ -115,7 +116,14 @@ void SourceViewer::save()
void SourceViewer::findText()
{
if (m_layout->count() > 2) {
SourceViewerSearch* search= qobject_cast<SourceViewerSearch*>( m_layout->itemAt(1)->widget() );
search->activateLineEdit();
return;
}
SourceViewerSearch* search = new SourceViewerSearch(this);
m_layout->insertWidget(1, search);
}
void SourceViewer::reload()
@ -142,7 +150,7 @@ void SourceViewer::setTextWordWrap()
void SourceViewer::goToLine()
{
int line = QInputDialog::getInt(this, tr("Go to Line..."), tr("Enter line number"));
int line = QInputDialog::getInt(this, tr("Go to Line..."), tr("Enter line number"), 0, 1, 5000);
if (line == 0)
return;

View File

@ -39,7 +39,7 @@ class SourceViewer : public QWidget
Q_OBJECT
public:
explicit SourceViewer(QWebPage* page, QWidget* parent = 0);
QTextEdit* sourceEdit() { return m_sourceEdit; }
signals:
public slots:

View File

@ -0,0 +1,110 @@
/* ============================================================
* QupZilla - WebKit based browser
* Copyright (C) 2010-2011 nowrep
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* ============================================================ */
#include "sourceviewersearch.h"
#include "ui_sourceviewersearch.h"
#include "sourceviewer.h"
SourceViewerSearch::SourceViewerSearch(SourceViewer* parent) :
Notification((QWidget*)parent)
,m_sourceViewer(parent)
,ui(new Ui::SourceViewerSearch)
{
setAttribute(Qt::WA_DeleteOnClose);
ui->setupUi(this);
ui->closeButton->setIcon(
#ifdef Q_WS_X11
style()->standardIcon(QStyle::SP_DialogCloseButton)
#else
QIcon(":/icons/faenza/close.png")
#endif
);
ui->next->setIcon(
#ifdef Q_WS_X11
style()->standardIcon(QStyle::SP_ArrowForward)
#else
QIcon(":/icons/faenza/forward.png")
#endif
);
ui->previous->setIcon(
#ifdef Q_WS_X11
style()->standardIcon(QStyle::SP_ArrowBack)
#else
QIcon(":/icons/faenza/back.png")
#endif
);
ui->lineEdit->setFocus();
startAnimation();
connect(ui->closeButton, SIGNAL(clicked()), this, SLOT(hide()));
connect(ui->lineEdit, SIGNAL(cursorPositionChanged(int,int)), this, SLOT(next()));
connect(ui->next, SIGNAL(clicked()), this, SLOT(next()));
connect(ui->previous, SIGNAL(clicked()), this, SLOT(previous()));
}
void SourceViewerSearch::activateLineEdit()
{
ui->lineEdit->setFocus();
}
void SourceViewerSearch::next()
{
if (!find(0)) {
ui->lineEdit->setStyleSheet("QLineEdit {background:#ff6666;; }");
m_sourceViewer->sourceEdit()->moveCursor(QTextCursor::Start);
} else {
ui->lineEdit->setStyleSheet("");
}
}
void SourceViewerSearch::previous()
{
if (!find(QTextDocument::FindBackward)) {
ui->lineEdit->setStyleSheet("QLineEdit {background:#ff6666;; }");
m_sourceViewer->sourceEdit()->moveCursor(QTextCursor::Start);
} else {
ui->lineEdit->setStyleSheet("");
}
}
bool SourceViewerSearch::find(QTextDocument::FindFlags flags)
{
QString string = ui->lineEdit->text();
if (string.isEmpty())
return true;
if (string != m_lastSearchedString) {
QTextCursor cursor = m_sourceViewer->sourceEdit()->textCursor();
cursor.setPosition(cursor.selectionStart());
cursor.clearSelection();
m_sourceViewer->sourceEdit()->setTextCursor(cursor);
m_lastSearchedString = string;
}
if (!m_sourceViewer->sourceEdit()->find(string, flags)) {
QTextCursor cursor = m_sourceViewer->sourceEdit()->textCursor();
m_sourceViewer->sourceEdit()->moveCursor(QTextCursor::Start);
if (!m_sourceViewer->sourceEdit()->find(string,flags)) {
cursor.clearSelection();
m_sourceViewer->sourceEdit()->setTextCursor(cursor);
return false;
}
}
return true;
}

View File

@ -0,0 +1,55 @@
/* ============================================================
* QupZilla - WebKit based browser
* Copyright (C) 2010-2011 nowrep
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* ============================================================ */
#ifndef SOURCEVIEWERSEARCH_H
#define SOURCEVIEWERSEARCH_H
#include <QDebug>
#include <QTextDocument>
#include <QTextCursor>
#include "notification.h"
namespace Ui {
class SourceViewerSearch;
}
class SourceViewer;
class SourceViewerSearch : public Notification
{
Q_OBJECT
public:
explicit SourceViewerSearch(SourceViewer* parent = 0);
void activateLineEdit();
signals:
public slots:
private slots:
void next();
void previous();
bool find(QTextDocument::FindFlags flags);
private:
SourceViewer* m_sourceViewer;
Ui::SourceViewerSearch* ui;
QString m_lastSearchedString;
};
#endif // SOURCEVIEWERSEARCH_H

View File

@ -0,0 +1,105 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>SourceViewerSearch</class>
<widget class="QWidget" name="SourceViewerSearch">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>679</width>
<height>40</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="leftMargin">
<number>2</number>
</property>
<property name="topMargin">
<number>4</number>
</property>
<property name="bottomMargin">
<number>4</number>
</property>
<item>
<widget class="QToolButton" name="closeButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
<property name="shortcut">
<string>Esc</string>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Search: </string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEdit">
<property name="placeholderText">
<string>Search...</string>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="previous">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="next">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>
<property name="autoRaise">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>