import java.util.HashMap;\r
import java.util.List;\r
\r
+import com.evernote.edam.type.Note;\r
import com.evernote.edam.type.Notebook;\r
import com.trolltech.qt.core.QByteArray;\r
import com.trolltech.qt.core.QMimeData;\r
import com.trolltech.qt.gui.QHeaderView;\r
import com.trolltech.qt.gui.QIcon;\r
import com.trolltech.qt.gui.QMenu;\r
+import com.trolltech.qt.gui.QMouseEvent;\r
import com.trolltech.qt.gui.QTreeWidget;\r
import com.trolltech.qt.gui.QTreeWidgetItem;\r
import com.trolltech.qt.gui.QTreeWidgetItem.ChildIndicatorPolicy;\r
private QAction editAction;\r
private QAction iconAction;\r
private QAction stackAction;\r
+ private QAction publishAction;\r
+ private QAction shareAction;\r
public NoteSignal noteSignal;\r
+ public Signal0 selectionSignal;\r
+ private String selectedNotebook;\r
private HashMap<String, QIcon> icons;\r
private final DatabaseConnection db;\r
- private List<NotebookCounter> lastCounts;\r
private final HashMap<String, QTreeWidgetItem> stacks;\r
-// private final QTreeWidgetItem previousMouseOver;\r
-// private boolean previousMouseOverWasSelected;\r
+ private boolean rightButtonClicked;\r
\r
public void setAddAction(QAction a) {\r
addAction = a;\r
}\r
\r
+ public void setPublishAction(QAction p) {\r
+ publishAction = p;\r
+ }\r
+ \r
+ public void setShareAction(QAction s) {\r
+ shareAction = s;\r
+ }\r
+ \r
public void setDeleteAction(QAction d) {\r
deleteAction = d;\r
}\r
// if (width>0)\r
// setColumnWidth(0, width);\r
// previousMouseOver = new QTreeWidgetItem();\r
+ selectionSignal = new Signal0();\r
+ selectedNotebook = "";\r
+ rightButtonClicked = false;\r
+ itemClicked.connect(this, "itemClicked()");\r
}\r
\r
public void selectNotebook(QTreeWidgetItem item) {\r
QIcon greenIcon = new QIcon(iconPath+"notebook-green.png");\r
QIcon redIcon = new QIcon(iconPath+"notebook-red.png");\r
QIcon yellowIcon = new QIcon(iconPath+"notebook-yellow.png");\r
-\r
- if (localBooks.contains(guid)) {\r
- return yellowIcon;\r
- }\r
+ QIcon orangeIcon = new QIcon(iconPath+"notebook-orange.png");\r
\r
if (localBooks.contains(guid) && \r
(name.equalsIgnoreCase("Conflicting Changes") ||\r
name.equalsIgnoreCase("Conflicting Changes (Local)")))\r
return redIcon;\r
+ if (localBooks.contains(guid)) {\r
+ return yellowIcon;\r
+ }\r
if (isPublished)\r
return blueIcon;\r
+ \r
+ if (db.getNotebookTable().isLinked(guid))\r
+ return orangeIcon;\r
\r
return greenIcon;\r
}\r
sortItems(0, SortOrder.AscendingOrder); \r
if (Global.mimicEvernoteInterface) {\r
String iconPath = new String("classpath:cx/fbn/nevernote/icons/");\r
- QIcon greenIcon = new QIcon(iconPath+"notebook-green.png");\r
+ QIcon allIcon = db.getSystemIconTable().getIcon("All Notebooks", "ALLNOTEBOOK");\r
+ \r
+ if (allIcon == null)\r
+ allIcon = new QIcon(iconPath+"notebook-green.png");\r
\r
child = new QTreeWidgetItem();\r
- child.setIcon(0, greenIcon);\r
+ child.setIcon(0, allIcon);\r
child.setText(0, "All Notebooks");\r
child.setText(2, "");\r
child.setTextAlignment(1, ra.value());\r
\r
// update the display with the current number of notes\r
public void updateCounts(List<Notebook> books, List<NotebookCounter> counts) {\r
- lastCounts = counts;\r
QTreeWidgetItem root = invisibleRootItem();\r
QTreeWidgetItem child;\r
\r
menu.addAction(deleteAction);\r
menu.addAction(stackAction);\r
menu.addSeparator();\r
+ menu.addAction(publishAction);\r
+ menu.addAction(shareAction);\r
+ menu.addSeparator();\r
menu.addAction(iconAction);\r
menu.exec(event.globalPos());\r
}\r
return false;\r
}\r
\r
+ // This is really dead code. it is the beginning of logic to create stacks by\r
+ // dragging.\r
if (data.hasFormat("application/x-nevernote-notebook")) {\r
QByteArray d = data.data("application/x-nevernote-notebook");\r
String current = d.toString();\r
\r
// If we are dropping a note onto a notebook\r
if (data.hasFormat("application/x-nevernote-note")) {\r
+ // If we are dropping onto a read-only notebook, we are done.\r
+ if (db.getNotebookTable().isReadOnly(parent.text(2)))\r
+ return false;\r
+ \r
QByteArray d = data.data("application/x-nevernote-note");\r
String s = d.toString();\r
String noteGuidArray[] = s.split(" ");\r
for (String element : noteGuidArray) {\r
- if (!parent.text(0).equalsIgnoreCase("All Notebooks") && \r
- !parent.text(2).equalsIgnoreCase("STACK"))\r
+ Note n = db.getNoteTable().getNote(element.trim(), false, false, false, false, true);\r
+ \r
+ // We need to be sure that...\r
+ // 1.) We are not dropping onto the "All Notebooks" stack\r
+ // 2.) We are not dropping onto a stack\r
+ // 3.) We are actually dropping onto a different notebook.\r
+ if (!parent.text(2).equalsIgnoreCase("") && \r
+ !parent.text(2).equalsIgnoreCase(tr("STACK")) &&\r
+ !(n.getNotebookGuid().equalsIgnoreCase(parent.text(2))\r
+ )) {\r
noteSignal.notebookChanged.emit(element.trim(), parent.text(2));\r
+ if (db.getNotebookTable().isLinked(parent.text(2))) {\r
+ noteSignal.tagsChanged.emit(element.trim(), new ArrayList<String>());\r
+ }\r
+ }\r
}\r
return true;\r
}\r
\r
private QTreeWidgetItem createStackIcon(String stackName, Qt.Alignment ra) {\r
String iconPath = new String("classpath:cx/fbn/nevernote/icons/");\r
- QIcon stackIcon = new QIcon(iconPath+"books2.png");\r
+ QIcon stackIcon;\r
+ stackIcon = db.getSystemIconTable().getIcon(stackName, "STACK");\r
+ \r
+ if (stackIcon == null)\r
+ stackIcon = new QIcon(iconPath+"books2.png");\r
QTreeWidgetItem parent = new QTreeWidgetItem();\r
stacks.put(stackName, parent);\r
parent.setText(0, stackName);\r
return target;\r
}\r
\r
+ \r
+ @SuppressWarnings("unused")\r
+ private void itemClicked() {\r
+ List<QTreeWidgetItem> selectedItem = selectedItems();\r
+ if (selectedItem.size() == 1) {\r
+ if (selectedItem.get(0).text(0).equalsIgnoreCase(selectedNotebook) && \r
+ !Global.mimicEvernoteInterface && !rightButtonClicked) {\r
+ selectedNotebook = "";\r
+ clearSelection();\r
+ } else {\r
+ selectedNotebook = selectedItem.get(0).text(0);\r
+ }\r
+ \r
+ }\r
+ selectionSignal.emit();\r
+ }\r
+\r
+ \r
+ @Override\r
+ public void mousePressEvent(QMouseEvent e) {\r
+ if (e.button() == Qt.MouseButton.RightButton)\r
+ rightButtonClicked = true;\r
+ else\r
+ rightButtonClicked = false;\r
+ super.mousePressEvent(e);\r
+ }\r
}\r