2 * This file is part of NixNote
3 * Copyright 2009 Randy Baumgarte
5 * This file may be licensed under the terms of of the
6 * GNU General Public License Version 2 (the ``GPL'').
8 * Software distributed under the License is distributed
9 * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
10 * express or implied. See the GPL for the specific language
11 * governing rights and limitations.
13 * You should have received a copy of the GPL along with this
14 * program. If not, go to http://www.gnu.org/licenses/gpl.html
15 * or write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19 package cx.fbn.nevernote.gui;
21 import java.util.List;
22 import java.util.SortedMap;
24 import com.evernote.edam.type.Note;
25 import com.trolltech.qt.core.QByteArray;
26 import com.trolltech.qt.core.QModelIndex;
27 import com.trolltech.qt.core.Qt;
28 import com.trolltech.qt.core.Qt.Orientation;
29 import com.trolltech.qt.core.Qt.SortOrder;
30 import com.trolltech.qt.gui.QAbstractItemView;
31 import com.trolltech.qt.gui.QAction;
32 import com.trolltech.qt.gui.QApplication;
33 import com.trolltech.qt.gui.QColor;
34 import com.trolltech.qt.gui.QContextMenuEvent;
35 import com.trolltech.qt.gui.QDragEnterEvent;
36 import com.trolltech.qt.gui.QDropEvent;
37 import com.trolltech.qt.gui.QFontMetrics;
38 import com.trolltech.qt.gui.QKeyEvent;
39 import com.trolltech.qt.gui.QKeySequence.StandardKey;
40 import com.trolltech.qt.gui.QMenu;
41 import com.trolltech.qt.gui.QTableView;
43 import cx.fbn.nevernote.Global;
44 import cx.fbn.nevernote.NeverNote;
45 import cx.fbn.nevernote.evernote.NoteMetadata;
46 import cx.fbn.nevernote.filters.NoteSortFilterProxyModel;
47 import cx.fbn.nevernote.signals.NoteSignal;
48 import cx.fbn.nevernote.utilities.ApplicationLogger;
49 import cx.fbn.nevernote.utilities.ListManager;
51 public class TableView extends QTableView {
52 private final ListManager runner;
53 private final ApplicationLogger logger;
54 public NoteSortFilterProxyModel proxyModel; // note sort model
55 private QAction deleteAction;
56 private QAction addAction;
57 private QAction restoreAction;
58 private QAction noteHistoryAction;
59 private QAction duplicateAction;
60 private QAction mergeNotesAction;
62 private QAction openNewTabAction;
63 private QAction addNoteNewTabAction;
66 private QAction noteTitleColorWhite;
67 private QAction noteTitleColorRed;
68 private QAction noteTitleColorBlue;
69 private QAction noteTitleColorGreen;
70 private QAction noteTitleColorYellow;
71 private QAction noteTitleColorBlack;
72 private QAction noteTitleColorGray;
73 private QAction noteTitleColorCyan;
74 private QAction noteTitleColorMagenta;
75 private QAction notePinned;
76 private QAction copyAsUrlAction;
80 public TableViewHeader header;
82 public Signal1<String> rowChanged;
83 public Signal0 resetViewport;
84 public NoteSignal noteSignal;
87 private final NeverNote parent;
89 // ICHANGED parent引数を追加
90 public TableView(ApplicationLogger l, ListManager m, NeverNote parent) {
95 header = new TableViewHeader(Orientation.Horizontal,this);
96 setHorizontalHeader(header);
97 header.setMovable(true);
98 header.subjectDateAction.toggled.connect(this, "toggleSubjectDate(Boolean)");
99 header.createdDateAction.toggled.connect(this, "toggleCreationDate(Boolean)");
100 header.changedDateAction.toggled.connect(this, "toggleChangedDate(Boolean)");
101 header.authorAction.toggled.connect(this, "toggleAuthor(Boolean)");
102 header.urlAction.toggled.connect(this, "toggleSourceUrl(Boolean)");
103 header.pinnedAction.toggled.connect(this, "togglePinned(Boolean)");
104 header.tagsAction.toggled.connect(this, "toggleTags(Boolean)");
105 header.notebookAction.toggled.connect(this, "toggleNotebook(Boolean)");
106 header.synchronizedAction.toggled.connect(this, "toggleSynchronized(Boolean)");
107 header.guidAction.toggled.connect(this, "toggleGuid(Boolean)");
108 header.thumbnailAction.toggled.connect(this, "toggleThumbnail(Boolean)");
109 header.titleAction.toggled.connect(this, "toggleTitle(Boolean)");
111 noteSignal = new NoteSignal();
112 setAcceptDrops(true);
113 setDragEnabled(true);
114 setDragDropMode(QAbstractItemView.DragDropMode.DragDrop);
115 setDropIndicatorShown(false);
119 runner.getNoteTableModel().setHeaderData(Global.noteTableCreationPosition, Qt.Orientation.Horizontal, tr("Date Created"), Qt.ItemDataRole.DisplayRole);
120 runner.getNoteTableModel().setHeaderData(Global.noteTableTagPosition, Qt.Orientation.Horizontal, tr("Tags"), Qt.ItemDataRole.DisplayRole);
121 runner.getNoteTableModel().setHeaderData(Global.noteTableGuidPosition, Qt.Orientation.Horizontal, tr("Guid"), Qt.ItemDataRole.DisplayRole);
122 runner.getNoteTableModel().setHeaderData(Global.noteTableNotebookPosition, Qt.Orientation.Horizontal, tr("Notebook"), Qt.ItemDataRole.DisplayRole);
123 runner.getNoteTableModel().setHeaderData(Global.noteTableTitlePosition, Qt.Orientation.Horizontal, tr("Title"), Qt.ItemDataRole.DisplayRole);
124 runner.getNoteTableModel().setHeaderData(Global.noteTableChangedPosition, Qt.Orientation.Horizontal, tr("Date Changed"), Qt.ItemDataRole.DisplayRole);
125 runner.getNoteTableModel().setHeaderData(Global.noteTableAuthorPosition, Qt.Orientation.Horizontal, tr("Author"), Qt.ItemDataRole.DisplayRole);
126 runner.getNoteTableModel().setHeaderData(Global.noteTableSourceUrlPosition, Qt.Orientation.Horizontal, tr("Source Url"), Qt.ItemDataRole.DisplayRole);
127 runner.getNoteTableModel().setHeaderData(Global.noteTableSubjectDatePosition, Qt.Orientation.Horizontal, tr("Subject Date"), Qt.ItemDataRole.DisplayRole);
128 runner.getNoteTableModel().setHeaderData(Global.noteTableSynchronizedPosition, Qt.Orientation.Horizontal, tr("Sync"), Qt.ItemDataRole.DisplayRole);
129 runner.getNoteTableModel().setHeaderData(Global.noteTablePinnedPosition, Qt.Orientation.Horizontal, tr("Pinned"), Qt.ItemDataRole.DisplayRole);
130 runner.getNoteTableModel().setHeaderData(Global.noteTableThumbnailPosition, Qt.Orientation.Horizontal, tr("Thumbnail"), Qt.ItemDataRole.DisplayRole);
131 header.sortIndicatorChanged.connect(this, "resetViewport()");
133 proxyModel = new NoteSortFilterProxyModel(this);
134 proxyModel.setSourceModel(runner.getNoteTableModel());
135 setAlternatingRowColors(false);
136 setModel(proxyModel);
137 runner.getNoteTableModel().setSortProxyModel(proxyModel);
139 setSortingEnabled(true);
140 int sortCol = proxyModel.sortColumn();
141 SortOrder sortOrder = proxyModel.sortOrder();
142 sortByColumn(sortCol, sortOrder);
144 setSelectionBehavior(SelectionBehavior.SelectRows);
145 setSelectionMode(SelectionMode.SingleSelection);
146 verticalHeader().setVisible(false);
147 hideColumn(Global.noteTableGuidPosition); // Hide the guid column
149 setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers);
151 QFontMetrics f = QApplication.fontMetrics();
152 fontHeight = f.height();
153 rowChanged = new Signal1<String>();
154 resetViewport = new Signal0();
156 NoteTableDateDelegate dateDelegate = new NoteTableDateDelegate();
157 setItemDelegateForColumn(Global.noteTableCreationPosition, dateDelegate);
158 setItemDelegateForColumn(Global.noteTableChangedPosition, dateDelegate);
159 setItemDelegateForColumn(Global.noteTableSubjectDatePosition, dateDelegate);
163 // This should rescroll to the current item in the list when a column is
164 // sorted. Somehow I can't get this to work, but this part is correct.
165 @SuppressWarnings("unused")
166 private void resetViewport() {
167 // if (currentIndex() == null)
170 // resetViewport.emit();
174 public void load(boolean reload) {
176 setSortingEnabled(false);
177 QFontMetrics f = QApplication.fontMetrics();
178 if (!Global.isColumnVisible("thumbnail"))
179 verticalHeader().setDefaultSectionSize(f.height());
181 if (Global.getListView() == Global.View_List_Wide)
182 verticalHeader().setDefaultSectionSize(Global.smallThumbnailSize.height());
184 verticalHeader().setDefaultSectionSize(Global.largeThumbnailSize.height());
186 for (int i=0; i<runner.getNoteIndex().size(); i++) {
187 String guid = runner.getNoteIndex().get(i).getGuid();
188 NoteMetadata metaInfo = runner.getNoteMetadata().get(guid);
189 if (Global.showDeleted == true && !runner.getNoteIndex().get(i).isActive()) {
190 proxyModel.addGuid(guid, null);
192 if (!Global.showDeleted == true &&
193 (runner.getNoteIndex().get(i).isActive() ||
194 metaInfo.isPinned())) {
195 proxyModel.addGuid(guid, metaInfo);
200 logger.log(logger.EXTREME, "TableView.load() reload starting.");
202 setSortingEnabled(true);
203 logger.log(logger.EXTREME, "TableView.load() leaving reload.");
206 logger.log(logger.EXTREME, "TableView.load() Filling table data from scratch");
208 for (int i=0; i<runner.getMasterNoteIndex().size(); i++) {
209 if (runner.getMasterNoteIndex().get(i) != null) {
210 Note note = runner.getMasterNoteIndex().get(i);
211 NoteMetadata meta = runner.getNoteMetadata().get(note.getGuid());
212 insertRow(runner.getMasterNoteIndex().get(i), meta, false, i);
215 proxyModel.invalidate();
217 resizeColumnWidths();
222 setSortingEnabled(true);
223 resetViewport.emit();
226 public void repositionColumns() {
227 int from = header.visualIndex(Global.noteTableCreationPosition);
228 int to = Global.getColumnPosition("noteTableCreationPosition");
229 if (to>=0) header.moveSection(from, to);
231 from = header.visualIndex(Global.noteTableTitlePosition);
232 to = Global.getColumnPosition("noteTableTitlePosition");
233 if (to>=0) header.moveSection(from, to);
235 from = header.visualIndex(Global.noteTableTagPosition);
236 to = Global.getColumnPosition("noteTableTagPosition");
237 if (to>=0) header.moveSection(from, to);
239 from = header.visualIndex(Global.noteTableNotebookPosition);
240 to = Global.getColumnPosition("noteTableNotebookPosition");
241 if (to>=0) header.moveSection(from, to);
243 from = header.visualIndex(Global.noteTableChangedPosition);
244 to = Global.getColumnPosition("noteTableChangedPosition");
245 if (to>=0) header.moveSection(from, to);
247 from = header.visualIndex(Global.noteTableSourceUrlPosition);
248 to = Global.getColumnPosition("noteTableSourceUrlPosition");
249 if (to>=0) header.moveSection(from, to);
251 from = header.visualIndex(Global.noteTableAuthorPosition);
252 to = Global.getColumnPosition("noteTableAuthorPosition");
253 if (to>=0) header.moveSection(from, to);
255 from = header.visualIndex(Global.noteTableSubjectDatePosition);
256 to = Global.getColumnPosition("noteTableSubjectDatePosition");
257 if (to>=0) header.moveSection(from, to);
259 from = header.visualIndex(Global.noteTableSynchronizedPosition);
260 to = Global.getColumnPosition("noteTableSynchronizedPosition");
261 if (to>=0) header.moveSection(from, to);
263 from = header.visualIndex(Global.noteTablePinnedPosition);
264 to = Global.getColumnPosition("noteTablePinnedPosition");
265 if (to>=0) header.moveSection(from, to);
268 from = header.visualIndex(Global.noteTableGuidPosition);
269 to = Global.getColumnPosition("noteTableGuidPosition");
270 if (to>=0) header.moveSection(from, to);
273 from = header.visualIndex(Global.noteTableThumbnailPosition);
274 to = Global.getColumnPosition("noteTableThumbnailPosition");
275 if (to>=0) header.moveSection(from, to);
279 public void resizeColumnWidths() {
281 width = Global.getColumnWidth("noteTableCreationPosition");
282 if (width>0) setColumnWidth(Global.noteTableCreationPosition, width);
283 width = Global.getColumnWidth("noteTableChangedPosition");
284 if (width>0) setColumnWidth(Global.noteTableChangedPosition, width);
285 width = Global.getColumnWidth("noteTableTitlePosition");
286 if (width>0) setColumnWidth(Global.noteTableTitlePosition, width);
287 width = Global.getColumnWidth("noteTableTagPosition");
288 if (width>0) setColumnWidth(Global.noteTableTagPosition, width);
289 width = Global.getColumnWidth("noteTableGuidPosition");
290 if (width>0) setColumnWidth(Global.noteTableGuidPosition, width);
291 width = Global.getColumnWidth("noteTableNotebookPosition");
292 if (width>0) setColumnWidth(Global.noteTableNotebookPosition, width);
293 width = Global.getColumnWidth("noteTableSourceUrlPosition");
294 if (width>0) setColumnWidth(Global.noteTableSourceUrlPosition, width);
295 width = Global.getColumnWidth("noteTableAuthorPosition");
296 if (width>0) setColumnWidth(Global.noteTableAuthorPosition, width);
297 width = Global.getColumnWidth("noteTableSubjectDatePosition");
298 if (width>0) setColumnWidth(Global.noteTableSubjectDatePosition, width);
299 width = Global.getColumnWidth("noteTableSynchronizedPosition");
300 if (width>0) setColumnWidth(Global.noteTableSynchronizedPosition, width);
301 width = Global.getColumnWidth("noteTableThumbnailPosition");
302 if (width>0) setColumnWidth(Global.noteTablePinnedPosition, width);
303 width = Global.getColumnWidth("noteTablePinnedPosition");
304 if (width>0) setColumnWidth(Global.noteTableThumbnailPosition, width);
305 width = Global.getColumnWidth("noteTableGuidPosition");
306 if (width>0) setColumnWidth(Global.noteTableGuidPosition, width);
310 public void resizeRowHeights() {
312 if (!Global.isColumnVisible("thumbnail") || !Global.enableThumbnails()) {
313 QFontMetrics f = QApplication.fontMetrics();
314 verticalHeader().setDefaultSectionSize(f.height());
317 if (Global.getListView() == Global.View_List_Wide) {
318 verticalHeader().setDefaultSectionSize(Global.smallThumbnailSize.height());
319 height = Global.smallThumbnailSize.height();
321 verticalHeader().setDefaultSectionSize(Global.largeThumbnailSize.height());
322 height = Global.largeThumbnailSize.height();
325 for (int i=0; i<runner.getNoteTableModel().rowCount(); i++) {
326 setRowHeight(i, height);
330 public void insertRow(Note tempNote, NoteMetadata meta, boolean newNote, int row) {
332 proxyModel.addGuid(tempNote.getGuid(), meta);
333 if (row > runner.getNoteTableModel().rowCount())
334 runner.getNoteTableModel().insertRow(0);
337 row = runner.getNoteTableModel().rowCount();
338 runner.getNoteTableModel().insertRow(row);
344 protected boolean filterAcceptsRow(int sourceRow, QModelIndex sourceParent) {
348 public void setAddAction(QAction a) {
352 public void setMergeNotesAction(QAction a) {
353 mergeNotesAction = a;
356 public void setCopyAsUrlAction(QAction a) {
360 public void setNoteHistoryAction(QAction a) {
361 noteHistoryAction = a;
364 public void setDeleteAction(QAction d) {
368 public void setRestoreAction(QAction r) {
371 public void setNoteDuplicateAction(QAction d) {
376 public void setOpenNewTabAction(QAction t) {
377 openNewTabAction = t;
381 public void setAddNoteNewTabAction(QAction t) {
382 addNoteNewTabAction = t;
386 public void keyPressEvent(QKeyEvent e) {
387 if (e.matches(StandardKey.MoveToStartOfDocument)) {
388 if (runner.getNoteTableModel().rowCount() > 0) {
393 if (e.matches(StandardKey.MoveToEndOfDocument)) {
394 if (runner.getNoteTableModel().rowCount() > 0) {
396 selectRow(model().rowCount()-1);
399 super.keyPressEvent(e);
403 public void contextMenuEvent(QContextMenuEvent event) {
404 // ICHANGED QMenu から NoteTableContextMenu へ
405 QMenu menu = new QMenu(this);
408 menu.addAction(openNewTabAction);
412 if (Global.showDeleted) {
413 menu.addAction(restoreAction);
415 menu.addAction(addAction);
416 menu.addAction(addNoteNewTabAction);
420 menu.addAction(deleteAction);
422 menu.addAction(duplicateAction);
423 menu.addAction(copyAsUrlAction);
425 menu.addAction(noteHistoryAction);
426 menu.addAction(mergeNotesAction);
428 // ICHANGED QMenu から NoteTableContextMenu へ
429 QMenu titleColorMenu = new QMenu(this);
431 titleColorMenu.setTitle(tr("Title Color"));
432 menu.addMenu(titleColorMenu);
433 noteTitleColorWhite = new QAction(titleColorMenu);
434 noteTitleColorRed = new QAction(titleColorMenu);
435 noteTitleColorBlue = new QAction(titleColorMenu);
436 noteTitleColorGreen = new QAction(titleColorMenu);
437 noteTitleColorYellow = new QAction(titleColorMenu);
438 noteTitleColorBlack = new QAction(titleColorMenu);
439 noteTitleColorGray = new QAction(titleColorMenu);
440 noteTitleColorCyan = new QAction(titleColorMenu);
441 noteTitleColorMagenta = new QAction(titleColorMenu);
443 notePinned = new QAction(titleColorMenu);
444 menu.addAction(notePinned);
446 noteTitleColorWhite.setText(tr("White"));
447 noteTitleColorRed.setText(tr("Red"));
448 noteTitleColorBlue.setText(tr("Blue"));
449 noteTitleColorGreen.setText(tr("Green"));
450 noteTitleColorYellow.setText(tr("Yellow"));
451 noteTitleColorBlack.setText(tr("Black"));
452 noteTitleColorGray.setText(tr("Gray"));
453 noteTitleColorCyan.setText(tr("Cyan"));
454 noteTitleColorMagenta.setText(tr("Magenta"));
455 notePinned.setText(tr("Pin/Unpin"));
457 titleColorMenu.addAction(noteTitleColorWhite);
458 titleColorMenu.addAction(noteTitleColorRed);
459 titleColorMenu.addAction(noteTitleColorBlue);
460 titleColorMenu.addAction(noteTitleColorGreen);
461 titleColorMenu.addAction(noteTitleColorYellow);
462 titleColorMenu.addAction(noteTitleColorBlack);
463 titleColorMenu.addAction(noteTitleColorGray);
464 titleColorMenu.addAction(noteTitleColorCyan);
465 titleColorMenu.addAction(noteTitleColorMagenta);
467 noteTitleColorWhite.triggered.connect(this, "titleColorWhite()");
469 noteTitleColorWhite.triggered.connect(this, "titleColorWhite()");
470 noteTitleColorRed.triggered.connect(this, "titleColorRed()");
471 noteTitleColorBlue.triggered.connect(this, "titleColorBlue()");
472 noteTitleColorGreen.triggered.connect(this, "titleColorGreen()");
473 noteTitleColorYellow.triggered.connect(this, "titleColorYellow()");
474 noteTitleColorBlack.triggered.connect(this, "titleColorBlack()");
475 noteTitleColorGray.triggered.connect(this, "titleColorGray()");
476 noteTitleColorCyan.triggered.connect(this, "titleColorCyan()");
477 noteTitleColorMagenta.triggered.connect(this, "titleColorMagenta()");
478 notePinned.triggered.connect(this, "notePinned()");
479 menu.exec(event.globalPos());
483 @SuppressWarnings("unused")
484 private void titleColorWhite() {noteSignal.titleColorChanged.emit(QColor.white.rgb());}
485 @SuppressWarnings("unused")
486 private void titleColorRed() {noteSignal.titleColorChanged.emit(QColor.red.rgb());}
487 @SuppressWarnings("unused")
488 private void titleColorBlue() {noteSignal.titleColorChanged.emit(QColor.blue.rgb());}
489 @SuppressWarnings("unused")
490 private void titleColorGreen() {noteSignal.titleColorChanged.emit(QColor.green.rgb());}
491 @SuppressWarnings("unused")
492 private void titleColorYellow(){noteSignal.titleColorChanged.emit(QColor.yellow.rgb());}
493 @SuppressWarnings("unused")
494 private void titleColorBlack() {noteSignal.titleColorChanged.emit(QColor.black.rgb());}
495 @SuppressWarnings("unused")
496 private void titleColorGray() {noteSignal.titleColorChanged.emit(QColor.gray.rgb());}
497 @SuppressWarnings("unused")
498 private void titleColorCyan() {noteSignal.titleColorChanged.emit(QColor.cyan.rgb());}
499 @SuppressWarnings("unused")
500 private void titleColorMagenta() {noteSignal.titleColorChanged.emit(QColor.magenta.rgb());}
501 @SuppressWarnings("unused")
502 private void notePinned() {noteSignal.notePinned.emit();}
506 public void dragEnterEvent(QDragEnterEvent event) {
507 StringBuffer guid = new StringBuffer(1000);
509 showColumn(Global.noteTableGuidPosition);
510 List<QModelIndex> selections = selectionModel().selectedRows();
511 hideColumn(Global.noteTableGuidPosition);
513 if (selections.size() > 0) {
515 for (int i=0; i<selections.size(); i++) {
516 int row = selections.get(i).row();
517 index = proxyModel.index(row, Global.noteTableGuidPosition);
518 SortedMap<Integer, Object> ix = proxyModel.itemData(index);
519 guid.append((String)ix.values().toArray()[0]);
523 event.mimeData().setData("application/x-nevernote-note", new QByteArray(guid.toString()));
529 public void dropEvent(QDropEvent event) {
530 if (event.source() == this)
534 // Return a column width
535 public int getColumnWidth(int col) {
536 return columnWidth(col);
539 public void toggleSubjectDate(Boolean toggle) {
540 Global.saveColumnVisible("dateSubject", toggle);
541 setColumnHidden(Global.noteTableSubjectDatePosition, !toggle);
544 public void toggleChangedDate(Boolean toggle) {
545 Global.saveColumnVisible("dateChanged", toggle);
546 setColumnHidden(Global.noteTableChangedPosition, !toggle);
550 public void toggleCreationDate(Boolean toggle) {
551 Global.saveColumnVisible("dateCreated", toggle);
552 setColumnHidden(Global.noteTableCreationPosition, !toggle);
555 public void toggleSourceUrl(Boolean toggle) {
556 Global.saveColumnVisible("sourceUrl", toggle);
557 setColumnHidden(Global.noteTableSourceUrlPosition, !toggle);
560 public void toggleAuthor(Boolean toggle) {
561 Global.saveColumnVisible("author", toggle);
562 setColumnHidden(Global.noteTableAuthorPosition, !toggle);
565 public void toggleNotebook(Boolean toggle) {
566 Global.saveColumnVisible("notebook", toggle);
567 setColumnHidden(Global.noteTableNotebookPosition, !toggle);
570 public void toggleTitle(Boolean toggle) {
571 Global.saveColumnVisible("title", toggle);
572 setColumnHidden(Global.noteTableTitlePosition, !toggle);
575 public void toggleTags(Boolean toggle) {
576 Global.saveColumnVisible("tags", toggle);
577 setColumnHidden(Global.noteTableTagPosition, !toggle);
580 public void toggleSynchronized(Boolean toggle) {
581 Global.saveColumnVisible("synchronized", toggle);
582 setColumnHidden(Global.noteTableSynchronizedPosition, !toggle);
584 public void togglePinned(Boolean toggle) {
585 Global.saveColumnVisible("pinned", toggle);
586 setColumnHidden(Global.noteTablePinnedPosition, !toggle);
588 public void toggleGuid(Boolean toggle) {
589 Global.saveColumnVisible("guid", toggle);
590 setColumnHidden(Global.noteTableGuidPosition, !toggle);
592 public void toggleThumbnail(Boolean toggle) {
593 Global.saveColumnVisible("thumbnail", toggle);
596 QFontMetrics f = QApplication.fontMetrics();
598 verticalHeader().setDefaultSectionSize(f.height());
600 size = Global.smallThumbnailSize.height();
601 for (int i=0; i<runner.getNoteTableModel().rowCount(); i++) {
602 setRowHeight(i, size);
605 setColumnHidden(Global.noteTableThumbnailPosition, !toggle);