Răsfoiți Sursa

Select text after loading

Kandrashin Denis 13 ani în urmă
părinte
comite
d52c344be5
4 a modificat fișierele cu 27 adăugiri și 1 ștergeri
  1. 7 1
      source/fb2dlgs.cpp
  2. 3 0
      source/fb2dlgs.hpp
  3. 12 0
      source/fb2view.cpp
  4. 5 0
      source/fb2view.hpp

+ 7 - 1
source/fb2dlgs.cpp

@@ -81,10 +81,11 @@ Fb2NoteDlg::Fb2NoteDlg(Fb2WebView &view)
     ui->m_title->setFocus();
     ui->m_title->setFocus();
 
 
     Fb2WebPage *page = new Fb2WebPage(this);
     Fb2WebPage *page = new Fb2WebPage(this);
+    connect(ui->m_text, SIGNAL(loadFinished(bool)), SLOT(loadFinished()));
     page->setNetworkAccessManager(view.page()->networkAccessManager());
     page->setNetworkAccessManager(view.page()->networkAccessManager());
     page->setContentEditable(true);
     page->setContentEditable(true);
     ui->m_text->setPage(page);
     ui->m_text->setPage(page);
-    ui->m_text->setHtml("<p></p>");
+    ui->m_text->setHtml("<body><p></p></body>");
 
 
     FB2::addTools(ui->m_toolbar, ui->m_text);
     FB2::addTools(ui->m_toolbar, ui->m_text);
 }
 }
@@ -93,3 +94,8 @@ Fb2NoteDlg::~Fb2NoteDlg()
 {
 {
     delete ui;
     delete ui;
 }
 }
+
+void Fb2NoteDlg::loadFinished()
+{
+    Fb2WebView::selectText(ui->m_text, "var element=document.body");
+}

+ 3 - 0
source/fb2dlgs.hpp

@@ -51,6 +51,9 @@ public:
     explicit Fb2NoteDlg(Fb2WebView &view);
     explicit Fb2NoteDlg(Fb2WebView &view);
     virtual ~Fb2NoteDlg();
     virtual ~Fb2NoteDlg();
 
 
+private slots:
+    void loadFinished();
+
 private:
 private:
     Ui::Fb2Note * ui;
     Ui::Fb2Note * ui;
 };
 };

+ 12 - 0
source/fb2view.cpp

@@ -83,6 +83,13 @@ bool Fb2WebPage::acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest
 //  Fb2WebView
 //  Fb2WebView
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
+void Fb2WebView::selectText(QWebView *view, const QString &locator)
+{
+    QWebFrame * frame = view->page()->mainFrame();
+    static const QString javascript = FB2::read(":/js/set_cursor.js");
+    frame->evaluateJavaScript(locator + ";" + javascript);
+}
+
 Fb2WebView::Fb2WebView(QWidget *parent)
 Fb2WebView::Fb2WebView(QWidget *parent)
     : Fb2BaseWebView(parent)
     : Fb2BaseWebView(parent)
     , m_inspector(0)
     , m_inspector(0)
@@ -94,6 +101,7 @@ Fb2WebView::Fb2WebView(QWidget *parent)
     page()->setContentEditable(true);
     page()->setContentEditable(true);
     connect(page(), SIGNAL(contentsChanged()), this, SLOT(fixContents()));
     connect(page(), SIGNAL(contentsChanged()), this, SLOT(fixContents()));
     connect(page(), SIGNAL(linkHovered(QString,QString,QString)), this, SLOT(linkHovered(QString,QString,QString)));
     connect(page(), SIGNAL(linkHovered(QString,QString,QString)), this, SLOT(linkHovered(QString,QString,QString)));
+    connect(this, SIGNAL(loadFinished(bool)), SLOT(loadFinished()));
 }
 }
 
 
 Fb2WebView::~Fb2WebView()
 Fb2WebView::~Fb2WebView()
@@ -332,3 +340,7 @@ void Fb2WebView::showInspector()
     m_inspector->show();
     m_inspector->show();
 }
 }
 
 
+void Fb2WebView::loadFinished()
+{
+    selectText(this, "var element=$('div.body').get(0);if(element===undefined)element=document.body");
+}

+ 5 - 0
source/fb2view.hpp

@@ -60,6 +60,10 @@ protected:
 class Fb2WebView : public Fb2BaseWebView
 class Fb2WebView : public Fb2BaseWebView
 {
 {
     Q_OBJECT
     Q_OBJECT
+public:
+    static void selectText(QWebView *view, const QString &locator);
+    static void selectBody(QWebView *view);
+
 public:
 public:
     explicit Fb2WebView(QWidget *parent = 0);
     explicit Fb2WebView(QWidget *parent = 0);
     virtual ~Fb2WebView();
     virtual ~Fb2WebView();
@@ -100,6 +104,7 @@ public slots:
 
 
 private slots:
 private slots:
     void fixContents();
     void fixContents();
+    void loadFinished();
 
 
 private:
 private:
     void execCommand(const QString &cmd, const QString &arg);
     void execCommand(const QString &cmd, const QString &arg);