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
|
#ifndef COMPLETERWINDOW_H
#define COMPLETERWINDOW_H
#include "expectedtoken.h"
#include "completionhelper.h"
#include "guiSQLiteStudio_global.h"
#include <QDialog>
#include <QModelIndex>
namespace Ui {
class CompleterWindow;
}
class QListWidgetItem;
class QSignalMapper;
class CompleterModel;
class QSizeGrip;
class SqlEditor;
class QShortcut;
class GUI_API_EXPORT CompleterWindow : public QDialog
{
Q_OBJECT
public:
enum Mode
{
CODE,
SNIPPETS
};
explicit CompleterWindow(SqlEditor* parent = 0);
~CompleterWindow();
void reset();
void setData(const CompletionHelper::Results& completionResults);
void setDb(Db* db);
ExpectedTokenPtr getSelected() const;
int getNumberOfCharsToRemove();
void shringFilterBy(int chars);
void extendFilterBy(const QString& text);
bool immediateResolution();
Mode getMode() const;
QString getSnippetName() const;
protected:
void changeEvent(QEvent *e);
void keyPressEvent(QKeyEvent* e);
void showEvent(QShowEvent* e);
private:
void updateCurrent();
QString getStatusMsg(const QModelIndex& index);
void updateFilter();
void init();
void refreshSnippets();
Ui::CompleterWindow *ui = nullptr;
CompleterModel* model = nullptr;
SqlEditor* sqlEditor = nullptr;
QString filter;
Db* db = nullptr;
bool wrappedFilter = false;
QShortcut* modeChangeShortcut = nullptr;
QList<QShortcut*> snippetShortcuts;
QSignalMapper* snippetSignalMapper = nullptr;
private slots:
void focusOut();
void doubleClicked(const QModelIndex& index);
void currentRowChanged(const QModelIndex& current, const QModelIndex& previous);
void modeChangeRequested();
void snippetHotkeyPressed(int index);
void snippetDoubleClicked(QListWidgetItem* item);
signals:
void textTyped(const QString& text);
void backspacePressed();
void leftPressed();
void rightPressed();
};
#endif // COMPLETERWINDOW_H
|