2 * This file is part of NixNote
\r
3 * Copyright 2009 Randy Baumgarte
\r
5 * This file may be licensed under the terms of of the
\r
6 * GNU General Public License Version 2 (the ``GPL'').
\r
8 * Software distributed under the License is distributed
\r
9 * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
\r
10 * express or implied. See the GPL for the specific language
\r
11 * governing rights and limitations.
\r
13 * You should have received a copy of the GPL along with this
\r
14 * program. If not, go to http://www.gnu.org/licenses/gpl.html
\r
15 * or write to the Free Software Foundation, Inc.,
\r
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
\r
19 package cx.fbn.nevernote.gui;
\r
21 import java.util.List;
\r
22 import java.util.SortedMap;
\r
24 import com.evernote.edam.type.Note;
\r
25 import com.trolltech.qt.core.QByteArray;
\r
26 import com.trolltech.qt.core.QModelIndex;
\r
27 import com.trolltech.qt.core.Qt;
\r
28 import com.trolltech.qt.core.Qt.Orientation;
\r
29 import com.trolltech.qt.core.Qt.SortOrder;
\r
30 import com.trolltech.qt.gui.QAbstractItemView;
\r
31 import com.trolltech.qt.gui.QAction;
\r
32 import com.trolltech.qt.gui.QApplication;
\r
33 import com.trolltech.qt.gui.QColor;
\r
34 import com.trolltech.qt.gui.QContextMenuEvent;
\r
35 import com.trolltech.qt.gui.QDragEnterEvent;
\r
36 import com.trolltech.qt.gui.QDropEvent;
\r
37 import com.trolltech.qt.gui.QFontMetrics;
\r
38 import com.trolltech.qt.gui.QKeyEvent;
\r
39 import com.trolltech.qt.gui.QKeySequence.StandardKey;
\r
40 import com.trolltech.qt.gui.QMenu;
\r
41 import com.trolltech.qt.gui.QTableView;
\r
43 import cx.fbn.nevernote.Global;
\r
44 import cx.fbn.nevernote.evernote.NoteMetadata;
\r
45 import cx.fbn.nevernote.filters.NoteSortFilterProxyModel;
\r
46 import cx.fbn.nevernote.signals.NoteSignal;
\r
47 import cx.fbn.nevernote.utilities.ApplicationLogger;
\r
48 import cx.fbn.nevernote.utilities.ListManager;
\r
50 public class TableView extends QTableView {
\r
51 private final ListManager runner;
\r
52 private final ApplicationLogger logger;
\r
53 public NoteSortFilterProxyModel proxyModel; // note sort model
\r
54 private QAction deleteAction;
\r
55 private QAction addAction;
\r
56 private QAction restoreAction;
\r
57 private QAction noteHistoryAction;
\r
58 private QAction duplicateAction;
\r
59 private QAction mergeNotesAction;
\r
61 // Note title colors
\r
62 private QAction noteTitleColorWhite;
\r
63 private QAction noteTitleColorRed;
\r
64 private QAction noteTitleColorBlue;
\r
65 private QAction noteTitleColorGreen;
\r
66 private QAction noteTitleColorYellow;
\r
67 private QAction noteTitleColorBlack;
\r
68 private QAction noteTitleColorGray;
\r
69 private QAction noteTitleColorCyan;
\r
70 private QAction noteTitleColorMagenta;
\r
71 private QAction notePinned;
\r
72 private QAction copyAsUrlAction;
\r
76 public TableViewHeader header;
\r
78 public Signal1<String> rowChanged;
\r
79 public Signal0 resetViewport;
\r
80 public NoteSignal noteSignal;
\r
82 public TableView(ApplicationLogger l, ListManager m) {
\r
84 header = new TableViewHeader(Orientation.Horizontal,this);
\r
85 setHorizontalHeader(header);
\r
86 header.setMovable(true);
\r
87 header.subjectDateAction.toggled.connect(this, "toggleSubjectDate(Boolean)");
\r
88 header.createdDateAction.toggled.connect(this, "toggleCreationDate(Boolean)");
\r
89 header.changedDateAction.toggled.connect(this, "toggleChangedDate(Boolean)");
\r
90 header.authorAction.toggled.connect(this, "toggleAuthor(Boolean)");
\r
91 header.urlAction.toggled.connect(this, "toggleSourceUrl(Boolean)");
\r
92 header.pinnedAction.toggled.connect(this, "togglePinned(Boolean)");
\r
93 header.tagsAction.toggled.connect(this, "toggleTags(Boolean)");
\r
94 header.notebookAction.toggled.connect(this, "toggleNotebook(Boolean)");
\r
95 header.synchronizedAction.toggled.connect(this, "toggleSynchronized(Boolean)");
\r
96 header.guidAction.toggled.connect(this, "toggleGuid(Boolean)");
\r
97 header.thumbnailAction.toggled.connect(this, "toggleThumbnail(Boolean)");
\r
98 header.titleAction.toggled.connect(this, "toggleTitle(Boolean)");
\r
100 noteSignal = new NoteSignal();
\r
101 setAcceptDrops(true);
\r
102 setDragEnabled(true);
\r
103 setDragDropMode(QAbstractItemView.DragDropMode.DragDrop);
\r
104 setDropIndicatorShown(false);
\r
108 runner.getNoteTableModel().setHeaderData(Global.noteTableCreationPosition, Qt.Orientation.Horizontal, tr("Date Created"), Qt.ItemDataRole.DisplayRole);
\r
109 runner.getNoteTableModel().setHeaderData(Global.noteTableTagPosition, Qt.Orientation.Horizontal, tr("Tags"), Qt.ItemDataRole.DisplayRole);
\r
110 runner.getNoteTableModel().setHeaderData(Global.noteTableGuidPosition, Qt.Orientation.Horizontal, tr("Guid"), Qt.ItemDataRole.DisplayRole);
\r
111 runner.getNoteTableModel().setHeaderData(Global.noteTableNotebookPosition, Qt.Orientation.Horizontal, tr("Notebook"), Qt.ItemDataRole.DisplayRole);
\r
112 runner.getNoteTableModel().setHeaderData(Global.noteTableTitlePosition, Qt.Orientation.Horizontal, tr("Title"), Qt.ItemDataRole.DisplayRole);
\r
113 runner.getNoteTableModel().setHeaderData(Global.noteTableChangedPosition, Qt.Orientation.Horizontal, tr("Date Changed"), Qt.ItemDataRole.DisplayRole);
\r
114 runner.getNoteTableModel().setHeaderData(Global.noteTableAuthorPosition, Qt.Orientation.Horizontal, tr("Author"), Qt.ItemDataRole.DisplayRole);
\r
115 runner.getNoteTableModel().setHeaderData(Global.noteTableSourceUrlPosition, Qt.Orientation.Horizontal, tr("Source Url"), Qt.ItemDataRole.DisplayRole);
\r
116 runner.getNoteTableModel().setHeaderData(Global.noteTableSubjectDatePosition, Qt.Orientation.Horizontal, tr("Subject Date"), Qt.ItemDataRole.DisplayRole);
\r
117 runner.getNoteTableModel().setHeaderData(Global.noteTableSynchronizedPosition, Qt.Orientation.Horizontal, tr("Synchronized"), Qt.ItemDataRole.DisplayRole);
\r
118 runner.getNoteTableModel().setHeaderData(Global.noteTablePinnedPosition, Qt.Orientation.Horizontal, tr("Pinned"), Qt.ItemDataRole.DisplayRole);
\r
119 runner.getNoteTableModel().setHeaderData(Global.noteTableThumbnailPosition, Qt.Orientation.Horizontal, tr("Thumbnail"), Qt.ItemDataRole.DisplayRole);
\r
120 header.sortIndicatorChanged.connect(this, "resetViewport()");
\r
122 proxyModel = new NoteSortFilterProxyModel(this);
\r
123 proxyModel.setSourceModel(runner.getNoteTableModel());
\r
124 setAlternatingRowColors(false);
\r
125 setModel(proxyModel);
\r
126 runner.getNoteTableModel().setSortProxyModel(proxyModel);
\r
128 setSortingEnabled(true);
\r
129 int sortCol = proxyModel.sortColumn();
\r
130 SortOrder sortOrder = proxyModel.sortOrder();
\r
131 sortByColumn(sortCol, sortOrder);
\r
133 setSelectionBehavior(SelectionBehavior.SelectRows);
\r
134 setSelectionMode(SelectionMode.SingleSelection);
\r
135 verticalHeader().setVisible(false);
\r
136 hideColumn(Global.noteTableGuidPosition); // Hide the guid column
\r
137 setShowGrid(false);
\r
138 setEditTriggers(QAbstractItemView.EditTrigger.NoEditTriggers);
\r
140 QFontMetrics f = QApplication.fontMetrics();
\r
141 fontHeight = f.height();
\r
142 rowChanged = new Signal1<String>();
\r
143 resetViewport = new Signal0();
\r
145 NoteTableDateDelegate dateDelegate = new NoteTableDateDelegate();
\r
146 setItemDelegateForColumn(Global.noteTableCreationPosition, dateDelegate);
\r
147 setItemDelegateForColumn(Global.noteTableChangedPosition, dateDelegate);
\r
148 setItemDelegateForColumn(Global.noteTableSubjectDatePosition, dateDelegate);
\r
152 // This should rescroll to the current item in the list when a column is
\r
153 // sorted. Somehow I can't get this to work, but this part is correct.
\r
154 @SuppressWarnings("unused")
\r
155 private void resetViewport() {
\r
156 // if (currentIndex() == null)
\r
159 // resetViewport.emit();
\r
163 public void load(boolean reload) {
\r
164 proxyModel.clear();
\r
165 setSortingEnabled(false);
\r
166 QFontMetrics f = QApplication.fontMetrics();
\r
167 if (!Global.isColumnVisible("thumbnail"))
\r
168 verticalHeader().setDefaultSectionSize(f.height());
\r
170 if (Global.getListView() == Global.View_List_Wide)
\r
171 verticalHeader().setDefaultSectionSize(Global.smallThumbnailSize.height());
\r
173 verticalHeader().setDefaultSectionSize(Global.largeThumbnailSize.height());
\r
175 for (int i=0; i<runner.getNoteIndex().size(); i++) {
\r
176 String guid = runner.getNoteIndex().get(i).getGuid();
\r
177 NoteMetadata metaInfo = runner.getNoteMetadata().get(guid);
\r
178 if (Global.showDeleted == true && !runner.getNoteIndex().get(i).isActive()) {
\r
179 proxyModel.addGuid(guid, null);
\r
181 if (!Global.showDeleted == true &&
\r
182 (runner.getNoteIndex().get(i).isActive() ||
\r
183 metaInfo.isPinned())) {
\r
184 proxyModel.addGuid(guid, metaInfo);
\r
189 logger.log(logger.EXTREME, "TableView.load() reload starting.");
\r
190 proxyModel.filter();
\r
191 setSortingEnabled(true);
\r
192 logger.log(logger.EXTREME, "TableView.load() leaving reload.");
\r
195 logger.log(logger.EXTREME, "TableView.load() Filling table data from scratch");
\r
197 for (int i=0; i<runner.getMasterNoteIndex().size(); i++) {
\r
198 if (runner.getMasterNoteIndex().get(i) != null) {
\r
199 Note note = runner.getMasterNoteIndex().get(i);
\r
200 NoteMetadata meta = runner.getNoteMetadata().get(note.getGuid());
\r
201 insertRow(runner.getMasterNoteIndex().get(i), meta, false, i);
\r
204 proxyModel.invalidate();
\r
206 resizeColumnWidths();
\r
207 repositionColumns();
\r
209 proxyModel.filter();
\r
211 setSortingEnabled(true);
\r
212 resetViewport.emit();
\r
215 public void repositionColumns() {
\r
216 int from = header.visualIndex(Global.noteTableCreationPosition);
\r
217 int to = Global.getColumnPosition("noteTableCreationPosition");
\r
218 if (to>=0) header.moveSection(from, to);
\r
220 from = header.visualIndex(Global.noteTableTitlePosition);
\r
221 to = Global.getColumnPosition("noteTableTitlePosition");
\r
222 if (to>=0) header.moveSection(from, to);
\r
224 from = header.visualIndex(Global.noteTableTagPosition);
\r
225 to = Global.getColumnPosition("noteTableTagPosition");
\r
226 if (to>=0) header.moveSection(from, to);
\r
228 from = header.visualIndex(Global.noteTableNotebookPosition);
\r
229 to = Global.getColumnPosition("noteTableNotebookPosition");
\r
230 if (to>=0) header.moveSection(from, to);
\r
232 from = header.visualIndex(Global.noteTableChangedPosition);
\r
233 to = Global.getColumnPosition("noteTableChangedPosition");
\r
234 if (to>=0) header.moveSection(from, to);
\r
236 from = header.visualIndex(Global.noteTableSourceUrlPosition);
\r
237 to = Global.getColumnPosition("noteTableSourceUrlPosition");
\r
238 if (to>=0) header.moveSection(from, to);
\r
240 from = header.visualIndex(Global.noteTableAuthorPosition);
\r
241 to = Global.getColumnPosition("noteTableAuthorPosition");
\r
242 if (to>=0) header.moveSection(from, to);
\r
244 from = header.visualIndex(Global.noteTableSubjectDatePosition);
\r
245 to = Global.getColumnPosition("noteTableSubjectDatePosition");
\r
246 if (to>=0) header.moveSection(from, to);
\r
248 from = header.visualIndex(Global.noteTableSynchronizedPosition);
\r
249 to = Global.getColumnPosition("noteTableSynchronizedPosition");
\r
250 if (to>=0) header.moveSection(from, to);
\r
252 from = header.visualIndex(Global.noteTablePinnedPosition);
\r
253 to = Global.getColumnPosition("noteTablePinnedPosition");
\r
254 if (to>=0) header.moveSection(from, to);
\r
257 from = header.visualIndex(Global.noteTableGuidPosition);
\r
258 to = Global.getColumnPosition("noteTableGuidPosition");
\r
259 if (to>=0) header.moveSection(from, to);
\r
262 from = header.visualIndex(Global.noteTableThumbnailPosition);
\r
263 to = Global.getColumnPosition("noteTableThumbnailPosition");
\r
264 if (to>=0) header.moveSection(from, to);
\r
268 public void resizeColumnWidths() {
\r
270 width = Global.getColumnWidth("noteTableCreationPosition");
\r
271 if (width>0) setColumnWidth(Global.noteTableCreationPosition, width);
\r
272 width = Global.getColumnWidth("noteTableChangedPosition");
\r
273 if (width>0) setColumnWidth(Global.noteTableChangedPosition, width);
\r
274 width = Global.getColumnWidth("noteTableTitlePosition");
\r
275 if (width>0) setColumnWidth(Global.noteTableTitlePosition, width);
\r
276 width = Global.getColumnWidth("noteTableTagPosition");
\r
277 if (width>0) setColumnWidth(Global.noteTableTagPosition, width);
\r
278 width = Global.getColumnWidth("noteTableGuidPosition");
\r
279 if (width>0) setColumnWidth(Global.noteTableGuidPosition, width);
\r
280 width = Global.getColumnWidth("noteTableNotebookPosition");
\r
281 if (width>0) setColumnWidth(Global.noteTableNotebookPosition, width);
\r
282 width = Global.getColumnWidth("noteTableSourceUrlPosition");
\r
283 if (width>0) setColumnWidth(Global.noteTableSourceUrlPosition, width);
\r
284 width = Global.getColumnWidth("noteTableAuthorPosition");
\r
285 if (width>0) setColumnWidth(Global.noteTableAuthorPosition, width);
\r
286 width = Global.getColumnWidth("noteTableSubjectDatePosition");
\r
287 if (width>0) setColumnWidth(Global.noteTableSubjectDatePosition, width);
\r
288 width = Global.getColumnWidth("noteTableSynchronizedPosition");
\r
289 if (width>0) setColumnWidth(Global.noteTableSynchronizedPosition, width);
\r
290 width = Global.getColumnWidth("noteTableThumbnailPosition");
\r
291 if (width>0) setColumnWidth(Global.noteTablePinnedPosition, width);
\r
292 width = Global.getColumnWidth("noteTablePinnedPosition");
\r
293 if (width>0) setColumnWidth(Global.noteTableThumbnailPosition, width);
\r
294 width = Global.getColumnWidth("noteTableGuidPosition");
\r
295 if (width>0) setColumnWidth(Global.noteTableGuidPosition, width);
\r
299 public void resizeRowHeights() {
\r
301 if (!Global.isColumnVisible("thumbnail") || !Global.enableThumbnails()) {
\r
302 QFontMetrics f = QApplication.fontMetrics();
\r
303 verticalHeader().setDefaultSectionSize(f.height());
\r
304 height = fontHeight;
\r
306 if (Global.getListView() == Global.View_List_Wide) {
\r
307 verticalHeader().setDefaultSectionSize(Global.smallThumbnailSize.height());
\r
308 height = Global.smallThumbnailSize.height();
\r
310 verticalHeader().setDefaultSectionSize(Global.largeThumbnailSize.height());
\r
311 height = Global.largeThumbnailSize.height();
\r
314 for (int i=0; i<runner.getNoteTableModel().rowCount(); i++) {
\r
315 setRowHeight(i, height);
\r
319 public void insertRow(Note tempNote, NoteMetadata meta, boolean newNote, int row) {
\r
321 proxyModel.addGuid(tempNote.getGuid(), meta);
\r
322 if (row > runner.getNoteTableModel().rowCount())
\r
323 runner.getNoteTableModel().insertRow(0);
\r
326 row = runner.getNoteTableModel().rowCount();
\r
327 runner.getNoteTableModel().insertRow(row);
\r
330 resizeRowHeights();
\r
333 protected boolean filterAcceptsRow(int sourceRow, QModelIndex sourceParent) {
\r
337 public void setAddAction(QAction a) {
\r
341 public void setMergeNotesAction(QAction a) {
\r
342 mergeNotesAction = a;
\r
345 public void setCopyAsUrlAction(QAction a) {
\r
346 copyAsUrlAction = a;
\r
349 public void setNoteHistoryAction(QAction a) {
\r
350 noteHistoryAction = a;
\r
353 public void setDeleteAction(QAction d) {
\r
357 public void setRestoreAction(QAction r) {
\r
360 public void setNoteDuplicateAction(QAction d) {
\r
361 duplicateAction = d;
\r
365 public void keyPressEvent(QKeyEvent e) {
\r
366 if (e.matches(StandardKey.MoveToStartOfDocument)) {
\r
367 if (runner.getNoteTableModel().rowCount() > 0) {
\r
372 if (e.matches(StandardKey.MoveToEndOfDocument)) {
\r
373 if (runner.getNoteTableModel().rowCount() > 0) {
\r
375 selectRow(model().rowCount()-1);
\r
378 super.keyPressEvent(e);
\r
382 public void contextMenuEvent(QContextMenuEvent event) {
\r
383 QMenu menu = new QMenu(this);
\r
384 if (Global.showDeleted) {
\r
385 menu.addAction(restoreAction);
\r
387 menu.addAction(addAction);
\r
389 menu.addAction(deleteAction);
\r
390 menu.addSeparator();
\r
391 menu.addAction(duplicateAction);
\r
392 menu.addAction(copyAsUrlAction);
\r
393 menu.addSeparator();
\r
394 menu.addAction(noteHistoryAction);
\r
395 menu.addAction(mergeNotesAction);
\r
397 QMenu titleColorMenu = new QMenu();
\r
398 titleColorMenu.setTitle(tr("Title Color"));
\r
399 menu.addMenu(titleColorMenu);
\r
400 noteTitleColorWhite = new QAction(titleColorMenu);
\r
401 noteTitleColorRed = new QAction(titleColorMenu);
\r
402 noteTitleColorBlue = new QAction(titleColorMenu);
\r
403 noteTitleColorGreen = new QAction(titleColorMenu);
\r
404 noteTitleColorYellow = new QAction(titleColorMenu);
\r
405 noteTitleColorBlack = new QAction(titleColorMenu);
\r
406 noteTitleColorGray = new QAction(titleColorMenu);
\r
407 noteTitleColorCyan = new QAction(titleColorMenu);
\r
408 noteTitleColorMagenta = new QAction(titleColorMenu);
\r
410 notePinned = new QAction(titleColorMenu);
\r
411 menu.addAction(notePinned);
\r
413 noteTitleColorWhite.setText(tr("White"));
\r
414 noteTitleColorRed.setText(tr("Red"));
\r
415 noteTitleColorBlue.setText(tr("Blue"));
\r
416 noteTitleColorGreen.setText(tr("Green"));
\r
417 noteTitleColorYellow.setText(tr("Yellow"));
\r
418 noteTitleColorBlack.setText(tr("Black"));
\r
419 noteTitleColorGray.setText(tr("Gray"));
\r
420 noteTitleColorCyan.setText(tr("Cyan"));
\r
421 noteTitleColorMagenta.setText(tr("Magenta"));
\r
422 notePinned.setText(tr("Pin/Unpin"));
\r
424 titleColorMenu.addAction(noteTitleColorWhite);
\r
425 titleColorMenu.addAction(noteTitleColorRed);
\r
426 titleColorMenu.addAction(noteTitleColorBlue);
\r
427 titleColorMenu.addAction(noteTitleColorGreen);
\r
428 titleColorMenu.addAction(noteTitleColorYellow);
\r
429 titleColorMenu.addAction(noteTitleColorBlack);
\r
430 titleColorMenu.addAction(noteTitleColorGray);
\r
431 titleColorMenu.addAction(noteTitleColorCyan);
\r
432 titleColorMenu.addAction(noteTitleColorMagenta);
\r
434 noteTitleColorWhite.triggered.connect(this, "titleColorWhite()");
\r
436 noteTitleColorWhite.triggered.connect(this, "titleColorWhite()");
\r
437 noteTitleColorRed.triggered.connect(this, "titleColorRed()");
\r
438 noteTitleColorBlue.triggered.connect(this, "titleColorBlue()");
\r
439 noteTitleColorGreen.triggered.connect(this, "titleColorGreen()");
\r
440 noteTitleColorYellow.triggered.connect(this, "titleColorYellow()");
\r
441 noteTitleColorBlack.triggered.connect(this, "titleColorBlack()");
\r
442 noteTitleColorGray.triggered.connect(this, "titleColorGray()");
\r
443 noteTitleColorCyan.triggered.connect(this, "titleColorCyan()");
\r
444 noteTitleColorMagenta.triggered.connect(this, "titleColorMagenta()");
\r
445 notePinned.triggered.connect(this, "notePinned()");
\r
446 menu.exec(event.globalPos());
\r
450 @SuppressWarnings("unused")
\r
451 private void titleColorWhite() {noteSignal.titleColorChanged.emit(QColor.white.rgb());}
\r
452 @SuppressWarnings("unused")
\r
453 private void titleColorRed() {noteSignal.titleColorChanged.emit(QColor.red.rgb());}
\r
454 @SuppressWarnings("unused")
\r
455 private void titleColorBlue() {noteSignal.titleColorChanged.emit(QColor.blue.rgb());}
\r
456 @SuppressWarnings("unused")
\r
457 private void titleColorGreen() {noteSignal.titleColorChanged.emit(QColor.green.rgb());}
\r
458 @SuppressWarnings("unused")
\r
459 private void titleColorYellow(){noteSignal.titleColorChanged.emit(QColor.yellow.rgb());}
\r
460 @SuppressWarnings("unused")
\r
461 private void titleColorBlack() {noteSignal.titleColorChanged.emit(QColor.black.rgb());}
\r
462 @SuppressWarnings("unused")
\r
463 private void titleColorGray() {noteSignal.titleColorChanged.emit(QColor.gray.rgb());}
\r
464 @SuppressWarnings("unused")
\r
465 private void titleColorCyan() {noteSignal.titleColorChanged.emit(QColor.cyan.rgb());}
\r
466 @SuppressWarnings("unused")
\r
467 private void titleColorMagenta() {noteSignal.titleColorChanged.emit(QColor.magenta.rgb());}
\r
468 @SuppressWarnings("unused")
\r
469 private void notePinned() {noteSignal.notePinned.emit();}
\r
473 public void dragEnterEvent(QDragEnterEvent event) {
\r
474 StringBuffer guid = new StringBuffer(1000);
\r
476 showColumn(Global.noteTableGuidPosition);
\r
477 List<QModelIndex> selections = selectionModel().selectedRows();
\r
478 hideColumn(Global.noteTableGuidPosition);
\r
480 if (selections.size() > 0) {
\r
482 for (int i=0; i<selections.size(); i++) {
\r
483 int row = selections.get(i).row();
\r
484 index = proxyModel.index(row, Global.noteTableGuidPosition);
\r
485 SortedMap<Integer, Object> ix = proxyModel.itemData(index);
\r
486 guid.append((String)ix.values().toArray()[0]);
\r
490 event.mimeData().setData("application/x-nevernote-note", new QByteArray(guid.toString()));
\r
496 public void dropEvent(QDropEvent event) {
\r
497 if (event.source() == this)
\r
501 // Return a column width
\r
502 public int getColumnWidth(int col) {
\r
503 return columnWidth(col);
\r
506 public void toggleSubjectDate(Boolean toggle) {
\r
507 Global.saveColumnVisible("dateSubject", toggle);
\r
508 setColumnHidden(Global.noteTableSubjectDatePosition, !toggle);
\r
511 public void toggleChangedDate(Boolean toggle) {
\r
512 Global.saveColumnVisible("dateChanged", toggle);
\r
513 setColumnHidden(Global.noteTableChangedPosition, !toggle);
\r
517 public void toggleCreationDate(Boolean toggle) {
\r
518 Global.saveColumnVisible("dateCreated", toggle);
\r
519 setColumnHidden(Global.noteTableCreationPosition, !toggle);
\r
522 public void toggleSourceUrl(Boolean toggle) {
\r
523 Global.saveColumnVisible("sourceUrl", toggle);
\r
524 setColumnHidden(Global.noteTableSourceUrlPosition, !toggle);
\r
527 public void toggleAuthor(Boolean toggle) {
\r
528 Global.saveColumnVisible("author", toggle);
\r
529 setColumnHidden(Global.noteTableAuthorPosition, !toggle);
\r
532 public void toggleNotebook(Boolean toggle) {
\r
533 Global.saveColumnVisible("notebook", toggle);
\r
534 setColumnHidden(Global.noteTableNotebookPosition, !toggle);
\r
537 public void toggleTitle(Boolean toggle) {
\r
538 Global.saveColumnVisible("title", toggle);
\r
539 setColumnHidden(Global.noteTableTitlePosition, !toggle);
\r
542 public void toggleTags(Boolean toggle) {
\r
543 Global.saveColumnVisible("tags", toggle);
\r
544 setColumnHidden(Global.noteTableTagPosition, !toggle);
\r
547 public void toggleSynchronized(Boolean toggle) {
\r
548 Global.saveColumnVisible("synchronized", toggle);
\r
549 setColumnHidden(Global.noteTableSynchronizedPosition, !toggle);
\r
551 public void togglePinned(Boolean toggle) {
\r
552 Global.saveColumnVisible("pinned", toggle);
\r
553 setColumnHidden(Global.noteTablePinnedPosition, !toggle);
\r
555 public void toggleGuid(Boolean toggle) {
\r
556 Global.saveColumnVisible("guid", toggle);
\r
557 setColumnHidden(Global.noteTableGuidPosition, !toggle);
\r
559 public void toggleThumbnail(Boolean toggle) {
\r
560 Global.saveColumnVisible("thumbnail", toggle);
\r
563 QFontMetrics f = QApplication.fontMetrics();
\r
565 verticalHeader().setDefaultSectionSize(f.height());
\r
567 size = Global.smallThumbnailSize.height();
\r
568 for (int i=0; i<runner.getNoteTableModel().rowCount(); i++) {
\r
569 setRowHeight(i, size);
\r
572 setColumnHidden(Global.noteTableThumbnailPosition, !toggle);
\r