/*\r
- * This file is part of NeverNote \r
+ * This file is part of NixNote \r
* Copyright 2009 Randy Baumgarte\r
* \r
* This file may be licensed under the terms of of the\r
import com.trolltech.qt.gui.QTableView;\r
\r
import cx.fbn.nevernote.Global;\r
+import cx.fbn.nevernote.evernote.NoteMetadata;\r
import cx.fbn.nevernote.filters.NoteSortFilterProxyModel;\r
import cx.fbn.nevernote.signals.NoteSignal;\r
import cx.fbn.nevernote.utilities.ApplicationLogger;\r
private QAction noteTitleColorGray;\r
private QAction noteTitleColorCyan;\r
private QAction noteTitleColorMagenta;\r
+ private QAction notePinned;\r
+ private QAction copyAsUrlAction;\r
\r
\r
\r
header.changedDateAction.toggled.connect(this, "toggleChangedDate(Boolean)");\r
header.authorAction.toggled.connect(this, "toggleAuthor(Boolean)");\r
header.urlAction.toggled.connect(this, "toggleSourceUrl(Boolean)");\r
+ header.pinnedAction.toggled.connect(this, "togglePinned(Boolean)");\r
header.tagsAction.toggled.connect(this, "toggleTags(Boolean)");\r
header.notebookAction.toggled.connect(this, "toggleNotebook(Boolean)");\r
header.synchronizedAction.toggled.connect(this, "toggleSynchronized(Boolean)");\r
+ header.guidAction.toggled.connect(this, "toggleGuid(Boolean)");\r
+ header.thumbnailAction.toggled.connect(this, "toggleThumbnail(Boolean)");\r
+ header.titleAction.toggled.connect(this, "toggleTitle(Boolean)");\r
\r
noteSignal = new NoteSignal();\r
setAcceptDrops(true);\r
runner.getNoteTableModel().setHeaderData(Global.noteTableSourceUrlPosition, Qt.Orientation.Horizontal, tr("Source Url"), Qt.ItemDataRole.DisplayRole);\r
runner.getNoteTableModel().setHeaderData(Global.noteTableSubjectDatePosition, Qt.Orientation.Horizontal, tr("Subject Date"), Qt.ItemDataRole.DisplayRole);\r
runner.getNoteTableModel().setHeaderData(Global.noteTableSynchronizedPosition, Qt.Orientation.Horizontal, tr("Synchronized"), Qt.ItemDataRole.DisplayRole);\r
+ runner.getNoteTableModel().setHeaderData(Global.noteTablePinnedPosition, Qt.Orientation.Horizontal, tr("Pinned"), Qt.ItemDataRole.DisplayRole);\r
+ runner.getNoteTableModel().setHeaderData(Global.noteTableThumbnailPosition, Qt.Orientation.Horizontal, tr("Thumbnail"), Qt.ItemDataRole.DisplayRole);\r
header.sortIndicatorChanged.connect(this, "resetViewport()");\r
\r
proxyModel = new NoteSortFilterProxyModel(this);\r
proxyModel.setSourceModel(runner.getNoteTableModel());\r
setAlternatingRowColors(false);\r
setModel(proxyModel);\r
-// setModel(runner.getNoteTableModel());\r
runner.getNoteTableModel().setSortProxyModel(proxyModel);\r
\r
setSortingEnabled(true);\r
proxyModel.clear();\r
setSortingEnabled(false);\r
QFontMetrics f = QApplication.fontMetrics();\r
- verticalHeader().setDefaultSectionSize(f.height());\r
+ if (!Global.isColumnVisible("thumbnail"))\r
+ verticalHeader().setDefaultSectionSize(f.height());\r
+ else {\r
+ if (Global.getListView() == Global.View_List_Wide)\r
+ verticalHeader().setDefaultSectionSize(Global.smallThumbnailSize.height());\r
+ else\r
+ verticalHeader().setDefaultSectionSize(Global.largeThumbnailSize.height());\r
+ }\r
for (int i=0; i<runner.getNoteIndex().size(); i++) {\r
- if (Global.showDeleted == true && !runner.getNoteIndex().get(i).isActive())\r
- proxyModel.addGuid(runner.getNoteIndex().get(i).getGuid());\r
- if (!Global.showDeleted == true && runner.getNoteIndex().get(i).isActive()) \r
- proxyModel.addGuid(runner.getNoteIndex().get(i).getGuid());\r
+ String guid = runner.getNoteIndex().get(i).getGuid();\r
+ NoteMetadata metaInfo = runner.getNoteMetadata().get(guid);\r
+ if (Global.showDeleted == true && !runner.getNoteIndex().get(i).isActive()) {\r
+ proxyModel.addGuid(guid, null);\r
+ }\r
+ if (!Global.showDeleted == true && \r
+ (runner.getNoteIndex().get(i).isActive() || \r
+ metaInfo.isPinned())) { \r
+ proxyModel.addGuid(guid, metaInfo);\r
+ }\r
}\r
\r
if (!reload) {\r
\r
for (int i=0; i<runner.getMasterNoteIndex().size(); i++) {\r
if (runner.getMasterNoteIndex().get(i) != null) { \r
- insertRow(runner.getMasterNoteIndex().get(i), false, i); \r
+ Note note = runner.getMasterNoteIndex().get(i);\r
+ NoteMetadata meta = runner.getNoteMetadata().get(note.getGuid());\r
+ insertRow(runner.getMasterNoteIndex().get(i), meta, false, i); \r
}\r
} \r
proxyModel.invalidate();\r
\r
- int width;\r
- width = Global.getColumnWidth("noteTableCreationPosition");\r
- if (width>0) setColumnWidth(Global.noteTableCreationPosition, width);\r
- width = Global.getColumnWidth("noteTableChangedPosition");\r
- if (width>0) setColumnWidth(Global.noteTableChangedPosition, width);\r
- width = Global.getColumnWidth("noteTableTitlePosition");\r
- if (width>0) setColumnWidth(Global.noteTableTitlePosition, width);\r
- width = Global.getColumnWidth("noteTableTagPosition");\r
- if (width>0) setColumnWidth(Global.noteTableTagPosition, width);\r
- width = Global.getColumnWidth("noteTableGuidPosition");\r
- if (width>0) setColumnWidth(Global.noteTableGuidPosition, width);\r
- width = Global.getColumnWidth("noteTableNotebookPosition");\r
- if (width>0) setColumnWidth(Global.noteTableNotebookPosition, width);\r
- width = Global.getColumnWidth("noteTableSourceUrlPosition");\r
- if (width>0) setColumnWidth(Global.noteTableSourceUrlPosition, width);\r
- width = Global.getColumnWidth("noteTableAuthorPosition");\r
- if (width>0) setColumnWidth(Global.noteTableAuthorPosition, width);\r
- width = Global.getColumnWidth("noteTableSubjectDatePosition");\r
- if (width>0) setColumnWidth(Global.noteTableSubjectDatePosition, width);\r
- width = Global.getColumnWidth("noteTableSynchronizedPosition");\r
- if (width>0) setColumnWidth(Global.noteTableSynchronizedPosition, width);\r
+ resizeColumnWidths();\r
+ repositionColumns();\r
\r
+ proxyModel.filter();\r
+ \r
+ setSortingEnabled(true);\r
+ resetViewport.emit();\r
+ }\r
+ \r
+ public void repositionColumns() {\r
int from = header.visualIndex(Global.noteTableCreationPosition);\r
int to = Global.getColumnPosition("noteTableCreationPosition");\r
if (to>=0) header.moveSection(from, to);\r
to = Global.getColumnPosition("noteTableSynchronizedPosition");\r
if (to>=0) header.moveSection(from, to);\r
\r
- proxyModel.filter();\r
+ from = header.visualIndex(Global.noteTablePinnedPosition);\r
+ to = Global.getColumnPosition("noteTablePinnedPosition");\r
+ if (to>=0) header.moveSection(from, to);\r
+\r
\r
- setSortingEnabled(true);\r
- resetViewport.emit();\r
+ from = header.visualIndex(Global.noteTableGuidPosition);\r
+ to = Global.getColumnPosition("noteTableGuidPosition");\r
+ if (to>=0) header.moveSection(from, to);\r
+ \r
+ \r
+ from = header.visualIndex(Global.noteTableThumbnailPosition);\r
+ to = Global.getColumnPosition("noteTableThumbnailPosition");\r
+ if (to>=0) header.moveSection(from, to);\r
+\r
}\r
+ \r
+ public void resizeColumnWidths() {\r
+ int width;\r
+ width = Global.getColumnWidth("noteTableCreationPosition");\r
+ if (width>0) setColumnWidth(Global.noteTableCreationPosition, width);\r
+ width = Global.getColumnWidth("noteTableChangedPosition");\r
+ if (width>0) setColumnWidth(Global.noteTableChangedPosition, width);\r
+ width = Global.getColumnWidth("noteTableTitlePosition");\r
+ if (width>0) setColumnWidth(Global.noteTableTitlePosition, width);\r
+ width = Global.getColumnWidth("noteTableTagPosition");\r
+ if (width>0) setColumnWidth(Global.noteTableTagPosition, width);\r
+ width = Global.getColumnWidth("noteTableGuidPosition");\r
+ if (width>0) setColumnWidth(Global.noteTableGuidPosition, width);\r
+ width = Global.getColumnWidth("noteTableNotebookPosition");\r
+ if (width>0) setColumnWidth(Global.noteTableNotebookPosition, width);\r
+ width = Global.getColumnWidth("noteTableSourceUrlPosition");\r
+ if (width>0) setColumnWidth(Global.noteTableSourceUrlPosition, width);\r
+ width = Global.getColumnWidth("noteTableAuthorPosition");\r
+ if (width>0) setColumnWidth(Global.noteTableAuthorPosition, width);\r
+ width = Global.getColumnWidth("noteTableSubjectDatePosition");\r
+ if (width>0) setColumnWidth(Global.noteTableSubjectDatePosition, width);\r
+ width = Global.getColumnWidth("noteTableSynchronizedPosition");\r
+ if (width>0) setColumnWidth(Global.noteTableSynchronizedPosition, width);\r
+ width = Global.getColumnWidth("noteTableThumbnailPosition");\r
+ if (width>0) setColumnWidth(Global.noteTablePinnedPosition, width);\r
+ width = Global.getColumnWidth("noteTablePinnedPosition");\r
+ if (width>0) setColumnWidth(Global.noteTableThumbnailPosition, width);\r
+ width = Global.getColumnWidth("noteTableGuidPosition");\r
+ if (width>0) setColumnWidth(Global.noteTableGuidPosition, width);\r
\r
- public void insertRow(Note tempNote, boolean newNote, int row) {\r
+ }\r
+ \r
+ public void resizeRowHeights() {\r
+ int height;\r
+ if (!Global.isColumnVisible("thumbnail") || !Global.enableThumbnails()) {\r
+ QFontMetrics f = QApplication.fontMetrics();\r
+ verticalHeader().setDefaultSectionSize(f.height());\r
+ height = fontHeight;\r
+ } else {\r
+ if (Global.getListView() == Global.View_List_Wide) {\r
+ verticalHeader().setDefaultSectionSize(Global.smallThumbnailSize.height());\r
+ height = Global.smallThumbnailSize.height();\r
+ } else {\r
+ verticalHeader().setDefaultSectionSize(Global.largeThumbnailSize.height());\r
+ height = Global.largeThumbnailSize.height();\r
+ }\r
+ }\r
+ for (int i=0; i<runner.getNoteTableModel().rowCount(); i++) {\r
+ setRowHeight(i, height);\r
+ }\r
+ }\r
+ \r
+ public void insertRow(Note tempNote, NoteMetadata meta, boolean newNote, int row) {\r
if (newNote)\r
- proxyModel.addGuid(tempNote.getGuid());\r
- \r
+ proxyModel.addGuid(tempNote.getGuid(), meta);\r
if (row > runner.getNoteTableModel().rowCount())\r
runner.getNoteTableModel().insertRow(0);\r
\r
row = runner.getNoteTableModel().rowCount();\r
runner.getNoteTableModel().insertRow(row);\r
}\r
- \r
if (newNote) {\r
- QFontMetrics f = QApplication.fontMetrics();\r
- fontHeight = f.height();\r
- for (int i=0; i<runner.getNoteTableModel().rowCount(); i++)\r
- setRowHeight(i, fontHeight);\r
+ resizeRowHeights();\r
}\r
}\r
protected boolean filterAcceptsRow(int sourceRow, QModelIndex sourceParent) {\r
mergeNotesAction = a;\r
}\r
\r
+ public void setCopyAsUrlAction(QAction a) {\r
+ copyAsUrlAction = a;\r
+ }\r
+ \r
public void setNoteHistoryAction(QAction a) {\r
noteHistoryAction = a;\r
}\r
menu.addAction(deleteAction);\r
menu.addSeparator();\r
menu.addAction(duplicateAction);\r
+ menu.addAction(copyAsUrlAction);\r
+ menu.addSeparator();\r
menu.addAction(noteHistoryAction);\r
menu.addAction(mergeNotesAction);\r
\r
noteTitleColorGray = new QAction(titleColorMenu);\r
noteTitleColorCyan = new QAction(titleColorMenu);\r
noteTitleColorMagenta = new QAction(titleColorMenu);\r
+ \r
+ notePinned = new QAction(titleColorMenu);\r
+ menu.addAction(notePinned);\r
\r
noteTitleColorWhite.setText(tr("White"));\r
noteTitleColorRed.setText(tr("Red"));\r
noteTitleColorGray.setText(tr("Gray"));\r
noteTitleColorCyan.setText(tr("Cyan"));\r
noteTitleColorMagenta.setText(tr("Magenta"));\r
+ notePinned.setText(tr("Pin/Unpin"));\r
\r
titleColorMenu.addAction(noteTitleColorWhite);\r
titleColorMenu.addAction(noteTitleColorRed);\r
noteTitleColorGray.triggered.connect(this, "titleColorGray()");\r
noteTitleColorCyan.triggered.connect(this, "titleColorCyan()");\r
noteTitleColorMagenta.triggered.connect(this, "titleColorMagenta()");\r
- \r
+ notePinned.triggered.connect(this, "notePinned()");\r
menu.exec(event.globalPos());\r
}\r
\r
private void titleColorCyan() {noteSignal.titleColorChanged.emit(QColor.cyan.rgb());}\r
@SuppressWarnings("unused")\r
private void titleColorMagenta() {noteSignal.titleColorChanged.emit(QColor.magenta.rgb());}\r
- \r
+ @SuppressWarnings("unused")\r
+ private void notePinned() {noteSignal.notePinned.emit();}\r
\r
\r
@Override\r
public int getColumnWidth(int col) {\r
return columnWidth(col);\r
}\r
-\r
-/*\r
- @Override\r
- public void scrollTo(final QModelIndex index, ScrollHint hint) {\r
- QRect area = viewport().rect();\r
- QRect rect = visualRect(index);\r
-\r
- if (rect.top() < area.top())\r
- verticalScrollBar().setValue(\r
- verticalScrollBar().value() + rect.top() - area.top());\r
- else if (rect.bottom() > area.bottom())\r
- verticalScrollBar().setValue(\r
- verticalScrollBar().value() + Math.min(\r
- rect.bottom() - area.bottom(), rect.top() - area.top()));\r
- update();\r
- }\r
- \r
- @Override\r
- protected void updateGeometries() {\r
- verticalScrollBar().setPageStep(viewport().height());\r
- verticalScrollBar().setRange(0, Math.max(0, viewport().height()));\r
- }\r
- @Override\r
- protected int verticalOffset() {\r
- return verticalScrollBar().value();\r
- }\r
-*/\r
\r
public void toggleSubjectDate(Boolean toggle) {\r
Global.saveColumnVisible("dateSubject", toggle);\r
Global.saveColumnVisible("notebook", toggle);\r
setColumnHidden(Global.noteTableNotebookPosition, !toggle);\r
}\r
- \r
+\r
+ public void toggleTitle(Boolean toggle) {\r
+ Global.saveColumnVisible("title", toggle);\r
+ setColumnHidden(Global.noteTableTitlePosition, !toggle);\r
+ }\r
+\r
public void toggleTags(Boolean toggle) {\r
Global.saveColumnVisible("tags", toggle);\r
setColumnHidden(Global.noteTableTagPosition, !toggle);\r
Global.saveColumnVisible("synchronized", toggle);\r
setColumnHidden(Global.noteTableSynchronizedPosition, !toggle);\r
}\r
+ public void togglePinned(Boolean toggle) {\r
+ Global.saveColumnVisible("pinned", toggle);\r
+ setColumnHidden(Global.noteTablePinnedPosition, !toggle);\r
+ }\r
+ public void toggleGuid(Boolean toggle) {\r
+ Global.saveColumnVisible("guid", toggle);\r
+ setColumnHidden(Global.noteTableGuidPosition, !toggle);\r
+ } \r
+ public void toggleThumbnail(Boolean toggle) {\r
+ Global.saveColumnVisible("thumbnail", toggle);\r
+ int size;\r
+ if (!toggle) {\r
+ QFontMetrics f = QApplication.fontMetrics();\r
+ size = f.height();\r
+ verticalHeader().setDefaultSectionSize(f.height());\r
+ } else\r
+ size = Global.smallThumbnailSize.height();\r
+ for (int i=0; i<runner.getNoteTableModel().rowCount(); i++) {\r
+ setRowHeight(i, size);\r
+ }\r
+ \r
+ setColumnHidden(Global.noteTableThumbnailPosition, !toggle);\r
+ }\r
+ \r
}\r