1 #include "pagewidget.h"
2 #include "bookbrowser.h"
3 #include "treescrollpopup.h"
4 
5 #include <QApplication>
6 #include <QHeaderView>
7 
8 bool stopFlag = false;
9 
10 const QString PageWidget::CutString("----- cut -----");
11 const QString PageWidget::IntString("----- interrupted -----");
12 
PageWidget(QWidget * parent,const SearchMethod & method)13 PageWidget::PageWidget(QWidget *parent, const SearchMethod &method)
14     : QSplitter(parent), method_(method)
15 {
16     setObjectName("dicpage");
17     bookTree = new QTreeWidget();
18     bookTree->header()->hide();
19     bookTree->setColumnCount(2);
20     bookTree->setColumnHidden(1, true);
21     bookTree->setFont(qApp->font());
22     bookTree->setContextMenuPolicy(Qt::CustomContextMenu);
23     bookTree->setIndentation(15);
24 
25     bookBrowser_ = new BookBrowser(this);
26     bookBrowser_->setObjectName("main_browser");
27 
28     addWidget(bookTree);
29     addWidget(bookBrowser_);
30     setStretchFactor(indexOf(bookBrowser_), 1);
31 
32     connect(bookTree,
33             SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)),
34             SLOT(scrollTo(QTreeWidgetItem*,QTreeWidgetItem*)));
35     connect(bookTree,
36             SIGNAL(itemPressed(QTreeWidgetItem*,int)),
37             SLOT(scrollTo(QTreeWidgetItem*,int)));
38     connect(bookTree, SIGNAL(customContextMenuRequested(QPoint)),
39             SLOT(popupSlide(QPoint)));
40 }
41 
checkStop()42 bool PageWidget::checkStop()
43 {
44     QEventLoop().processEvents();
45     return stopFlag;
46 }
47 
toAnchor(const QString & str,int num)48 QString PageWidget::toAnchor(const QString &str, int num)
49 {
50     return str + QString::number(num);
51 }
52 
scrollTo(QTreeWidgetItem * to)53 void PageWidget::scrollTo(QTreeWidgetItem *to)
54 {
55     if (to && to->text(1).at(0) != 'P' ) {
56         bookBrowser_->scrollToAnchor(to->text(1));
57         emit selectionRequested(to->text(0));
58     }
59 }
60 
changeFont(const QFont & font)61 void PageWidget::changeFont(const QFont &font)
62 {
63     bookBrowser_->document()->setDefaultFont(font);
64     bookBrowser_->setFont(font);
65 }
66 
popupSlide(const QPoint & pos)67 void PageWidget::popupSlide(const QPoint &pos)
68 {
69     QTreeWidgetItem *item = bookTree->itemAt(pos);
70 
71     if (!item || !item->childCount())
72         return;
73 
74     bookTree->setCurrentItem(item);
75     TreeScrollPopup *popup = new TreeScrollPopup(item, 0);
76     popup->move(bookTree->viewport()->mapToGlobal(pos));
77     popup->show();
78 }
79 
zoomIn()80 void PageWidget::zoomIn()
81 {
82     QFont font = bookBrowser_->currentFont();
83     int fsz = font.pointSize();
84     font.setPointSize(fsz + 1);
85 
86     bookBrowser_->document()->setDefaultFont(font);
87     bookBrowser_->setFont(font);
88 }
89 
zoomOut()90 void PageWidget::zoomOut()
91 {
92     QFont font = bookBrowser_->currentFont();
93     int fsz = font.pointSize();
94     font.setPointSize(fsz - 1);
95 
96     bookBrowser_->document()->setDefaultFont(font);
97     bookBrowser_->setFont(font);
98 }
99 
setBookTreeVisible(bool visible)100 void PageWidget::setBookTreeVisible(bool visible)
101 {
102     bookTree->setVisible(visible);
103 }
104