import com.trolltech.qt.core.QFileInfo;
import com.trolltech.qt.core.QFileSystemWatcher;
import com.trolltech.qt.core.QIODevice;
-import com.trolltech.qt.core.QIODevice.OpenModeFlag;
import com.trolltech.qt.core.QModelIndex;
import com.trolltech.qt.core.QSize;
import com.trolltech.qt.core.QTemporaryFile;
import com.trolltech.qt.core.QTimer;
import com.trolltech.qt.core.QUrl;
import com.trolltech.qt.core.Qt;
+import com.trolltech.qt.core.QIODevice.OpenModeFlag;
import com.trolltech.qt.core.Qt.SortOrder;
import com.trolltech.qt.core.Qt.WidgetAttribute;
import com.trolltech.qt.gui.QAbstractItemView;
-import com.trolltech.qt.gui.QAbstractItemView.ScrollHint;
import com.trolltech.qt.gui.QAction;
import com.trolltech.qt.gui.QApplication;
import com.trolltech.qt.gui.QCloseEvent;
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;
-import com.trolltech.qt.gui.QFileDialog.AcceptMode;
-import com.trolltech.qt.gui.QFileDialog.FileMode;
import com.trolltech.qt.gui.QGridLayout;
import com.trolltech.qt.gui.QHBoxLayout;
import com.trolltech.qt.gui.QIcon;
import com.trolltech.qt.gui.QMainWindow;
import com.trolltech.qt.gui.QMenu;
import com.trolltech.qt.gui.QMessageBox;
-import com.trolltech.qt.gui.QMessageBox.StandardButton;
import com.trolltech.qt.gui.QPixmap;
import com.trolltech.qt.gui.QPrintDialog;
import com.trolltech.qt.gui.QPrinter;
import com.trolltech.qt.gui.QProgressBar;
import com.trolltech.qt.gui.QSizePolicy;
-import com.trolltech.qt.gui.QSizePolicy.Policy;
import com.trolltech.qt.gui.QSpinBox;
import com.trolltech.qt.gui.QSplashScreen;
import com.trolltech.qt.gui.QSplitter;
import com.trolltech.qt.gui.QTextEdit;
import com.trolltech.qt.gui.QToolBar;
import com.trolltech.qt.gui.QTreeWidgetItem;
-import com.trolltech.qt.webkit.QWebPage.WebAction;
+import com.trolltech.qt.gui.QAbstractItemView.ScrollHint;
+import com.trolltech.qt.gui.QComboBox.InsertPolicy;
+import com.trolltech.qt.gui.QFileDialog.AcceptMode;
+import com.trolltech.qt.gui.QFileDialog.FileMode;
+import com.trolltech.qt.gui.QMessageBox.StandardButton;
+import com.trolltech.qt.gui.QSizePolicy.Policy;
import com.trolltech.qt.webkit.QWebSettings;
+import com.trolltech.qt.webkit.QWebPage.WebAction;
import com.trolltech.qt.xml.QDomAttr;
import com.trolltech.qt.xml.QDomDocument;
import com.trolltech.qt.xml.QDomElement;
import com.trolltech.qt.xml.QDomNodeList;
+import cx.fbn.nevernote.config.InitializationException;
+import cx.fbn.nevernote.config.StartupConfig;
import cx.fbn.nevernote.dialog.AccountDialog;
import cx.fbn.nevernote.dialog.ConfigDialog;
import cx.fbn.nevernote.dialog.DatabaseLoginDialog;
QApplication.initialize(args);
QPixmap pixmap = new QPixmap("classpath:cx/fbn/nevernote/icons/splash_logo.png");
QSplashScreen splash = new QSplashScreen(pixmap);
-
- for (String arg : args) {
- String lower = arg.toLowerCase();
- if (lower.startsWith("--name="))
- Global.setName(arg.substring(arg.indexOf('=')+1));
- if (lower.startsWith("--home="))
- Global.currentDir = arg.substring(arg.indexOf('=')+1);
- if (lower.startsWith("--disable-viewing"))
- Global.disableViewing = true;
+
+ try {
+ initializeGlobalSettings(args);
+ } catch (InitializationException e) {
+ QMessageBox.critical(null, "Startup error", "Aborting: " + e.getMessage());
+ return;
}
- Global.setup();
+
boolean showSplash = Global.isWindowVisible("SplashScreen");
if (showSplash)
splash.show();
System.out.println("Goodbye.");
QApplication.exit();
}
- // Exit point
+
+ private static void initializeGlobalSettings(String[] args) throws InitializationException {
+ StartupConfig startupConfig = new StartupConfig();
+
+ for (String arg : args) {
+ String lower = arg.toLowerCase();
+ if (lower.startsWith("--name="))
+ startupConfig.setName(arg.substring(arg.indexOf('=') + 1));
+ if (lower.startsWith("--home="))
+ startupConfig.setHomeDirPath(arg.substring(arg.indexOf('=') + 1));
+ if (lower.startsWith("--disable-viewing"))
+ startupConfig.setDisableViewing(true);
+ }
+
+ Global.setup(startupConfig);
+ }
+
+ // Exit point
@Override
public void closeEvent(QCloseEvent event) {
logger.log(logger.HIGH, "Entering NeverNote.closeEvent");
}
private boolean lockApplication() {
- String fileName = Global.currentDir +"db" +File.separator +"NeverNote.lock.db";
+ // NFC TODO: who creates this - H2? should it be parameterized with databaseName like in RDatabaseConnection?
+ String fileName = Global.getFileManager().getDbDirPath("NeverNote.lock.db");
// QFile.remove(fileName);
if (QFile.exists(fileName)) {
QMessageBox.question(this, "Lock File Detected",
*/
}
private void unlockApplication() {
- String fileName = Global.currentDir +"nevernote.lock";
+ // NFC TODO: should this be removed? Looks like H2 now handles the locking, which it will clean up itself. See #lockApplication.
+ String fileName = Global.getFileManager().getHomeDirPath("nevernote.lock");
if (QFile.exists(fileName)) {
QFile.remove(fileName);
}
QTextEdit textBox = new QTextEdit();
layout.addWidget(textBox);
textBox.setReadOnly(true);
- QFile file = new QFile(Global.getDirectoryPath()+"release.txt");
+ QFile file = new QFile(Global.getFileManager().getHomeDirPath("release.txt"));
if (!file.open(new QIODevice.OpenMode(QIODevice.OpenModeFlag.ReadOnly,
QIODevice.OpenModeFlag.Text)))
return;
AESEncrypter aes = new AESEncrypter();
try {
- aes.decrypt(new FileInputStream(Global.getDirectoryPath()+"secure.txt"));
+ aes.decrypt(new FileInputStream(Global.getFileManager().getHomeDirFile("secure.txt")));
} catch (FileNotFoundException e) {
// File not found, so we'll just get empty strings anyway.
}
// Get a note from Evernote (and put it in the browser)
private void refreshEvernoteNote(boolean reload) {
logger.log(logger.HIGH, "Entering NeverNote.refreshEvernoteNote");
- if (Global.disableViewing) {
+ if (Global.getDisableViewing()) {
browserWindow.setEnabled(false);
return;
}