FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
sqlitebrowser/src/ExtendedTableWidget.cpp at sqlb-3.2.x · sqlitebrowser/sqlitebrowser · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
sqlitebrowser
/
sqlitebrowser
Public
Uh oh!
There was an error while loading.
Please reload this page
.
Notifications
You must be signed in to change notification settings
Fork
2.4k
Star
24.5k
Code
Issues
824
Pull requests
17
Discussions
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Discussions
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
sqlitebrowser
/
src
/
ExtendedTableWidget.cpp
Copy path
More file actions
More file actions
Latest commit
History
History
History
108 lines (90 loc) · 3.34 KB
Breadcrumbs
sqlitebrowser
/
src
/
ExtendedTableWidget.cpp
Copy path
File metadata and controls
108 lines (90 loc) · 3.34 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
#
include
"
ExtendedTableWidget.h
"
#
include
"
sqlitetablemodel.h
"
#
include
"
FilterTableHeader.h
"
#
include
<
QApplication
>
#
include
<
QClipboard
>
#
include
<
QKeySequence
>
#
include
<
QKeyEvent
>
#
include
<
QScrollBar
>
#
include
<
QHeaderView
>
ExtendedTableWidget::ExtendedTableWidget
(QWidget* parent) :
QTableView(parent)
{
setHorizontalScrollMode
(ExtendedTableWidget::ScrollPerPixel);
connect
(
verticalScrollBar
(),
SIGNAL
(
valueChanged
(
int
)),
this
,
SLOT
(
vscrollbarChanged
(
int
)));
//
Set up filter row
m_tableHeader =
new
FilterTableHeader
(
this
);
setHorizontalHeader
(m_tableHeader);
}
void
ExtendedTableWidget::copy
()
{
//
Get list of selected items
QItemSelectionModel* selection =
selectionModel
();
QModelIndexList indices = selection->
selectedIndexes
();
//
Abort if there's nothing to copy
if
(indices.
size
() ==
0
)
{
return
;
}
else
if
(indices.
size
() ==
1
) {
qApp->
clipboard
()->
setText
(indices.
front
().
data
().
toString
());
return
;
}
//
Sort the items by row, then by column
qSort
(indices);
//
Go through all the items...
QString result;
QModelIndex prev = indices.
front
();
indices.
removeFirst
();
foreach
(QModelIndex index, indices)
{
//
Add the content of this cell to the clipboard string
result.
append
(
QString
(
"
\"
%1
\"
"
).
arg
(prev.
data
().
toString
()));
//
If this is a new row add a line break, if not add a tab for cell separation
if
(index.
row
() != prev.
row
())
result.
append
(
"
\r\n
"
);
else
result.
append
(
"
\t
"
);
prev = index;
}
result.
append
(
QString
(
"
\"
%1
\"\r\n
"
).
arg
(indices.
last
().
data
().
toString
()));
//
And the last cell
//
And finally add it to the clipboard
qApp->
clipboard
()->
setText
(result);
}
void
ExtendedTableWidget::keyPressEvent
(QKeyEvent* event)
{
//
Call a custom copy method when Ctrl-C is pressed
if
(event->
matches
(QKeySequence::Copy))
copy
();
else
QTableView::keyPressEvent
(event);
}
void
ExtendedTableWidget::updateGeometries
()
{
//
Call the parent implementation first - it does most of the actual logic
QTableView::updateGeometries
();
//
Check if a model has already been set yet
if
(
model
())
{
//
If so and if it is a SqliteTableModel and if the parent implementation of this method decided that a scrollbar is needed, update its maximum value
SqliteTableModel* m = qobject_cast<SqliteTableModel*>(
model
());
if
(m &&
verticalScrollBar
()->
maximum
())
verticalScrollBar
()->
setMaximum
(m->
totalRowCount
() -
numVisibleRows
() +
1
);
}
}
void
ExtendedTableWidget::vscrollbarChanged
(
int
value)
{
//
Cancel if there is no model set yet - this shouldn't happen (because without a model there should be no scrollbar) but just to be sure...
if
(!
model
())
return
;
//
Fetch more data from the DB if necessary
if
((value +
numVisibleRows
()) >=
model
()->
rowCount
() &&
model
()->
canFetchMore
(
QModelIndex
()))
model
()->
fetchMore
(
QModelIndex
());
}
int
ExtendedTableWidget::numVisibleRows
()
{
//
Get the row numbers of the rows currently visible at the top and the bottom of the widget
int
row_top =
rowAt
(
0
) == -
1
?
0
:
rowAt
(
0
);
int
row_bottom =
rowAt
(
height
()) == -
1
?
model
()->
rowCount
() :
rowAt
(
height
());
//
Calculate the number of visible rows
return
row_bottom - row_top;
}
Back
|
FazBrowse Home
|
New Git URL