summaryrefslogtreecommitdiffstats
path: root/kdict/queryview.h
blob: e942d297de315e09a2d30b237f637f36d0859fda (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
/* -------------------------------------------------------------

   queryview.h (part of The KDE Dictionary Client)

   Copyright (C) 2000-2001 Christian Gebauer <gebauer@kde.org>

   This file is distributed under the Artistic License.
   See LICENSE for details.

    -------------------------------------------------------------

    SaveHelper    network transparent file saving
    BrowseData    data structure used for caching definitions
    DictHTMLPart  handling of middle mouse button clicks
    QueryView     widget that displays the definitions

 ------------------------------------------------------------- */

#ifndef _QUERYVIEW_H_
#define _QUERYVIEW_H_

#include <qvbox.h>
#include <khtml_part.h>

class QFile;
class KTempFile;
class KPopupMenu;
class DictComboAction;


QString getShortString(QString str,unsigned int length);


//********  SaveHelper  *******************************************


class SaveHelper {

public:

  SaveHelper(const QString &saveName, const QString &filter, QWidget *parent);
  ~SaveHelper();

  // returns a file open for writing
  QFile* getFile(const QString &dialogTitle);

private:

  QWidget *p_arent;
  QString s_aveName, f_ilter;
  KURL url;
  QFile* file;
  KTempFile* tmpFile;
  static QString lastPath;

};


//********  BrowseData  ******************************************


class BrowseData
{

public:

  BrowseData(const QString &Nhtml, const QString &NqueryText);

  QString html;
  QString queryText;
  int xPos,yPos;
};


//*********  DictHTMLPart  ***************************************

class DictHTMLPart : public KHTMLPart
{
  Q_OBJECT

public:

  DictHTMLPart(QWidget *parentWidget = 0, const char *widgetname = 0);
  ~DictHTMLPart();

signals:
  void middleButtonClicked();

protected:

  virtual void khtmlMouseReleaseEvent(khtml::MouseReleaseEvent *event);

};

//*********  QueryView  ******************************************


class QueryView : public QVBox
{
  Q_OBJECT

public:

  QueryView(QWidget *_parent = 0L);
  ~QueryView();

  void setActions(KToolBarPopupAction* NactBack, KToolBarPopupAction* NactForward, DictComboAction* NactQueryCombo);

  bool browseBackPossible() const;
  bool browseForwardPossible() const;

  void stop();

public slots:
  void optionsChanged();
  void printQuery();
  void saveQuery();
  void browseBack();
  void browseForward();
  void selectAll();
  void copySelection();
  void showFindDialog();

signals:

  void defineRequested(const QString &query);
  void matchRequested(const QString &query);
  void clipboardRequested();
  void enableCopy(bool selected);   // emited when the user selects/deselects text
  void enablePrintSave();
  void renderingStarted();
  void renderingStopped();
  void newCaption(const QString&);

protected:

  void paletteChange ( const QPalette & );
  void fontChange ( const QFont & );

  void saveCurrentResultPos();
  void showResult();

protected slots:

  void resultReady(const QString &result, const QString &query);
  void partCompleted();
  void slotURLRequest (const KURL &url, const KParts::URLArgs &args);
  void middleButtonClicked();
  void buildPopupMenu(const QString &url, const QPoint &point);
  void popupDefineLink();
  void popupMatchLink();
  void popupOpenLink();
  void popupDefineSelect();
  void popupMatchSelect();
  void popupDbInfo();
  void enableAction(const char *, bool);
  void browseBack(int);
  void browseForward(int);
  void updateBrowseActions();

private:

  DictHTMLPart *part;               // Widgets

  KToolBarPopupAction *actBack, *actForward;
  DictComboAction *actQueryCombo;

  KPopupMenu *rightBtnMenu;
  QString popupLink,popupSelect;       // needed for rightbtn-popup menu

  QPtrList<BrowseData> browseList;
  unsigned int browsePos;              // position in browseList
  QString currentHTMLHeader;

  bool isRendering;
};

#endif