OSDN Git Service

最後に開いていたタブのインデックスを正しく復元できるように修正。 restoreTabs
authoryuki <kimaira7@gmail.com>
Thu, 2 May 2013 05:56:39 +0000 (14:56 +0900)
committeryuki <kimaira7@gmail.com>
Thu, 2 May 2013 05:56:39 +0000 (14:56 +0900)
src/cx/fbn/nevernote/Global.java
src/cx/fbn/nevernote/NeverNote.java

index ef276f2..331d5b0 100644 (file)
@@ -2315,8 +2315,8 @@ public class Global {
                return tabWindows;
        }
        
-       // 最後に開いていたノート群をセット
-       public static void setLastViewedTabs(HashMap<Integer, String> tabs) {
+       // 最後に開いていたノート群を保存
+       public static void saveLastViewedTabs(HashMap<Integer, String> tabs) {
                settings.beginGroup("General");
                if (tabs != null) {
                        settings.setValue("lastViewedTabs", tabs);
@@ -2325,5 +2325,34 @@ public class Global {
                }
                settings.endGroup();
        }
+       
+    // 最後に開いていたタブのインデックスを取得
+    public static int getLastViewedTabIndex() {
+               settings.beginGroup("General");
+               Integer index;
+               try {
+                       String val = (String) settings.value("lastViewedTabIndex", 0);
+                       index = new Integer(val.trim());
+               } catch (Exception e) {
+                       try {
+                               index = (Integer) settings.value("lastViewedTabIndex", 0);
+                       } catch (Exception e1) {
+                               index = 0;
+                       }
+               }
+               settings.endGroup();
+               return index;
+    }
+    
+    // 最後に開いていたタブのインデックスを保存
+    public static void saveLastViewedTabIndex(Integer index) {
+               settings.beginGroup("General");
+               if (index != null) {
+                       settings.setValue("lastViewedTabIndex", index);
+               } else {
+                       settings.setValue("lastViewedTabIndex", 0);
+               }
+               settings.endGroup();
+    }
 }
 
index 820e7eb..ccbf058 100644 (file)
@@ -830,22 +830,9 @@ public class NeverNote extends QMainWindow{
                        currentNote = conn.getNoteTable().getNote(currentNoteGuid, true,true,false,false,true);
                }
                
-               // タブのフォーカスをcurrentNoteGuidのノートに移す
+               // タブのフォーカスをlastViewedTabIndexに移す
                if (tabBrowser.count() >= 2) {
-                       Collection<TabBrowse>   tabBrowsers = tabWindows.values();
-                       Iterator<TabBrowse>             tabBrowserIterator = tabBrowsers.iterator();
-                       Collection<Integer>             tabIndexes = tabWindows.keySet();
-                       Iterator<Integer>               tabIndexIterator = tabIndexes.iterator();
-                       
-                       while (tabBrowserIterator.hasNext()) {
-                               TabBrowse tab = tabBrowserIterator.next();
-                               int i = tabIndexIterator.next();
-                               String guid = tab.getBrowserWindow().getNote().getGuid();
-                               if (currentNoteGuid.equals(guid)) {
-                                       tabBrowser.setCurrentIndex(i);
-                                       break;
-                               }
-                       }
+                       tabBrowser.setCurrentIndex(Global.getLastViewedTabIndex());
                }
                
                noteIndexUpdated(true);
@@ -1317,6 +1304,7 @@ public class NeverNote extends QMainWindow{
                
                Global.saveWindowMaximized(isMaximized());
                Global.saveCurrentNoteGuid(currentNoteGuid);
+               Global.saveLastViewedTabIndex(tabBrowser.currentIndex());
                
                // 開いていたタブ群をsettingsに保存しておく
                Collection<TabBrowse>           tabBrowsers = tabWindows.values();
@@ -1327,10 +1315,12 @@ public class NeverNote extends QMainWindow{
                while (tabIterator.hasNext()) {
                        TabBrowse tab = tabIterator.next();
                        int index = indexIterator.next();
-                       String guid = tab.getBrowserWindow().getNote().getGuid();
-                       tabs.put(index, guid);
+                       if (tab.getBrowserWindow() != null && tab.getBrowserWindow().getNote() != null) {
+                               String guid = tab.getBrowserWindow().getNote().getGuid();
+                               tabs.put(index, guid);
+                       }
                }
-               Global.setLastViewedTabs(tabs);
+               Global.saveLastViewedTabs(tabs);
                        
                int sortCol = noteTableView.proxyModel.sortColumn();
                int sortOrder = noteTableView.proxyModel.sortOrder().value();