From 18b87086d1a0e472662f3883962b60dbe57e215f Mon Sep 17 00:00:00 2001 From: matgic78 Date: Sat, 26 Dec 2009 13:00:53 +0100 Subject: First expermimental implementation of a new way of choosing a preview --- src/rekonqpage/previewchooser.cpp | 143 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 src/rekonqpage/previewchooser.cpp (limited to 'src/rekonqpage/previewchooser.cpp') diff --git a/src/rekonqpage/previewchooser.cpp b/src/rekonqpage/previewchooser.cpp new file mode 100644 index 00000000..a7c86d12 --- /dev/null +++ b/src/rekonqpage/previewchooser.cpp @@ -0,0 +1,143 @@ +/* ============================================================ +* +* This file is a part of the rekonq project +* +* 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 2 of +* the License or (at your option) version 3 or any later version +* accepted by the membership of KDE e.V. (or its successor approved +* by the membership of KDE e.V.), which shall act as a proxy +* defined in Section 14 of version 3 of the license. +* +* 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 . +* +* ============================================================ */ + + +// Self Includes +#include "previewchooser.h" + +// Local Includes +#include "rekonq.h" +#include +#include +#include + +// Qt Includes +#include +#include + +// KDE Includes +#include +#include + + +PreviewChooser::PreviewChooser(int previewIndex) + : KDialog(0) + , m_treeView(new QTreeView) + , m_model(new QStandardItemModel) + , m_previewIndex(previewIndex) +{ + setMinimumSize(350, 100); + setWindowTitle(i18n("Set Page to preview")); + setModal(true); + + setButtons(KDialog::Cancel | KDialog::Apply | KDialog::Ok); + setDefaultButton(KDialog::Ok); + connect(this, SIGNAL(buttonClicked(KDialog::ButtonCode)), this, SLOT(buttonClicked(KDialog::ButtonCode))); + + m_treeView->setUniformRowHeights(true); + m_treeView->setSelectionBehavior(QAbstractItemView::SelectRows); + m_treeView->setTextElideMode(Qt::ElideRight); + m_treeView->setHeaderHidden(true); + m_treeView->setIndentation(0); + + QWidget *mainWidget = new QWidget(this); + + // add url bar + QHBoxLayout *urlLayout = new QHBoxLayout; + urlLayout->setContentsMargins(5, 0, 0, 0); + QLabel *searchLabel = new QLabel(i18n("adress:")); + urlLayout->addWidget(searchLabel); + m_line = new KLineEdit; + connect(m_line, SIGNAL(textChanged(QString)), SLOT(urlChanged())); + urlLayout->addWidget(m_line); + + // setup view + QVBoxLayout *vBoxLayout = new QVBoxLayout; + vBoxLayout->setContentsMargins(0, 0, 0, 0); + vBoxLayout->addLayout(urlLayout); + vBoxLayout->addWidget(m_treeView); + mainWidget->setLayout(vBoxLayout); + setMainWidget(mainWidget); + + refreshModel(); + connect(Application::instance()->mainWindow()->mainView(), SIGNAL(tabsChanged()), SLOT(refreshModel())); + + m_treeView->setModel(m_model); + + connect(m_treeView, SIGNAL(activated(QModelIndex)), SLOT(setUrl(QModelIndex))); +} + + +PreviewChooser::~PreviewChooser() +{ + delete m_model; +} + + + +void PreviewChooser::refreshModel() +{ + m_model->clear(); + MainView *mv = Application::instance()->mainWindow()->mainView(); + for(int i=0; i < mv->count(); ++i) + { + WebView *view = qobject_cast(mv->webView(i)); + + if(view->url().scheme() == "about:") + continue; + + QStandardItem *it = new QStandardItem(view->icon(), view->title()); + it->setData(QVariant(view->url()), Qt::ToolTipRole); + m_model->insertRow(i, it); + } +} + +void PreviewChooser::setUrl(QModelIndex i) +{ + if(!i.data().canConvert(QVariant::String)) + return; + + m_line->setText(i.data(Qt::ToolTipRole).toString()); +} + + +void PreviewChooser::buttonClicked(KDialog::ButtonCode code) +{ + if(code == KDialog::Apply || code == KDialog::Ok) + { + emit urlChoosed(m_previewIndex, KUrl(m_line->text())); + enableButtonApply(false); + } + + if(code == KDialog::Cancel || code == KDialog::Ok) + { + close(); + deleteLater(); + } +} + + +void PreviewChooser::urlChanged() +{ + enableButtonApply(true); +} + -- cgit v1.2.1