import com.trolltech.qt.gui.QColor;
import com.trolltech.qt.gui.QComboBox;
import com.trolltech.qt.gui.QComboBox.InsertPolicy;
+import com.trolltech.qt.gui.QCursor;
import com.trolltech.qt.gui.QDesktopServices;
import com.trolltech.qt.gui.QDialog;
import com.trolltech.qt.gui.QFileDialog;
}
private void waitCursor(boolean wait) {
-// if (wait)
-// QApplication.setOverrideCursor(new QCursor(Qt.CursorShape.WaitCursor));
-// else
-// QApplication.restoreOverrideCursor();
+ if (wait) {
+ if (QApplication.overrideCursor() == null)
+ QApplication.setOverrideCursor(new QCursor(Qt.CursorShape.WaitCursor));
+ }
+ else {
+ while (QApplication.overrideCursor() != null)
+ QApplication.restoreOverrideCursor();
+ }
}
private void setupIndexListeners() {
menuBar.notebookIconAction.setEnabled(true);
}
else {
- menuBar.notebookIconAction.setEnabled(false);
+ menuBar.notebookIconAction.setEnabled(true);
for (int j=0; j<listManager.getNotebookIndex().size(); j++) {
Notebook book = listManager.getNotebookIndex().get(j);
if (book.getStack() != null && book.getStack().equalsIgnoreCase(stackName))
}
// Change the notebook's icon
private void setNotebookIcon() {
+ boolean stackSelected = false;
+ boolean allNotebookSelected = false;
+
QTreeWidgetItem currentSelection;
List<QTreeWidgetItem> selections = notebookTree.selectedItems();
if (selections.size() == 0)
currentSelection = selections.get(0);
String guid = currentSelection.text(2);
if (guid.equalsIgnoreCase(""))
- return;
+ allNotebookSelected = true;
+ if (guid.equalsIgnoreCase("STACK"))
+ stackSelected = true;
QIcon currentIcon = currentSelection.icon(0);
- QIcon icon = conn.getNotebookTable().getIcon(guid);
+ QIcon icon;
SetIcon dialog;
- if (icon == null) {
- dialog = new SetIcon(currentIcon);
- dialog.setUseDefaultIcon(true);
+
+ if (!stackSelected && !allNotebookSelected) {
+ icon = conn.getNotebookTable().getIcon(guid);
+ if (icon == null) {
+ dialog = new SetIcon(currentIcon);
+ dialog.setUseDefaultIcon(true);
+ } else {
+ dialog = new SetIcon(icon);
+ dialog.setUseDefaultIcon(false);
+ }
} else {
- dialog = new SetIcon(icon);
- dialog.setUseDefaultIcon(false);
+ if (stackSelected) {
+ icon = conn.getSystemIconTable().getIcon(currentSelection.text(0), "STACK");
+ } else {
+ icon = conn.getSystemIconTable().getIcon(currentSelection.text(0), "ALLNOTEBOOK");
+ }
+ if (icon == null) {
+ dialog = new SetIcon(currentIcon);
+ dialog.setUseDefaultIcon(true);
+ } else {
+ dialog = new SetIcon(icon);
+ dialog.setUseDefaultIcon(false);
+ }
}
dialog.exec();
if (dialog.okPressed()) {
QIcon newIcon = dialog.getIcon();
+ if (stackSelected) {
+ conn.getSystemIconTable().setIcon(currentSelection.text(0), "STACK", newIcon, dialog.getFileType());
+ if (newIcon == null) {
+ newIcon = new QIcon(iconPath+"books2.png");
+ }
+ currentSelection.setIcon(0,newIcon);
+ return;
+ }
+ if (allNotebookSelected) {
+ conn.getSystemIconTable().setIcon(currentSelection.text(0), "ALLNOTEBOOK", newIcon, dialog.getFileType());
+ if (newIcon == null) {
+ newIcon = new QIcon(iconPath+"notebook-green.png");
+ }
+ currentSelection.setIcon(0,newIcon);
+ return;
+ }
conn.getNotebookTable().setIcon(guid, newIcon, dialog.getFileType());
if (newIcon == null) {
boolean isPublished = false;;
--- /dev/null
+/*\r
+ * This file is part of NeverNote \r
+ * Copyright 2009 Randy Baumgarte\r
+ * \r
+ * This file may be licensed under the terms of of the\r
+ * GNU General Public License Version 2 (the ``GPL'').\r
+ *\r
+ * Software distributed under the License is distributed\r
+ * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either\r
+ * express or implied. See the GPL for the specific language\r
+ * governing rights and limitations.\r
+ *\r
+ * You should have received a copy of the GPL along with this\r
+ * program. If not, go to http://www.gnu.org/licenses/gpl.html\r
+ * or write to the Free Software Foundation, Inc.,\r
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\r
+ *\r
+*/\r
+\r
+\r
+package cx.fbn.nevernote.sql;\r
+\r
+import com.trolltech.qt.core.QBuffer;\r
+import com.trolltech.qt.core.QByteArray;\r
+import com.trolltech.qt.core.QIODevice;\r
+import com.trolltech.qt.gui.QIcon;\r
+import com.trolltech.qt.gui.QImage;\r
+import com.trolltech.qt.gui.QPixmap;\r
+\r
+import cx.fbn.nevernote.sql.driver.NSqlQuery;\r
+import cx.fbn.nevernote.utilities.ApplicationLogger;\r
+\r
+public class SystemIconTable {\r
+ \r
+ private final ApplicationLogger logger;\r
+ DatabaseConnection db;\r
+ \r
+ // Constructor\r
+ public SystemIconTable(ApplicationLogger l, DatabaseConnection d) {\r
+ logger = l;\r
+ db = d;\r
+ }\r
+ // Create the table\r
+ public void createTable() {\r
+ NSqlQuery query = new NSqlQuery(db.getConnection());\r
+ logger.log(logger.HIGH, "Creating table SystemIcon...");\r
+ if (!query.exec("Create table SystemIcon (name varchar, " +\r
+ "type varchar, " +\r
+ "primary key(name, type), " +\r
+ "icon blob)")) \r
+ logger.log(logger.HIGH, "Table SystemIcon creation FAILED!!!"); \r
+ }\r
+ // Drop the table\r
+ public void dropTable() {\r
+ NSqlQuery query = new NSqlQuery(db.getConnection());\r
+ query.exec("Drop table SystemIcon");\r
+ }\r
+\r
+ \r
+ // Get the notebooks custom icon\r
+ public QIcon getIcon(String name, String type) {\r
+ NSqlQuery query = new NSqlQuery(db.getConnection());\r
+ \r
+ if (!query.prepare("Select icon from SystemIcon where name=:name and type=:type"))\r
+ logger.log(logger.EXTREME, "Error preparing system icon select.");\r
+ query.bindValue(":name", name);\r
+ query.bindValue(":type", type);\r
+ if (!query.exec())\r
+ logger.log(logger.EXTREME, "Error finding system icon.");\r
+ if (!query.next() || query.getBlob(0) == null)\r
+ return null;\r
+ \r
+ QByteArray blob = new QByteArray(query.getBlob(0));\r
+ QIcon icon = new QIcon(QPixmap.fromImage(QImage.fromData(blob)));\r
+ return icon;\r
+ }\r
+ \r
+ \r
+ // Get the notebooks custom icon\r
+ public boolean exists(String name, String type) {\r
+ NSqlQuery query = new NSqlQuery(db.getConnection());\r
+ \r
+ if (!query.prepare("Select icon from SystemIcon where name=:name and type=:type"))\r
+ logger.log(logger.EXTREME, "Error preparing system icon select.");\r
+ query.bindValue(":name", name);\r
+ query.bindValue(":type", type);\r
+ if (!query.exec())\r
+ logger.log(logger.EXTREME, "Error finding system icon.");\r
+ if (!query.next() || query.getBlob(0) == null)\r
+ return false;\r
+ return true;\r
+ }\r
+ \r
+ \r
+ // Set the notebooks custom icon\r
+ public void setIcon(String name, String rectype, QIcon icon, String filetype) {\r
+ if (exists(name, rectype))\r
+ updateIcon(name, rectype, icon, filetype);\r
+ else\r
+ addIcon(name, rectype, icon, filetype);\r
+ }\r
+ \r
+ \r
+ \r
+ // Set the notebooks custom icon\r
+ public void addIcon(String name, String rectype, QIcon icon, String filetype) {\r
+ NSqlQuery query = new NSqlQuery(db.getConnection());\r
+ if (icon == null) {\r
+ return;\r
+ } else {\r
+ if (!query.prepare("Insert into SystemIcon (icon, name, type) values (:icon, :name, :type)"))\r
+ logger.log(logger.EXTREME, "Error preparing notebook icon select.");\r
+ QBuffer buffer = new QBuffer();\r
+ if (!buffer.open(QIODevice.OpenModeFlag.ReadWrite)) {\r
+ logger.log(logger.EXTREME, "Failure to open buffer. Aborting.");\r
+ return;\r
+ }\r
+ QPixmap p = icon.pixmap(32, 32);\r
+ QImage i = p.toImage();\r
+ i.save(buffer, filetype.toUpperCase());\r
+ buffer.close();\r
+ QByteArray b = new QByteArray(buffer.buffer());\r
+ if (!b.isNull() && !b.isEmpty())\r
+ query.bindValue(":icon", b.toByteArray());\r
+ else\r
+ return;\r
+ }\r
+ query.bindValue(":name", name);\r
+ query.bindValue(":type", rectype);\r
+ if (!query.exec()) \r
+ logger.log(logger.LOW, "Error setting system icon. " +query.lastError());\r
+ }\r
+ \r
+ \r
+ \r
+ // Set the notebooks custom icon\r
+ public void updateIcon(String name, String rectype, QIcon icon, String filetype) {\r
+ NSqlQuery query = new NSqlQuery(db.getConnection());\r
+ if (icon == null) {\r
+ if (!query.prepare("delete from SystemIcon where name=:name and type=:type"))\r
+ logger.log(logger.EXTREME, "Error preparing notebook icon select.");\r
+ } else {\r
+ if (!query.prepare("update SystemIcon set icon=:icon where name=:name and type=:type"))\r
+ logger.log(logger.EXTREME, "Error preparing notebook icon select.");\r
+ QBuffer buffer = new QBuffer();\r
+ if (!buffer.open(QIODevice.OpenModeFlag.ReadWrite)) {\r
+ logger.log(logger.EXTREME, "Failure to open buffer. Aborting.");\r
+ return;\r
+ }\r
+ QPixmap p = icon.pixmap(32, 32);\r
+ QImage i = p.toImage();\r
+ i.save(buffer, filetype.toUpperCase());\r
+ buffer.close();\r
+ QByteArray b = new QByteArray(buffer.buffer());\r
+ if (!b.isNull() && !b.isEmpty())\r
+ query.bindValue(":icon", b.toByteArray());\r
+ else\r
+ return;\r
+ }\r
+ query.bindValue(":name", name);\r
+ query.bindValue(":type", rectype);\r
+ if (!query.exec()) \r
+ logger.log(logger.LOW, "Error setting system icon. " +query.lastError());\r
+ }\r
+\r
+}\r
+\r