mirror of
https://invent.kde.org/network/falkon.git
synced 2024-12-20 10:46:35 +01:00
Completely rewritten all animations (hide/show notifications and search
bars)
This commit is contained in:
parent
a959d148d3
commit
13f8b67abd
Binary file not shown.
@ -96,7 +96,7 @@ SOURCES += main.cpp\
|
||||
rss/rssnotification.cpp \
|
||||
navigation/locationpopup.cpp \
|
||||
preferences/sslmanager.cpp \
|
||||
tools/notification.cpp \
|
||||
tools/animatedwidget.cpp \
|
||||
tools/htmlhighlighter.cpp \
|
||||
other/sourceviewersearch.cpp \
|
||||
adblock/adblocksubscription.cpp \
|
||||
@ -184,7 +184,7 @@ HEADERS += \
|
||||
rss/rssnotification.h \
|
||||
navigation/locationpopup.h \
|
||||
preferences/sslmanager.h \
|
||||
tools/notification.h \
|
||||
tools/animatedwidget.h \
|
||||
tools/htmlhighlighter.h \
|
||||
other/sourceviewersearch.h \
|
||||
adblock/adblocksubscription.h \
|
||||
@ -247,7 +247,8 @@ FORMS += \
|
||||
webview/jsconfirm.ui \
|
||||
webview/jsalert.ui \
|
||||
webview/jsprompt.ui \
|
||||
other/browsinglibrary.ui
|
||||
other/browsinglibrary.ui \
|
||||
webview/searchtoolbar.ui
|
||||
|
||||
RESOURCES += \
|
||||
data/icons.qrc \
|
||||
|
@ -71,7 +71,6 @@ QupZilla::QupZilla(bool tryRestore, QUrl startUrl) :
|
||||
,m_startingUrl(startUrl)
|
||||
,m_actionPrivateBrowsing(0)
|
||||
,m_webInspectorDock(0)
|
||||
,m_webSearchToolbar(0)
|
||||
,m_sideBar(0)
|
||||
,m_statusBarMessage(new StatusBarMessage(this))
|
||||
{
|
||||
@ -150,9 +149,13 @@ void QupZilla::postLaunch()
|
||||
|
||||
void QupZilla::setupUi()
|
||||
{
|
||||
setContentsMargins(0,0,0,0);
|
||||
QWidget* widget = new QWidget(this);
|
||||
m_mainLayout = new QVBoxLayout(widget);
|
||||
m_mainLayout->setContentsMargins(0,0,0,0);
|
||||
m_mainLayout->setSpacing(0);
|
||||
setCentralWidget(widget);
|
||||
m_tabWidget = new TabWidget(this);
|
||||
setCentralWidget(m_tabWidget);
|
||||
m_mainLayout->addWidget(m_tabWidget);
|
||||
|
||||
m_navigation = new QToolBar(this);
|
||||
m_navigation->setWindowTitle(tr("Navigation"));
|
||||
@ -1033,18 +1036,16 @@ void QupZilla::aboutQupZilla()
|
||||
|
||||
void QupZilla::searchOnPage()
|
||||
{
|
||||
if (!m_webSearchToolbar) {
|
||||
m_webSearchToolbar = new SearchToolBar(this);
|
||||
addToolBar(Qt::BottomToolBarArea, m_webSearchToolbar);
|
||||
m_webSearchToolbar->showBar();
|
||||
|
||||
if (m_mainLayout->count() == 2) {
|
||||
SearchToolBar* search = qobject_cast<SearchToolBar*>( m_mainLayout->itemAt(1)->widget() );
|
||||
search->searchLine()->setFocus();
|
||||
return;
|
||||
}
|
||||
if (m_webSearchToolbar->isVisible()) {
|
||||
m_webSearchToolbar->hideBar();
|
||||
weView()->setFocus();
|
||||
}else{
|
||||
m_webSearchToolbar->showBar();
|
||||
}
|
||||
|
||||
SearchToolBar* search = new SearchToolBar(this);
|
||||
m_mainLayout->insertWidget(1, search);
|
||||
search->searchLine()->setFocus();
|
||||
}
|
||||
|
||||
void QupZilla::openFile()
|
||||
@ -1185,7 +1186,6 @@ QupZilla::~QupZilla()
|
||||
delete m_menuForward;
|
||||
delete m_searchLine;
|
||||
delete m_bookmarksToolbar;
|
||||
delete m_webSearchToolbar;
|
||||
delete m_buttonBack;
|
||||
delete m_buttonNext;
|
||||
delete m_buttonHome;
|
||||
|
@ -204,6 +204,7 @@ private:
|
||||
QUrl m_newtab;
|
||||
QUrl m_homepage;
|
||||
|
||||
QVBoxLayout* m_mainLayout;
|
||||
QToolButton* m_supMenu;
|
||||
QMenu* m_superMenu;
|
||||
QMenu* m_menuFile;
|
||||
@ -236,7 +237,6 @@ private:
|
||||
QPointer<QDockWidget> m_webInspectorDock;
|
||||
|
||||
WebSearchBar* m_searchLine;
|
||||
SearchToolBar* m_webSearchToolbar;
|
||||
BookmarksToolbar* m_bookmarksToolbar;
|
||||
TabWidget* m_tabWidget;
|
||||
QPointer<SideBar> m_sideBar;
|
||||
|
@ -19,17 +19,17 @@
|
||||
#include "ui_autofillnotification.h"
|
||||
#include "autofillmodel.h"
|
||||
#include "mainapplication.h"
|
||||
#include "notification.h"
|
||||
#include "animatedwidget.h"
|
||||
|
||||
AutoFillNotification::AutoFillNotification(QUrl url, QByteArray data, QString pass, QWidget* parent)
|
||||
:Notification(parent)
|
||||
:AnimatedWidget(AnimatedWidget::Down, parent)
|
||||
,ui(new Ui::AutoFillWidget)
|
||||
,m_url(url)
|
||||
,m_data(data)
|
||||
,m_pass(pass)
|
||||
{
|
||||
setAttribute(Qt::WA_DeleteOnClose);
|
||||
ui->setupUi(this);
|
||||
ui->setupUi(widget());
|
||||
ui->label->setText(tr("Do you want QupZilla to remember password on %1?").arg(url.host()));
|
||||
ui->closeButton->setIcon(
|
||||
#ifdef Q_WS_X11
|
||||
@ -43,7 +43,8 @@ AutoFillNotification::AutoFillNotification(QUrl url, QByteArray data, QString pa
|
||||
connect(ui->never, SIGNAL(clicked()), this, SLOT(never()));
|
||||
connect(ui->notnow, SIGNAL(clicked()), this, SLOT(hide()));
|
||||
connect(ui->closeButton, SIGNAL(clicked()), this, SLOT(hide()));
|
||||
QTimer::singleShot(1, this, SLOT(startAnimation()));
|
||||
|
||||
startAnimation();
|
||||
}
|
||||
|
||||
void AutoFillNotification::never()
|
||||
|
@ -23,13 +23,13 @@
|
||||
#include <QTimer>
|
||||
#include <QDebug>
|
||||
|
||||
#include "notification.h"
|
||||
#include "animatedwidget.h"
|
||||
|
||||
namespace Ui {
|
||||
class AutoFillWidget;
|
||||
}
|
||||
class Notification;
|
||||
class AutoFillNotification : public Notification
|
||||
class AnimatedWidget;
|
||||
class AutoFillNotification : public AnimatedWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
@ -46,7 +46,6 @@ private:
|
||||
QUrl m_url;
|
||||
QByteArray m_data;
|
||||
QString m_pass;
|
||||
QTimeLine* m_animation;
|
||||
};
|
||||
|
||||
#endif // AUTOFILLWIDGET_H
|
||||
|
@ -126,8 +126,7 @@ void SourceViewer::findText()
|
||||
return;
|
||||
}
|
||||
|
||||
SourceViewerSearch* search = new SourceViewerSearch(this);
|
||||
m_layout->insertWidget(1, search);
|
||||
m_layout->insertWidget(1, new SourceViewerSearch(this));
|
||||
}
|
||||
|
||||
void SourceViewer::reload()
|
||||
|
@ -20,12 +20,12 @@
|
||||
#include "sourceviewer.h"
|
||||
|
||||
SourceViewerSearch::SourceViewerSearch(SourceViewer* parent) :
|
||||
Notification((QWidget*)parent)
|
||||
AnimatedWidget(AnimatedWidget::Up)
|
||||
,m_sourceViewer(parent)
|
||||
,ui(new Ui::SourceViewerSearch)
|
||||
{
|
||||
setAttribute(Qt::WA_DeleteOnClose);
|
||||
ui->setupUi(this);
|
||||
ui->setupUi(widget());
|
||||
ui->closeButton->setIcon(
|
||||
#ifdef Q_WS_X11
|
||||
style()->standardIcon(QStyle::SP_DialogCloseButton)
|
||||
@ -50,12 +50,13 @@ SourceViewerSearch::SourceViewerSearch(SourceViewer* parent) :
|
||||
#endif
|
||||
);
|
||||
ui->lineEdit->setFocus();
|
||||
startAnimation();
|
||||
connect(ui->closeButton, SIGNAL(clicked()), this, SLOT(hide()));
|
||||
connect(ui->lineEdit, SIGNAL(textEdited(QString)), this, SLOT(next()));
|
||||
connect(ui->lineEdit, SIGNAL(returnPressed()), this, SLOT(next()));
|
||||
connect(ui->next, SIGNAL(clicked()), this, SLOT(next()));
|
||||
connect(ui->previous, SIGNAL(clicked()), this, SLOT(previous()));
|
||||
|
||||
startAnimation();
|
||||
}
|
||||
|
||||
void SourceViewerSearch::activateLineEdit()
|
||||
|
@ -21,14 +21,14 @@
|
||||
#include <QTextDocument>
|
||||
#include <QTextCursor>
|
||||
|
||||
#include "notification.h"
|
||||
#include "animatedwidget.h"
|
||||
|
||||
namespace Ui {
|
||||
class SourceViewerSearch;
|
||||
}
|
||||
|
||||
class SourceViewer;
|
||||
class SourceViewerSearch : public Notification
|
||||
class SourceViewerSearch : public AnimatedWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
|
@ -21,11 +21,11 @@
|
||||
#include "qupzilla.h"
|
||||
|
||||
RSSNotification::RSSNotification(QString host, QWidget* parent) :
|
||||
Notification(parent),
|
||||
AnimatedWidget(AnimatedWidget::Down, parent),
|
||||
ui(new Ui::RSSNotification)
|
||||
{
|
||||
setAttribute(Qt::WA_DeleteOnClose);
|
||||
ui->setupUi(this);
|
||||
ui->setupUi(widget());
|
||||
ui->closeButton->setIcon(
|
||||
#ifdef Q_WS_X11
|
||||
style()->standardIcon(QStyle::SP_DialogCloseButton)
|
||||
@ -38,7 +38,7 @@ RSSNotification::RSSNotification(QString host, QWidget* parent) :
|
||||
connect(ui->pushButton, SIGNAL(clicked()), mApp->getWindow(), SLOT(showRSSManager()));
|
||||
connect(ui->pushButton, SIGNAL(clicked()), this, SLOT(hide()));
|
||||
connect(ui->closeButton, SIGNAL(clicked()), this, SLOT(hide()));
|
||||
QTimer::singleShot(1, this, SLOT(startAnimation()));
|
||||
startAnimation();
|
||||
}
|
||||
|
||||
RSSNotification::~RSSNotification()
|
||||
|
@ -20,14 +20,14 @@
|
||||
|
||||
#include <QWidget>
|
||||
|
||||
#include "notification.h"
|
||||
#include "animatedwidget.h"
|
||||
|
||||
namespace Ui {
|
||||
class RSSNotification;
|
||||
}
|
||||
|
||||
class Notification;
|
||||
class RSSNotification : public Notification
|
||||
class AnimatedWidget;
|
||||
class RSSNotification : public AnimatedWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
@ -37,7 +37,6 @@ public:
|
||||
|
||||
private:
|
||||
Ui::RSSNotification* ui;
|
||||
QTimeLine* m_animation;
|
||||
};
|
||||
|
||||
#endif // RSSNOTIFICATION_H
|
||||
|
88
src/tools/animatedwidget.cpp
Normal file
88
src/tools/animatedwidget.cpp
Normal file
@ -0,0 +1,88 @@
|
||||
/* ============================================================
|
||||
* 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 "animatedwidget.h"
|
||||
#include <QDebug>
|
||||
|
||||
AnimatedWidget::AnimatedWidget(const Direction &direction, QWidget* parent)
|
||||
: QWidget(parent)
|
||||
, m_widget(new QWidget(this))
|
||||
, m_direction(direction)
|
||||
{
|
||||
m_positionAni = new QPropertyAnimation(m_widget, "pos");
|
||||
m_positionAni->setDuration(300);
|
||||
|
||||
m_minHeightAni = new QPropertyAnimation(this, "minimumHeight");
|
||||
m_minHeightAni->setDuration(300);
|
||||
|
||||
m_maxHeightAni = new QPropertyAnimation(this, "maximumHeight");
|
||||
m_maxHeightAni->setDuration(300);
|
||||
|
||||
m_aniGroup = new QParallelAnimationGroup();
|
||||
m_aniGroup->addAnimation(m_positionAni);
|
||||
m_aniGroup->addAnimation(m_minHeightAni);
|
||||
m_aniGroup->addAnimation(m_maxHeightAni);
|
||||
|
||||
setMaximumHeight(0);
|
||||
}
|
||||
|
||||
void AnimatedWidget::startAnimation()
|
||||
{
|
||||
if (m_direction == Down) {
|
||||
Y_SHOWN = 0;
|
||||
Y_HIDDEN = -m_widget->height();
|
||||
} else if (m_direction == Up) {
|
||||
Y_SHOWN = 0;
|
||||
Y_HIDDEN = 0;
|
||||
}
|
||||
|
||||
m_widget->move(QPoint(m_widget->pos().x(), Y_HIDDEN));
|
||||
|
||||
m_positionAni->setEndValue(QPoint(m_widget->pos().x(), Y_SHOWN));
|
||||
m_minHeightAni->setEndValue(m_widget->height());
|
||||
m_maxHeightAni->setEndValue(m_widget->height());
|
||||
|
||||
m_aniGroup->start();
|
||||
}
|
||||
|
||||
void AnimatedWidget::hide()
|
||||
{
|
||||
m_positionAni->setEndValue(QPoint(m_widget->pos().x(), Y_HIDDEN));
|
||||
m_minHeightAni->setEndValue(0);
|
||||
m_maxHeightAni->setEndValue(0);
|
||||
|
||||
m_aniGroup->start();
|
||||
connect(m_aniGroup, SIGNAL(finished()), this, SLOT(close()));
|
||||
}
|
||||
|
||||
void AnimatedWidget::resizeEvent(QResizeEvent *event)
|
||||
{
|
||||
if (event->size().width() != m_widget->width())
|
||||
m_widget->resize(event->size().width(), m_widget->height());
|
||||
|
||||
QWidget::resizeEvent(event);
|
||||
}
|
||||
|
||||
AnimatedWidget::~AnimatedWidget()
|
||||
{
|
||||
delete m_positionAni;
|
||||
delete m_minHeightAni;
|
||||
delete m_maxHeightAni;
|
||||
delete m_aniGroup;
|
||||
|
||||
delete m_widget;
|
||||
}
|
55
src/tools/animatedwidget.h
Normal file
55
src/tools/animatedwidget.h
Normal 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 NOTIFICATION_H
|
||||
#define NOTIFICATION_H
|
||||
|
||||
#include <QWidget>
|
||||
#include <QPropertyAnimation>
|
||||
#include <QParallelAnimationGroup>
|
||||
#include <QResizeEvent>
|
||||
|
||||
class AnimatedWidget : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
enum Direction { Down, Up };
|
||||
explicit AnimatedWidget(const Direction &direction = Down, QWidget* parent = 0);
|
||||
~AnimatedWidget();
|
||||
|
||||
QWidget* widget() { return m_widget; }
|
||||
|
||||
public slots:
|
||||
void hide();
|
||||
void startAnimation();
|
||||
|
||||
private:
|
||||
void resizeEvent(QResizeEvent *e);
|
||||
|
||||
QPropertyAnimation* m_positionAni;
|
||||
QPropertyAnimation* m_minHeightAni;
|
||||
QPropertyAnimation* m_maxHeightAni;
|
||||
QParallelAnimationGroup* m_aniGroup;
|
||||
|
||||
QWidget* m_widget;
|
||||
|
||||
int Y_SHOWN;
|
||||
int Y_HIDDEN;
|
||||
Direction m_direction;
|
||||
};
|
||||
|
||||
#endif // NOTIFICATION_H
|
@ -19,149 +19,100 @@
|
||||
#include "qupzilla.h"
|
||||
#include "webview.h"
|
||||
#include "lineedit.h"
|
||||
#include "ui_searchtoolbar.h"
|
||||
|
||||
SearchToolBar::SearchToolBar(QupZilla* mainClass, QWidget* parent) :
|
||||
QToolBar(parent)
|
||||
,p_QupZilla(mainClass)
|
||||
,m_findFlags(0)
|
||||
SearchToolBar::SearchToolBar(QupZilla* mainClass, QWidget* parent)
|
||||
: AnimatedWidget(AnimatedWidget::Up, parent)
|
||||
, ui(new Ui::SearchToolbar)
|
||||
, p_QupZilla(mainClass)
|
||||
, m_findFlags(0)
|
||||
{
|
||||
setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
setObjectName("webSearchToolbar");
|
||||
setWindowTitle(tr("Search"));
|
||||
setMovable(false);
|
||||
|
||||
m_searchLine = new LineEdit(this);
|
||||
m_searchLine->setInactiveText(tr("Search"));
|
||||
m_searchLine->setMaximumWidth(250);
|
||||
connect(m_searchLine, SIGNAL(returnPressed()), this, SLOT(findNext()));
|
||||
|
||||
m_closeButton = new QAction(this);
|
||||
setAttribute(Qt::WA_DeleteOnClose);
|
||||
ui->setupUi(widget());
|
||||
ui->closeButton->setIcon(
|
||||
#ifdef Q_WS_X11
|
||||
m_closeButton->setIcon(QIcon(style()->standardIcon(QStyle::SP_DialogCloseButton).pixmap(16,16)));
|
||||
style()->standardIcon(QStyle::SP_DialogCloseButton)
|
||||
#else
|
||||
m_closeButton->setIcon(QIcon(QIcon(":/icons/faenza/close.png").pixmap(16,16)));
|
||||
QIcon(":/icons/faenza/close.png")
|
||||
#endif
|
||||
connect(m_closeButton, SIGNAL(triggered()), this, SLOT(hideBar()));
|
||||
);
|
||||
|
||||
m_highlightButton = new QAction(tr("Highlight occurrences"),this);
|
||||
m_highlightButton->setCheckable(true);
|
||||
connect(m_highlightButton, SIGNAL(triggered(bool)), this, SLOT(refreshFindFlags(bool)));
|
||||
|
||||
m_nextButton = new QAction(tr("Next"),this);
|
||||
ui->next->setIcon(
|
||||
#ifdef Q_WS_X11
|
||||
m_nextButton->setIcon(style()->standardIcon(QStyle::SP_ArrowForward));
|
||||
style()->standardIcon(QStyle::SP_ArrowForward)
|
||||
#else
|
||||
m_nextButton->setIcon(QIcon(":/icons/faenza/forward.png"));
|
||||
QIcon(":/icons/faenza/forward.png")
|
||||
#endif
|
||||
);
|
||||
|
||||
connect(m_nextButton, SIGNAL(triggered()), this, SLOT(findNext()));
|
||||
|
||||
m_previousButton = new QAction(tr("Previous"),this);
|
||||
ui->previous->setIcon(
|
||||
#ifdef Q_WS_X11
|
||||
m_previousButton->setIcon(style()->standardIcon(QStyle::SP_ArrowBack));
|
||||
style()->standardIcon(QStyle::SP_ArrowBack)
|
||||
#else
|
||||
m_previousButton->setIcon(QIcon(":/icons/faenza/back.png"));
|
||||
QIcon(":/icons/faenza/back.png")
|
||||
#endif
|
||||
connect(m_previousButton, SIGNAL(triggered()), this, SLOT(findPrevious()));
|
||||
);
|
||||
|
||||
m_caseSensitiveButton = new QAction(tr("Case sensitive"),this);
|
||||
m_caseSensitiveButton->setCheckable(true);
|
||||
connect(m_caseSensitiveButton, SIGNAL(triggered(bool)), this, SLOT(refreshFindFlags(bool)));
|
||||
|
||||
m_searchResults = new QLabel(this);
|
||||
|
||||
addAction(m_closeButton);
|
||||
addWidget(new QLabel(tr("Find:")));
|
||||
addWidget(m_searchLine);
|
||||
addSeparator();
|
||||
addAction(m_previousButton);
|
||||
addAction(m_nextButton);
|
||||
addAction(m_highlightButton);
|
||||
addAction(m_caseSensitiveButton);
|
||||
addWidget(m_searchResults);
|
||||
|
||||
frameChanged(0);
|
||||
connect(m_searchLine, SIGNAL(textChanged(QString)), this, SLOT(searchText(QString)));
|
||||
|
||||
m_animation = new QTimeLine(300, this);
|
||||
connect(m_animation, SIGNAL(frameChanged(int)),this, SLOT(frameChanged(int)));
|
||||
connect(ui->closeButton, SIGNAL(clicked()), this, SLOT(hide()));
|
||||
connect(ui->lineEdit, SIGNAL(textChanged(QString)), this, SLOT(searchText(QString)));
|
||||
connect(ui->next, SIGNAL(clicked()), this, SLOT(findNext()));
|
||||
connect(ui->previous, SIGNAL(clicked()), this, SLOT(findPrevious()));
|
||||
connect(ui->highligh, SIGNAL(clicked()), this, SLOT(refreshFindFlags()));
|
||||
connect(ui->caseSensitive, SIGNAL(clicked()), this, SLOT(refreshFindFlags()));
|
||||
startAnimation();
|
||||
}
|
||||
|
||||
void SearchToolBar::showBar()
|
||||
QLineEdit* SearchToolBar::searchLine()
|
||||
{
|
||||
setStyleSheet("QLabel, QToolButton {color: "+p_QupZilla->menuTextColor().name()+";}");
|
||||
m_animation->setFrameRange(0, 35);
|
||||
m_animation->setDirection(QTimeLine::Forward);
|
||||
disconnect(m_animation, SIGNAL(finished()),this, SLOT(hide()));
|
||||
|
||||
m_animation->stop();
|
||||
m_animation->start();
|
||||
|
||||
m_searchLine->setFocus();
|
||||
|
||||
QToolBar::show();
|
||||
}
|
||||
|
||||
void SearchToolBar::hideBar()
|
||||
{
|
||||
m_animation->setDirection(QTimeLine::Backward);
|
||||
|
||||
m_animation->stop();
|
||||
m_animation->start();
|
||||
connect(m_animation, SIGNAL(finished()), this, SLOT(hide()));
|
||||
|
||||
m_searchLine->clear();
|
||||
p_QupZilla->weView()->setFocus();
|
||||
}
|
||||
|
||||
void SearchToolBar::frameChanged(int frame)
|
||||
{
|
||||
setMinimumHeight(frame);
|
||||
setMaximumHeight(frame);
|
||||
return ui->lineEdit;
|
||||
}
|
||||
|
||||
void SearchToolBar::findNext()
|
||||
{
|
||||
refreshFindFlags(true);
|
||||
refreshFindFlags();
|
||||
m_findFlags+=4;
|
||||
searchText(m_searchLine->text());
|
||||
searchText(ui->lineEdit->text());
|
||||
|
||||
}
|
||||
|
||||
void SearchToolBar::findPrevious()
|
||||
{
|
||||
refreshFindFlags(true);
|
||||
refreshFindFlags();
|
||||
m_findFlags+=5;
|
||||
searchText(m_searchLine->text());
|
||||
searchText(ui->lineEdit->text());
|
||||
}
|
||||
|
||||
void SearchToolBar::refreshFindFlags(bool b)
|
||||
void SearchToolBar::refreshFindFlags()
|
||||
{
|
||||
Q_UNUSED(b);
|
||||
m_findFlags = 0;
|
||||
if (m_highlightButton->isChecked()) {
|
||||
if (ui->highligh->isChecked()) {
|
||||
m_findFlags+=8;
|
||||
searchText(m_searchLine->text());
|
||||
searchText(ui->lineEdit->text());
|
||||
}else{
|
||||
m_findFlags+=8;
|
||||
searchText("");
|
||||
m_findFlags-=8;
|
||||
}
|
||||
if (m_caseSensitiveButton->isChecked()) {
|
||||
if (ui->caseSensitive->isChecked()) {
|
||||
m_findFlags+=2;
|
||||
searchText(m_searchLine->text());
|
||||
searchText(ui->lineEdit->text());
|
||||
}
|
||||
}
|
||||
|
||||
void SearchToolBar::searchText(const QString &text)
|
||||
{
|
||||
bool found = p_QupZilla->weView()->findText(text, QFlags<QWebPage::FindFlag>(m_findFlags));
|
||||
if (!found && !m_searchLine->text().isEmpty()) {
|
||||
m_searchLine->setStyleSheet("background-color: #ff6666;");
|
||||
m_searchResults->setText(tr("No results found."));
|
||||
if (!found && !ui->lineEdit->text().isEmpty()) {
|
||||
ui->lineEdit->setStyleSheet("background-color: #ff6666;");
|
||||
ui->results->setText(tr("No results found."));
|
||||
}
|
||||
else{
|
||||
m_searchLine->setStyleSheet("");
|
||||
m_searchResults->clear();
|
||||
ui->lineEdit->setStyleSheet("");
|
||||
ui->results->clear();
|
||||
}
|
||||
}
|
||||
|
||||
SearchToolBar::~SearchToolBar()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
@ -18,45 +18,42 @@
|
||||
#ifndef SEARCHTOOLBAR_H
|
||||
#define SEARCHTOOLBAR_H
|
||||
|
||||
#include <QToolBar>
|
||||
#include <QLineEdit>
|
||||
#include <QAction>
|
||||
#include <QToolButton>
|
||||
#include <QWebPage>
|
||||
#include <QLabel>
|
||||
#include <QFlags>
|
||||
#include <QTimeLine>
|
||||
#include <QPropertyAnimation>
|
||||
#include "animatedwidget.h"
|
||||
|
||||
namespace Ui {
|
||||
class SearchToolbar;
|
||||
}
|
||||
|
||||
class QupZilla;
|
||||
class LineEdit;
|
||||
class SearchToolBar : public QToolBar
|
||||
class SearchToolBar : public AnimatedWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit SearchToolBar(QupZilla* mainClass, QWidget* parent = 0);
|
||||
LineEdit* searchLine(){ return m_searchLine; }
|
||||
~SearchToolBar();
|
||||
|
||||
QLineEdit* searchLine();
|
||||
|
||||
signals:
|
||||
|
||||
public slots:
|
||||
void showBar();
|
||||
void hideBar();
|
||||
void searchText(const QString &text);
|
||||
void refreshFindFlags(bool b);
|
||||
void refreshFindFlags();
|
||||
void findNext();
|
||||
void findPrevious();
|
||||
void frameChanged(int frame);
|
||||
|
||||
private:
|
||||
Ui::SearchToolbar* ui;
|
||||
QupZilla* p_QupZilla;
|
||||
|
||||
LineEdit* m_searchLine;
|
||||
QAction* m_closeButton;
|
||||
QAction* m_highlightButton;
|
||||
QAction* m_caseSensitiveButton;
|
||||
QAction* m_nextButton;
|
||||
QAction* m_previousButton;
|
||||
QLabel* m_searchResults;
|
||||
QTimeLine* m_animation;
|
||||
QPropertyAnimation* m_animation;
|
||||
int m_findFlags;
|
||||
};
|
||||
|
||||
|
129
src/webview/searchtoolbar.ui
Normal file
129
src/webview/searchtoolbar.ui
Normal file
@ -0,0 +1,129 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>SearchToolbar</class>
|
||||
<widget class="QWidget" name="SearchToolbar">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>855</width>
|
||||
<height>40</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<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="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="minimumSize">
|
||||
<size>
|
||||
<width>100</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>300</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<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="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="autoRaise">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="highligh">
|
||||
<property name="text">
|
||||
<string>Highlight</string>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QToolButton" name="caseSensitive">
|
||||
<property name="text">
|
||||
<string>Case sensitive</string>
|
||||
</property>
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="results">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>333</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<resources/>
|
||||
<connections/>
|
||||
</ui>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user