OSDN Git Service

ツールバーのアイコン画像変更とテキスト表示を追加した
[neighbornote/NeighborNote.git] / src / cx / fbn / nevernote / NeverNote.java
index bd100e3..fe7cdaf 100644 (file)
@@ -106,7 +106,6 @@ import com.trolltech.qt.gui.QComboBox;
 import com.trolltech.qt.gui.QCursor;
 import com.trolltech.qt.gui.QDesktopServices;
 import com.trolltech.qt.gui.QDialog;
-import com.trolltech.qt.gui.QDockWidget;
 import com.trolltech.qt.gui.QFileDialog;
 import com.trolltech.qt.gui.QFileDialog.AcceptMode;
 import com.trolltech.qt.gui.QFileDialog.FileMode;
@@ -181,6 +180,7 @@ import cx.fbn.nevernote.gui.ExternalBrowse;
 import cx.fbn.nevernote.gui.MainMenuBar;
 import cx.fbn.nevernote.gui.NotebookTreeWidget;
 import cx.fbn.nevernote.gui.RensoNoteList;
+import cx.fbn.nevernote.gui.RensoNoteListDock;
 import cx.fbn.nevernote.gui.SavedSearchTreeWidget;
 import cx.fbn.nevernote.gui.SearchPanel;
 import cx.fbn.nevernote.gui.TabBrowse;
@@ -329,12 +329,14 @@ public class NeverNote extends QMainWindow{
     int                                        tagDeadCount=0;                         // number of consecutive dead times for the tag thread
     int                                        trashDeadCount=0;                       // number of consecutive dead times for the trash thread
     int                                saveThreadDeadCount=0;          // number of consecutive dead times for the save thread
+    int                                enRelatedNotesThreadDeadCount=0;        // number of consecutive dead times for the EvernoteRelatedNotes Thread
     boolean                            disableTagThreadCheck=false;
     boolean                            disableNotebookThreadCheck=false;
     boolean                            disableTrashThreadCheck=false;
     boolean                            disableSaveThreadCheck=false;
     boolean                            disableSyncThreadCheck=false;
     boolean                            disableIndexThreadCheck=false;
+    boolean                            disableENRelatedNotesThreadCheck=false;
     
     HashMap<String, String>            noteCache;                      // Cash of note content 
     HashMap<String, Boolean>   readOnlyCache;          // List of cashe notes that are read-only
@@ -364,8 +366,7 @@ public class NeverNote extends QMainWindow{
        // ICHANGED
        private final TabBrowserWidget tabBrowser; // ブラウザウィンドウをタブ化
        private final HashMap<Integer, TabBrowse> tabWindows; // タブウィンドウ
-       private final RensoNoteList rensoNoteList; // 連想ノートリスト
-       private final QDockWidget rensoNoteListDock; // 連想ノートリストドックウィジェット
+       private final RensoNoteListDock rensoNoteListDock; // 連想ノートリストドックウィジェット
        ClipBoardObserver cbObserver;
        String rensoNotePressedItemGuid;
        
@@ -454,9 +455,9 @@ public class NeverNote extends QMainWindow{
                indexThread = new QThread(indexRunner, "Index Thread");
         indexRunner.indexAttachmentsLocally = Global.indexAttachmentsLocally();
         indexRunner.indexImageRecognition = Global.indexImageRecognition();
-        indexRunner.indexNoteBody = Global.indexNoteBody();
-        indexRunner.indexNoteTitle = Global.indexNoteTitle();
-        indexRunner.specialIndexCharacters = Global.getSpecialIndexCharacters();
+//        indexRunner.indexNoteBody = Global.indexNoteBody();
+//        indexRunner.indexNoteTitle = Global.indexNoteTitle();
+//        indexRunner.specialIndexCharacters = Global.getSpecialIndexCharacters();
                indexThread.start();
                
         synchronizeAnimationTimer = new QTimer();
@@ -601,11 +602,11 @@ public class NeverNote extends QMainWindow{
                tabBrowser = new TabBrowserWidget(this);
                tabBrowser.setStyleSheet("QTabBar::tab{width:150px;}");
                tabBrowser.setMovable(true);
+               tabBrowser.setTabsClosable(true);
                TabBrowse tab = new TabBrowse(conn, tabBrowser, cbObserver);
                browserWindow = tab.getBrowserWindow();
                int index = tabBrowser.addNewTab(tab, "");
                tabWindows.put(index, tab);
-               tabBrowser.setTabsClosable(true);
                tabBrowser.currentChanged.connect(this, "tabWindowChanged(int)");
                tabBrowser.tabCloseRequested.connect(this, "tabWindowClosing(int)");
                
@@ -626,11 +627,7 @@ public class NeverNote extends QMainWindow{
         
                // ICHANGED
                // 連想ノートリストをセットアップ
-               rensoNoteList = new RensoNoteList(conn, this, syncRunner);
-               rensoNoteList.itemPressed.connect(this,
-                               "rensoNoteItemPressed(QListWidgetItem)");
-               rensoNoteListDock = new QDockWidget(tr("Renso Note List"), this);
-               rensoNoteListDock.setWidget(rensoNoteList);
+        rensoNoteListDock = new RensoNoteListDock(conn, this, syncRunner, iconPath, tr("Renso Note List"));
                addDockWidget(DockWidgetArea.RightDockWidgetArea, rensoNoteListDock);
 
                if (Global.getListView() == Global.View_List_Wide) {
@@ -1251,6 +1248,9 @@ public class NeverNote extends QMainWindow{
                saveNote();
                listManager.stop();
                saveWindowState();
+               
+               // 連想ノートリストのEvernote関連ノート取得スレッドを終了
+               rensoNoteListDock.getRensoNoteList().stopThread();
 
                if (tempFiles != null)
                        tempFiles.clear();
@@ -1453,7 +1453,7 @@ public class NeverNote extends QMainWindow{
                saveNoteColumnPositions();
                saveNoteIndexWidth();
                showColumns();
-        ConfigDialog settings = new ConfigDialog(this);
+        ConfigDialog settings = new ConfigDialog(this, conn);
         String dateFormat = Global.getDateFormat();
         String timeFormat = Global.getTimeFormat();
         
@@ -1462,9 +1462,9 @@ public class NeverNote extends QMainWindow{
         
         settings.exec();
         indexRunner.indexAttachmentsLocally = Global.indexAttachmentsLocally();
-        indexRunner.indexNoteBody = Global.indexNoteBody();
-        indexRunner.indexNoteTitle = Global.indexNoteTitle();
-        indexRunner.specialIndexCharacters = Global.getSpecialIndexCharacters();
+//        indexRunner.indexNoteBody = Global.indexNoteBody();
+//        indexRunner.indexNoteTitle = Global.indexNoteTitle();
+//        indexRunner.specialIndexCharacters = Global.getSpecialIndexCharacters();
         indexRunner.indexImageRecognition = Global.indexImageRecognition();
         if (Global.showTrayIcon() || Global.minimizeOnClose())
                trayIcon.show();
@@ -2965,6 +2965,7 @@ public class NeverNote extends QMainWindow{
                status.setResourceCount(conn.getNoteTable().noteResourceTable.getResourceCount());
                status.setWordCount(conn.getWordsTable().getWordCount());
                status.setHistoryCount(conn.getHistoryTable().getHistoryCount());
+               status.setRensoClickCount(conn.getHistoryTable().getRensoClickCount());
                waitCursor(false);
                status.exec();
        }
@@ -3220,6 +3221,7 @@ public class NeverNote extends QMainWindow{
        logger.log(logger.HIGH, "Entering NeverNote.setupToolBar");
        toolBar = addToolBar(tr("Tool Bar"));   
        toolBar.setObjectName("toolBar");
+       toolBar.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonTextBesideIcon);
        menuBar.setupToolBarVisible();
        if (!Global.isWindowVisible("toolBar"))
                toolBar.setVisible(false);
@@ -3229,18 +3231,22 @@ public class NeverNote extends QMainWindow{
 //     toolBar.addWidget(menuBar);
 //     menuBar.setSizePolicy(Policy.Minimum, Policy.Minimum);
 //     toolBar.addSeparator();
-       prevButton = toolBar.addAction(tr("Previous"));
+       prevButton = toolBar.addAction(tr(""));
+       prevButton.setToolTip(tr("Previous"));
        QIcon prevIcon = new QIcon(iconPath+"back.png");
        prevButton.setIcon(prevIcon);
        prevButton.triggered.connect(this, "previousViewedAction()");   
        togglePrevArrowButton(Global.isToolbarButtonVisible("prevArrow"));
        
-       nextButton = toolBar.addAction(tr("Next"));
+       nextButton = toolBar.addAction(tr(""));
+       nextButton.setToolTip(tr("Next"));
        QIcon nextIcon = new QIcon(iconPath+"forward.png");
        nextButton.setIcon(nextIcon);
        nextButton.triggered.connect(this, "nextViewedAction()");       
        toggleNextArrowButton(Global.isToolbarButtonVisible("nextArrow"));
        
+       toolBar.addSeparator();
+       
        upButton = toolBar.addAction(tr("Up"));
        QIcon upIcon = new QIcon(iconPath+"up.png");
        upButton.setIcon(upIcon);
@@ -3747,6 +3753,7 @@ public class NeverNote extends QMainWindow{
 
                Global.isConnected = syncRunner.isConnected;
                
+               boolean autoLoginMessageFlag = false;
                if (!Global.isConnected) {
                OAuthWindow window = new OAuthWindow(logger);
                if (window.error) {
@@ -3773,6 +3780,7 @@ public class NeverNote extends QMainWindow{
                syncRunner.authToken = tokenizer.oauth_token;
                        syncRunner.enConnect();
                        Global.isConnected = syncRunner.isConnected;
+                       autoLoginMessageFlag = true;
                }
 //             Global.username = syncRunner.username;
                        
@@ -3780,9 +3788,16 @@ public class NeverNote extends QMainWindow{
                        return;
                setupOnlineMenu();
                setupConnectMenuOptions();
+               
+               // 初回ログイン時に自動ログインが無効だったら、有効化するか確認する
+               if (autoLoginMessageFlag && !Global.automaticLogin()) {
+                       if (QMessageBox.question(this, tr("Confirmation"), tr("Are you sure you want to enable the auto-login feature?"), 
+                                       QMessageBox.StandardButton.Yes, QMessageBox.StandardButton.No) == StandardButton.Yes.value()) {
+                               Global.setAutomaticLogin(true);
+                       }
+               }
+               
                logger.log(logger.HIGH, "Leaving NeverNote.remoteConnect");
-
-
     }
     private void setupConnectMenuOptions() {
        logger.log(logger.HIGH, "entering NeverNote.setupConnectMenuOptions");
@@ -4057,7 +4072,7 @@ public class NeverNote extends QMainWindow{
 
                // ICHANGED
                // 連想ノートリストを更新
-               rensoNoteList.refreshRensoNoteList(currentNoteGuid);
+               rensoNoteListDock.getRensoNoteList().refreshRensoNoteList(currentNoteGuid);
                
                waitCursor(false);
                logger.log(logger.HIGH, "Leaving NeverNote.noteTableSelection");
@@ -4906,6 +4921,11 @@ public class NeverNote extends QMainWindow{
                        fromHistory.remove(i + 1);
                }
                
+               // タブが残り1つになったら、閉じるボタンを消す
+               if (tabBrowser.count() == 1) {
+                       tabBrowser.hideTabCloseButton(0);
+               }
+               
                // タブの閉じるボタンを押すと、tabWindowClosingより先にtabWindowChangedが呼ばれてしまうので、手動で呼びなおす
                tabWindowChanged(tabBrowser.currentIndex());
        }
@@ -6743,7 +6763,15 @@ public class NeverNote extends QMainWindow{
                } else
                        indexThreadDeadCount=0;
 
-               
+               if (!rensoNoteListDock.getRensoNoteList().getEnRelatedNotesThread().isAlive()) {
+                       enRelatedNotesThreadDeadCount++;
+                       if (enRelatedNotesThreadDeadCount > MAX && !disableENRelatedNotesThreadCheck) {
+                               QMessageBox.information(this, tr("A thread has died."), tr("It appears as the Evernote Related Notes thread has died.  I recommend "+
+                                       "checking stopping NeighborNote, saving the logs for later viewing, and restarting.  Sorry."));
+                               disableENRelatedNotesThreadCheck = true;
+                       }
+               } else
+                       enRelatedNotesThreadDeadCount=0;
        }
 
        private void thumbnailTimer() {
@@ -7551,7 +7579,7 @@ public class NeverNote extends QMainWindow{
                refreshEvernoteNote(true);
 
                // 連想ノートリストを更新
-               rensoNoteList.refreshRensoNoteList(currentNoteGuid);
+               rensoNoteListDock.getRensoNoteList().refreshRensoNoteList(currentNoteGuid);
        }
        
        // ICHANGD
@@ -7611,7 +7639,7 @@ public class NeverNote extends QMainWindow{
        private void rensoNoteItemPressed(QListWidgetItem current) {
                logger.log(logger.HIGH, "Nevernote.rensoNoteSelectionChangeに入った");
 
-               rensoNotePressedItemGuid = rensoNoteList.getNoteGuid(current);
+               rensoNotePressedItemGuid = rensoNoteListDock.getRensoNoteList().getNoteGuid(current);
                
                // 右クリックだったら終了
                if (QApplication.mouseButtons().isSet(MouseButton.RightButton)) {
@@ -7678,7 +7706,7 @@ public class NeverNote extends QMainWindow{
                // 除外ノートテーブルに追加
                conn.getExcludedTable().addExclusion(guid, currentNoteGuid);
                
-               rensoNoteList.refreshRensoNoteList(currentNoteGuid);
+               rensoNoteListDock.getRensoNoteList().refreshRensoNoteList(currentNoteGuid);
        }
        
        // ICHANGED
@@ -7697,7 +7725,7 @@ public class NeverNote extends QMainWindow{
                // スター付きノートテーブルに追加
                conn.getStaredTable().addStaredItem(currentNoteGuid, guid);
                
-               rensoNoteList.refreshRensoNoteList(currentNoteGuid);
+               rensoNoteListDock.getRensoNoteList().refreshRensoNoteList(currentNoteGuid);
        }
        
        // ICHANGED
@@ -7716,7 +7744,7 @@ public class NeverNote extends QMainWindow{
                // スター付きノートテーブルから削除
                conn.getStaredTable().removeStaredItem(currentNoteGuid, guid);
                
-               rensoNoteList.refreshRensoNoteList(currentNoteGuid);
+               rensoNoteListDock.getRensoNoteList().refreshRensoNoteList(currentNoteGuid);
        }
        
        // ICHANGED
@@ -7757,4 +7785,9 @@ public class NeverNote extends QMainWindow{
                fromHistory.put(from,  fromHistory.get(to));
                fromHistory.put(to, fromHist);
        }
+       
+       // 連想ノートリストのgetter
+       public RensoNoteList getRensoNoteList() {
+               return rensoNoteListDock.getRensoNoteList();
+       }
 }