import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.SortedMap;
import java.util.Vector;
import com.trolltech.qt.gui.QClipboard;
import com.trolltech.qt.gui.QCloseEvent;
import com.trolltech.qt.gui.QColor;
-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.QIcon;
import com.trolltech.qt.gui.QImage;
import com.trolltech.qt.gui.QKeySequence;
-import com.trolltech.qt.gui.QLabel;
import com.trolltech.qt.gui.QListWidgetItem;
import com.trolltech.qt.gui.QMainWindow;
import com.trolltech.qt.gui.QMenu;
import com.trolltech.qt.gui.QPrinter;
import com.trolltech.qt.gui.QShortcut;
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.gui.QWidget;
import com.trolltech.qt.network.QNetworkAccessManager;
import com.trolltech.qt.network.QNetworkProxy;
import com.trolltech.qt.network.QNetworkProxy.ProxyType;
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.SearchEdit;
import cx.fbn.nevernote.gui.TabBrowse;
import cx.fbn.nevernote.gui.TabBrowserWidget;
import cx.fbn.nevernote.gui.TableView;
import cx.fbn.nevernote.gui.TagTreeWidget;
import cx.fbn.nevernote.gui.Thumbnailer;
import cx.fbn.nevernote.gui.TrashTreeWidget;
+import cx.fbn.nevernote.gui.ZoomPanel;
import cx.fbn.nevernote.gui.controls.QuotaProgressBar;
import cx.fbn.nevernote.oauth.OAuthTokenizer;
import cx.fbn.nevernote.oauth.OAuthWindow;
public BrowserWindow browserWindow; // Window containing browser & labels
public QToolBar toolBar; // The tool bar under the menu
- QComboBox searchField; // search filter bar on the toolbar;
+ SearchEdit searchField; // search filter bar on the toolbar;
QShortcut searchShortcut; // Shortcut to search bar
boolean searchPerformed = false; // Search was done?
QuotaProgressBar quotaBar; // The current quota usage
QSpinBox zoomSpinner; // Zoom zoom
QAction searchClearButton; // Clear the search field
- SearchPanel searchLayout; // Widget to hold search field, zoom, & quota
+ ZoomPanel zoomLayout; // Widget to hold search field, zoom, & quota
QSplitter mainLeftRightSplitter; // main splitter for left/right side
QSplitter leftSplitter1; // first left hand splitter
trashTree = new TrashTreeWidget();
noteTableView = new TableView(logger, listManager, this);
- searchField = new QComboBox();
- searchField.setObjectName("searchField");
- //setStyleSheet("QComboBox#searchField { background-color: yellow }");
- searchField.setEditable(true);
- searchField.activatedIndex.connect(this, "searchFieldChanged()");
- searchField.setDuplicatesEnabled(false);
- searchField.editTextChanged.connect(this,"searchFieldTextChanged(String)");
- searchShortcut = new QShortcut(this);
- setupShortcut(searchShortcut, "Focus_Search");
- searchShortcut.activated.connect(this, "focusSearch()");
-
quotaBar = new QuotaProgressBar();
// Setup the zoom
zoomSpinner = new QSpinBox();
zoomSpinner.setValue(100);
zoomSpinner.valueChanged.connect(this, "zoomChanged()");
- searchLayout = new SearchPanel(searchField, quotaBar, notebookTree, zoomSpinner);
+ zoomLayout = new ZoomPanel(quotaBar, notebookTree, zoomSpinner);
QGridLayout leftGrid = new QGridLayout();
leftSplitter1.setContentsMargins(5, 0, 0, 7);
leftSplitter1.setLayout(leftGrid);
- leftGrid.addWidget(searchLayout,1,1);
+ leftGrid.addWidget(zoomLayout,1,1);
leftGrid.addWidget(tagTree,2,1);
leftGrid.addWidget(attributeTree,3,1);
leftGrid.addWidget(savedSearchTree,4,1);
int index = tabBrowser.addNewTab(tab, "");
tabWindows.put(index, tab);
tabBrowser.currentChanged.connect(this, "tabWindowChanged(int)");
- tabBrowser.tabCloseRequested.connect(this, "tabWindowClosing(int)");
+ tabBrowser.tabCloseRequested.connect(this, "tabCloseRequested(int)");
noteDirty = new HashMap<Integer, Boolean>();
noteDirty.put(index, false);
listManager.tagSignal.listChanged.connect(this, "reloadTagTree()");
if (!Global.isWindowVisible("zoom")) {
- searchLayout.hideZoom();
+ zoomLayout.hideZoom();
menuBar.hideZoom.setChecked(false);
}
if (!Global.isWindowVisible("quota"))
menuBar.hideQuota.setChecked(false);
- searchField.setVisible(Global.isWindowVisible("searchField"));
- // IFIXED !searchField.isVisible() → !Global.isWindowVisible("searchField")
- // なぜかsearchField.isVisible()が常にfalseを返すようなので修正
- if (!Global.isWindowVisible("searchField"))
- menuBar.hideSearch.setChecked(false);
-
- if (searchField.isHidden() && quotaBar.isHidden() && zoomSpinner.isHidden() && notebookTree.isHidden())
- searchLayout.hide();
+ if (quotaBar.isHidden() && zoomSpinner.isHidden() && notebookTree.isHidden())
+ zoomLayout.hide();
setMenuBar(menuBar);
setupToolBar();
@SuppressWarnings("unused")
private void toggleSearchWindow() {
logger.log(logger.HIGH, "Entering NeverNote.toggleSearchWindow");
- searchLayout.toggleSearchField();
+ toggleSearchField();
menuBar.hideSearch.setChecked(searchField.isVisible());
Global.saveWindowVisible("searchField", searchField.isVisible());
logger.log(logger.HIGH, "Leaving NeverNote.toggleSearchWindow");
- }
+ }
+ private void toggleSearchField() {
+ if (searchField.isVisible())
+ searchField.hide();
+ else
+ searchField.show();
+ }
+
@SuppressWarnings("unused")
private void toggleQuotaWindow() {
logger.log(logger.HIGH, "Entering NeverNote.toggleQuotaWindow");
- searchLayout.toggleQuotaBar();
+ zoomLayout.toggleQuotaBar();
menuBar.hideQuota.setChecked(quotaBar.isVisible());
Global.saveWindowVisible("quota", quotaBar.isVisible());
logger.log(logger.HIGH, "Leaving NeverNote.toggleQuotaWindow");
@SuppressWarnings("unused")
private void toggleZoomWindow() {
logger.log(logger.HIGH, "Entering NeverNote.toggleZoomWindow");
- searchLayout.toggleZoom();
+ zoomLayout.toggleZoom();
menuBar.hideZoom.setChecked(zoomSpinner.isVisible());
Global.saveWindowVisible("zoom", zoomSpinner.isVisible());
logger.log(logger.HIGH, "Leaving NeverNote.toggleZoomWindow");
clearSavedSearchFilter();
if (Global.mimicEvernoteInterface) {
clearTagFilter();
- //searchField.clear();
- searchField.clearEditText();
+ searchField.clear();
}
menuBar.noteRestoreAction.setVisible(false);
menuBar.notebookEditAction.setEnabled(true);
List<QTreeWidgetItem> selections = notebookTree.selectedItems();
selectedNotebookGUIDs.clear();
+ searchField.setTargetNotebook("");
+ searchField.setTargetStack("");
String guid = "";
String stackName = "";
if (selections.size() > 0) {
}
}
if (!guid.equals("") && !guid.equals("STACK")) {
- selectedNotebookGUIDs.add(guid);
+ selectedNotebookGUIDs.add(stackName);
+ searchField.setTargetNotebook(guid);
menuBar.notebookIconAction.setEnabled(true);
- } else {
+ } else { // スタック選択
+ searchField.setTargetStack(guid);
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))
+ if (book.getStack() != null && book.getStack().equalsIgnoreCase(stackName)) {
selectedNotebookGUIDs.add(book.getGuid());
+ }
}
}
listManager.setSelectedNotebooks(selectedNotebookGUIDs);
menuBar.notebookEditAction.setEnabled(false);
menuBar.notebookDeleteAction.setEnabled(false);
selectedNotebookGUIDs.clear();
+ searchField.setTargetNotebook("");
+ searchField.setTargetStack("");
listManager.setSelectedNotebooks(selectedNotebookGUIDs);
notebookTree.blockSignals(false);
}
notebookTree.load(books, listManager.getLocalNotebooks());
for (int i=selectedNotebookGUIDs.size()-1; i>=0; i--) {
boolean found = notebookTree.selectGuid(selectedNotebookGUIDs.get(i));
- if (!found)
+ if (!found) {
selectedNotebookGUIDs.remove(i);
+ searchField.setTargetNotebook("");
+ searchField.setTargetStack("");
+ }
}
listManager.refreshCounters = true;
listManager.refreshCounters();
@SuppressWarnings("unused")
private void toggleNotebookWindow() {
logger.log(logger.HIGH, "Entering NeverNote.toggleNotebookWindow");
- searchLayout.toggleNotebook();
+ zoomLayout.toggleNotebook();
menuBar.hideNotebooks.setChecked(notebookTree.isVisible());
Global.saveWindowVisible("notebookTree", notebookTree.isVisible());
logger.log(logger.HIGH, "Leaving NeverNote.toggleNotebookWindow");
List<QTreeWidgetItem> selections = tagTree.selectedItems();
QTreeWidgetItem currentSelection;
selectedTagGUIDs.clear();
+ searchField.getTargetTags().clear();
for (int i=0; i<selections.size(); i++) {
currentSelection = selections.get(i);
selectedTagGUIDs.add(currentSelection.text(2));
+ searchField.addTargetTag(currentSelection.text(2));
}
if (selections.size() > 0) {
menuBar.tagEditAction.setEnabled(true);
for (int i=selectedTagGUIDs.size()-1; i>=0; i--) {
boolean found = tagTree.selectGuid(selectedTagGUIDs.get(i));
- if (!found)
+ if (!found) {
selectedTagGUIDs.remove(i);
+ searchField.getTargetTags().remove(i);
+ }
}
tagTree.blockSignals(false);
menuBar.tagDeleteAction.setEnabled(false);
menuBar.tagIconAction.setEnabled(false);
selectedTagGUIDs.clear();
+ searchField.getTargetTags().clear();
listManager.setSelectedTags(selectedTagGUIDs);
tagTree.blockSignals(false);
}
savedSearchTree.clearSelection();
savedSearchTree.blockSignals(false);
selectedSavedSearchGUID = "";
- searchField.setEditText("");
+ searchField.setText("");
searchPerformed = false;
listManager.setSelectedSavedSearch(selectedSavedSearchGUID);
}
menuBar.savedSearchIconAction.setEnabled(true);
selectedSavedSearchGUID = selections.get(0).text(1);
SavedSearch s = conn.getSavedSearchTable().getSavedSearch(selectedSavedSearchGUID);
- searchField.setEditText(s.getQuery());
+ searchField.setText(s.getQuery());
} else {
menuBar.savedSearchEditAction.setEnabled(false);
menuBar.savedSearchDeleteAction.setEnabled(false);
menuBar.savedSearchIconAction.setEnabled(false);
selectedSavedSearchGUID = "";
- searchField.setEditText("");
+ searchField.setText("");
}
searchFieldChanged();
QMessageBox.about(this,
tr("About NeighborNote"),
tr("<h4><center><b>NeighborNote</b></center></h4><hr><center>Version ")
- +Global.version + "(based on NixNote 1.5)"
+ +Global.version + "(based on NixNote 1.6)"
//+"1.2.120724"
+tr("<hr>"
+"Open Source Evernote Client.<br><br>"
QWebSettings.setMaximumPagesInCache(0);
QWebSettings.setObjectCacheCapacities(0, 0, 0);
- searchField.setEditText("");
+ searchField.setDefaultText();
saveNoteColumnPositions();
saveNoteIndexWidth();
noteIndexUpdated(true);
QWebSettings.setMaximumPagesInCache(0);
QWebSettings.setObjectCacheCapacities(0, 0, 0);
- if (text.trim().equals("")) {
+ if (text.trim().equals("") && !searchField.hasFocus()) {
searchFieldCleared();
if (searchPerformed) {
inkNoteCache.clear();
saveNoteColumnPositions();
saveNoteIndexWidth();
- String text = searchField.currentText();
- listManager.setEnSearch(text.trim());
+ String query = searchField.getSearchQuery();
+ listManager.setEnSearch(query.trim());
listManager.loadNotesIndex();
noteIndexUpdated(false);
QIcon prevIcon = new QIcon(iconPath+"back.png");
prevButton.setIcon(prevIcon);
prevButton.triggered.connect(this, "previousViewedAction()");
- togglePrevArrowButton(Global.isToolbarButtonVisible("prevArrow"));
+ togglePrevArrowButton(Global.isToolbarButtonVisible("prevArrow", true));
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"));
+ toggleNextArrowButton(Global.isToolbarButtonVisible("nextArrow", true));
toolBar.addSeparator();
QIcon upIcon = new QIcon(iconPath+"up.png");
upButton.setIcon(upIcon);
upButton.triggered.connect(this, "upAction()");
- toggleUpArrowButton(Global.isToolbarButtonVisible("upArrow"));
+ toggleUpArrowButton(Global.isToolbarButtonVisible("upArrow", false));
downButton = toolBar.addAction(tr("Down"));
QIcon downIcon = new QIcon(iconPath+"down.png");
downButton.setIcon(downIcon);
downButton.triggered.connect(this, "downAction()");
- toggleDownArrowButton(Global.isToolbarButtonVisible("downArrow"));
+ toggleDownArrowButton(Global.isToolbarButtonVisible("downArrow", false));
synchronizeButton = toolBar.addAction(tr("Synchronize"));
synchronizeButton.setIcon(new QIcon(iconPath+"synchronize.png"));
synchronizeIconAngle = 0;
synchronizeButton.triggered.connect(this, "evernoteSync()");
- toggleSynchronizeButton(Global.isToolbarButtonVisible("synchronize"));
+ toggleSynchronizeButton(Global.isToolbarButtonVisible("synchronize", true));
printButton = toolBar.addAction(tr("Print"));
QIcon printIcon = new QIcon(iconPath+"print.png");
printButton.setIcon(printIcon);
printButton.triggered.connect(this, "printNote()");
- togglePrintButton(Global.isToolbarButtonVisible("print"));
+ togglePrintButton(Global.isToolbarButtonVisible("print", false));
tagButton = toolBar.addAction(tr("Tag"));
QIcon tagIcon = new QIcon(iconPath+"tag.png");
tagButton.setIcon(tagIcon);
tagButton.triggered.connect(browserWindow, "modifyTags()");
- toggleTagButton(Global.isToolbarButtonVisible("tag"));
+ toggleTagButton(Global.isToolbarButtonVisible("tag", false));
attributeButton = toolBar.addAction(tr("Attributes"));
QIcon attributeIcon = new QIcon(iconPath+"attribute.png");
attributeButton.setIcon(attributeIcon);
attributeButton.triggered.connect(this, "toggleNoteAttributes()");
- toggleAttributeButton(Global.isToolbarButtonVisible("attribute"));
+ toggleAttributeButton(Global.isToolbarButtonVisible("attribute", true));
emailButton = toolBar.addAction(tr("Email"));
QIcon emailIcon = new QIcon(iconPath+"email.png");
emailButton.setIcon(emailIcon);
emailButton.triggered.connect(this, "emailNote()");
- toggleEmailButton(Global.isToolbarButtonVisible("email"));
+ toggleEmailButton(Global.isToolbarButtonVisible("email", false));
deleteButton = toolBar.addAction(tr("Delete"));
QIcon deleteIcon = new QIcon(iconPath+"delete.png");
deleteButton.setIcon(deleteIcon);
deleteButton.triggered.connect(this, "deleteNote()");
- toggleDeleteButton(Global.isToolbarButtonVisible("delete"));
+ toggleDeleteButton(Global.isToolbarButtonVisible("delete", true));
newButton = toolBar.addAction(tr("New"));
QIcon newIcon = new QIcon(iconPath+"new.png");
}
newButton.setIcon(newIcon);
- toggleNewButton(Global.isToolbarButtonVisible("new"));
+ toggleNewButton(Global.isToolbarButtonVisible("new", true));
allNotesButton = toolBar.addAction(tr("All Notes"));
QIcon allIcon = new QIcon(iconPath+"books.png");
allNotesButton.triggered.connect(this, "allNotes()");
allNotesButton.setIcon(allIcon);
- toggleAllNotesButton(Global.isToolbarButtonVisible("allNotes"));
+ toggleAllNotesButton(Global.isToolbarButtonVisible("allNotes", true));
//toolBar.addSeparator();
//toolBar.addWidget(new QLabel(tr("Quota:")));
//toolBar.addWidget(new QLabel(" "));
//toolBar.addSeparator();
- //toolBar.addWidget(new QLabel(tr(" Search:")));
- //toolBar.addWidget(searchField);
- QSizePolicy sizePolicy = new QSizePolicy();
- sizePolicy.setHorizontalPolicy(Policy.MinimumExpanding);
- QLabel spacer = new QLabel("");
- spacer.setSizePolicy(sizePolicy);
- toolBar.addWidget(spacer);
+
+ // 検索ボックスを右寄せするためのスペーサ
+ QWidget spacerWidget = new QWidget();
+ spacerWidget.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Preferred);
+ toolBar.addWidget(spacerWidget);
+ spacerWidget.setVisible(true);
+
+ searchField = new SearchEdit(iconPath, conn);
+ searchField.setObjectName("searchField");
+ searchField.returnPressed.connect(this, "searchFieldChanged()");
+ searchField.textChanged.connect(this,"searchFieldTextChanged(String)");
+ searchField.setMaximumWidth(400);
+ searchField.setMinimumWidth(80);
+ searchField.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed);
+ searchShortcut = new QShortcut(this);
+ setupShortcut(searchShortcut, "Focus_Search");
+ searchShortcut.activated.connect(this, "focusSearch()");
+ toolBar.addWidget(searchField);
+
+ searchField.setVisible(Global.isWindowVisible("searchField"));
+ // IFIXED !searchField.isVisible() → !Global.isWindowVisible("searchField")
+ // なぜかsearchField.isVisible()が常にfalseを返すようなので修正
+ if (!Global.isWindowVisible("searchField"))
+ menuBar.hideSearch.setChecked(false);
+
+// QSizePolicy sizePolicy = new QSizePolicy();
+// sizePolicy.setHorizontalPolicy(Policy.MinimumExpanding);
+// QLabel spacer = new QLabel("");
+// spacer.setSizePolicy(sizePolicy);
+// toolBar.addWidget(spacer);
+
//searchField.setInsertPolicy(InsertPolicy.InsertAtTop);
//searchClearButton = toolBar.addAction("Search Clear");
contextMenu.addAction(allNotesAction);
allNotesAction.triggered.connect(this, "toggleAllNotesButton(Boolean)");
- QAction searchClearAction = addContextAction("searchClear", tr("Search Clear"));
- contextMenu.addAction(searchClearAction);
- searchClearAction.triggered.connect(this, "toggleSearchClearButton(Boolean)");
+// QAction searchClearAction = addContextAction("searchClear", tr("Search Clear"));
+// contextMenu.addAction(searchClearAction);
+// searchClearAction.triggered.connect(this, "toggleSearchClearButton(Boolean)");
return contextMenu;
QAction newAction = new QAction(this);
newAction.setText(name);
newAction.setCheckable(true);
- newAction.setChecked(Global.isToolbarButtonVisible(config));
+ newAction.setChecked(Global.isToolbarButtonVisible(config, true));
return newAction;
}
private void togglePrevArrowButton(Boolean toggle) {
allNotesButton.setVisible(toggle);
Global.saveToolbarButtonsVisible("allNotes", toggle);
}
- @SuppressWarnings("unused")
- private void toggleSearchClearButton(Boolean toggle) {
- searchClearButton.setVisible(toggle);
- Global.saveToolbarButtonsVisible("searchClear", toggle);
- }
+// @SuppressWarnings("unused")
+// private void toggleSearchClearButton(Boolean toggle) {
+// searchClearButton.setVisible(toggle);
+// Global.saveToolbarButtonsVisible("searchClear", toggle);
+// }
OAuthTokenizer tokenizer = new OAuthTokenizer();
AESEncrypter aes = new AESEncrypter();
try {
- aes.decrypt(new FileInputStream(Global.getFileManager().getHomeDirFile("oauth.txt")));
+ aes.decrypt(new FileInputStream(Global.getFileManager().getHomeDirFile("oauthkey.txt")));
} catch (FileNotFoundException e) {
// File not found, so we'll just get empty strings anyway.
}
}
aes.setString(window.response);
try {
- aes.encrypt(new FileOutputStream(Global.getFileManager().getHomeDirFile("oauth.txt")));
+ aes.encrypt(new FileOutputStream(Global.getFileManager().getHomeDirFile("oauthkey.txt")));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
+
+ // タブが閉じられた
+ @SuppressWarnings("unused")
+ private void tabCloseRequested(int index) {
+ tabWindowClosing((TabBrowse)tabBrowser.widget(index));
+ }
// タブが閉じられた
- private void tabWindowClosing(int index) {
+ private void tabWindowClosing(TabBrowse tab) {
// タブが1つしかなかったら閉じない
if (tabBrowser.count() <= 1) {
return;
}
- TabBrowse t = (TabBrowse) tabBrowser.widget(index);
- String guid = t.getBrowserWindow().getNote().getGuid();
- String content = t.getBrowserWindow().getContent();
- BrowserWindow browser = t.getBrowserWindow();
- // ノートが変更されていたら保存
- if (t.getNoteDirty()) {
- saveNoteTabBrowser(guid, content, true, browser);
- }
+ int index = tabBrowser.indexOf(tab);
+// String guid = tab.getBrowserWindow().getNote().getGuid();
+// String content = tab.getBrowserWindow().getContent();
+ BrowserWindow browser = tab.getBrowserWindow();
+// // ノートが変更されていたら保存
+// if (tab.getNoteDirty()) {
+// saveNoteTabBrowser(guid, content, true, browser);
+// }
// シグナル切断
browser.noteSignal.tagsChanged.disconnect();
browser.noteSignal.alteredDateChanged.disconnect();
// ノートを削除
- tabWindows.remove(index);
tabBrowser.removeTab(index);
+ tabWindows.remove(index);
noteDirty.remove(index);
inkNote.remove(index);
readOnly.remove(index);
// タブのインデックスを更新(削除によって空いた部分を詰める)
for(int i = index ; tabWindows.containsKey(i + 1) ; i++){
// tabWindows
- TabBrowse tab = tabWindows.get(i + 1);
- tabWindows.put(i, tab);
+ TabBrowse nextTab = tabWindows.get(i + 1);
+ tabWindows.put(i, nextTab);
tabWindows.remove(i + 1);
// noteDirty
boolean isNoteDirty = noteDirty.get(i + 1);
private void noteAddNewTab() {
saveNote();
+ // ノートを何も開いていないときは現在のタブにノート追加
+ if (currentNoteGuid == null || currentNoteGuid.equals("")) {
+ addNote();
+ return;
+ }
+
// ノート追加前に開いていたノートとの関連性を記録するためにguidをとっておく
TabBrowse prevTab = (TabBrowse)tabBrowser.currentWidget();
String prevTabGuid = null;
}
- private void saveNoteTabBrowser(String guid, String content, Boolean save,
- BrowserWindow browser) {
- QTextCodec codec = QTextCodec.codecForName("UTF-8");
- QByteArray unicode = codec.fromUnicode(content);
- noteCache.remove(guid);
- noteCache.put(guid, unicode.toString());
- if (save) {
- thumbnailRunner.addWork("GENERATE " + guid);
- saveNote(guid, browser);
- }
- }
+// private void saveNoteTabBrowser(String guid, String content, Boolean save,
+// BrowserWindow browser) {
+// QTextCodec codec = QTextCodec.codecForName("UTF-8");
+// QByteArray unicode = codec.fromUnicode(content);
+// noteCache.remove(guid);
+// noteCache.put(guid, unicode.toString());
+// if (save) {
+// thumbnailRunner.addWork("GENERATE " + guid);
+// saveNote(guid, browser);
+// }
+// }
private void saveNote() {
// すべてのタブに対して、Dirtyを確認し、trueならセーブする
return;
if (currentNoteGuid.equals(""))
return;
+
String title = null;
if (selectedNoteGUIDs.size() == 1)
title = conn.getNoteTable().getNote(selectedNoteGUIDs.get(0),false,false,false,false,false).getTitle();
return;
}
}
- if (selectedNoteGUIDs.size() == 0 && !currentNoteGuid.equals(""))
+ if (selectedNoteGUIDs.size() == 0 && !currentNoteGuid.equals("")) {
selectedNoteGUIDs.add(currentNoteGuid);
+ }
+
+ List<String> deleteNoteGUIDs = new ArrayList<String>(selectedNoteGUIDs); // タブを閉じるとselectedNoteGUIDsが変わってしまうのでその前にコピー
closeTabs(selectedNoteGUIDs);
- for (int i=0; i<selectedNoteGUIDs.size(); i++) {
- listManager.deleteNote(selectedNoteGUIDs.get(i));
+ for (String guid : deleteNoteGUIDs) {
+ listManager.deleteNote(guid);
}
+
+ closeExternalWindows(deleteNoteGUIDs);
} else {
// If we are deleting from the trash.
if (Global.verifyDelete()) {
}
if (selectedNoteGUIDs.size() == 0 && !currentNoteGuid.equals(""))
selectedNoteGUIDs.add(currentNoteGuid);
- for (int i=selectedNoteGUIDs.size()-1; i>=0; i--) {
+
+ List<String> deleteNoteGUIDs = new ArrayList<String>(selectedNoteGUIDs); // タブを閉じるとselectedNoteGUIDsが変わってしまうのでその前にコピー
+ for (int i=deleteNoteGUIDs.size()-1; i>=0; i--) {
for (int j=listManager.getNoteTableModel().rowCount()-1; j>=0; j--) {
QModelIndex modelIndex = listManager.getNoteTableModel().index(j, Global.noteTableGuidPosition);
if (modelIndex != null) {
SortedMap<Integer, Object> ix = listManager.getNoteTableModel().itemData(modelIndex);
String tableGuid = (String)ix.values().toArray()[0];
- if (tableGuid.equals(selectedNoteGUIDs.get(i))) {
+ if (tableGuid.equals(deleteNoteGUIDs.get(i))) {
listManager.getNoteTableModel().removeRow(j);
j=-1;
}
}
}
- closeTabs(selectedNoteGUIDs);
- listManager.expungeNote(selectedNoteGUIDs.get(i));
-
- conn.getHistoryTable().expungeHistory(selectedNoteGUIDs.get(i));
- conn.getExcludedTable().expungeExcludedNote(selectedNoteGUIDs.get(i));
- conn.getStaredTable().expungeStaredNote(selectedNoteGUIDs.get(i));
+ closeTab(deleteNoteGUIDs.get(i));
+ listManager.expungeNote(deleteNoteGUIDs.get(i));
+ conn.getHistoryTable().expungeHistory(deleteNoteGUIDs.get(i));
+ conn.getExcludedTable().expungeExcludedNote(deleteNoteGUIDs.get(i));
+ conn.getStaredTable().expungeStaredNote(deleteNoteGUIDs.get(i));
}
+
+ closeExternalWindows(deleteNoteGUIDs);
}
- currentNoteGuid = "";
- closeExternalWindows(selectedNoteGUIDs);
+
if (currentNoteGuid == null || currentNoteGuid.equals("")) {
menuBar.noteAddNewTab.setEnabled(false);
}
// 対象ノートをタブで開いていたら閉じる
private void closeTabs(List<String> noteGUIDs) {
- Collection<TabBrowse> tabBrowsers = tabWindows.values();
- Iterator<TabBrowse> tabIterator = tabBrowsers.iterator();
- Collection<Integer> tabIndexes = tabWindows.keySet();
- Iterator<Integer> indexIterator = tabIndexes.iterator();
- List<Integer> closeIndexes = new ArrayList<Integer>(); //イテレータ操作中に中身をいじっちゃダメなので
-
- while (tabIterator.hasNext()) {
- TabBrowse tab = tabIterator.next();
- int index = indexIterator.next();
- String guid = tab.getBrowserWindow().getNote().getGuid();
-
- for(int i = 0; i < noteGUIDs.size(); i++){
- if(guid.equals(noteGUIDs.get(i))){
- closeIndexes.add(index);
- }
- }
- }
-
- for(int i = closeIndexes.size() - 1; i >= 0; i--){
- tabWindowClosing(closeIndexes.get(i));
- }
+ for (String guid : noteGUIDs) {
+ closeTab(guid);
+ }
+ }
+
+ // 対象ノートをタブで開いていたら閉じる
+ private void closeTab(String noteGUID) {
+ List<TabBrowse> closeTabs = new ArrayList<TabBrowse>();
+
+ for (TabBrowse tab : tabWindows.values()) {
+ String guid = tab.getBrowserWindow().getNote().getGuid();
+
+ if (guid.equals(noteGUID)) {
+ closeTabs.add(tab);
+ }
+ }
+
+ for (TabBrowse tab : closeTabs) {
+ tabWindowClosing(tab);
+ }
}
// 対象ノートを外部ウィンドウで開いていたら閉じる
private void closeExternalWindows(List<String> noteGUIDs) {
- Collection<ExternalBrowse> windows = externalWindows.values();
- Iterator<ExternalBrowse> windowIterator = windows.iterator();
- Collection<String> guids = externalWindows.keySet();
- Iterator<String> guidIterator = guids.iterator();
- List<ExternalBrowse> closeWindows = new ArrayList<ExternalBrowse>(); // イテレータ操作中に中身をいじっちゃダメなので
+ List<ExternalBrowse> closeWindows = new ArrayList<ExternalBrowse>();
- while (windowIterator.hasNext()) {
- ExternalBrowse browser = windowIterator.next();
- String guid = guidIterator.next();
-
- for (int i = 0; i < noteGUIDs.size(); i++) {
- if (guid.equals(noteGUIDs.get(i))) {
- closeWindows.add(browser);
+ for (Map.Entry<String, ExternalBrowse> e : externalWindows.entrySet()) {
+ for (String guid : noteGUIDs) {
+ if (guid.equals(e.getKey())) {
+ closeWindows.add(e.getValue());
}
}
}
- for (int i = closeWindows.size() - 1; i >= 0; i--) {
- closeWindows.get(i).close();
+ for (ExternalBrowse externalBrowse : closeWindows) {
+ externalBrowse.close();
}
}
}
// マージしたノート(child)をタブで開いていたら、閉じる
- Collection<TabBrowse> tabBrowsers = tabWindows.values();
- Iterator<TabBrowse> tabIterator = tabBrowsers.iterator();
- Collection<Integer> tabIndexes = tabWindows.keySet();
- Iterator<Integer> indexIterator = tabIndexes.iterator();
- List<Integer> closeIndexes = new ArrayList<Integer>();
-
- while (tabIterator.hasNext()) {
- TabBrowse tab = tabIterator.next();
- int tabIndex = indexIterator.next();
+ List<TabBrowse> closeTabs = new ArrayList<TabBrowse>();
+ for (TabBrowse tab : tabWindows.values()) {
String guid = tab.getBrowserWindow().getNote().getGuid();
- for(int i = 0; i < sources.size(); i++){
- if(guid.equals(sources.get(i))){
- closeIndexes.add(tabIndex);
+ for (String source : sources) {
+ if (guid.equals(source)) {
+ closeTabs.add(tab);
}
}
}
-
- for(int i = closeIndexes.size() - 1; i >= 0; i--){
- tabWindowClosing(closeIndexes.get(i));
+ for (TabBrowse tab : closeTabs) {
+ tabWindowClosing(tab);
}
noteIndexUpdated(false);
return;
} catch (EDAMSystemException e) {
if (e.getErrorCode() == EDAMErrorCode.RATE_LIMIT_REACHED) {
- QMessageBox.warning(this, tr("Rate limit reached"), tr("Rate limit reached.\nRetry your request in " + e.getRateLimitDuration() + " seconds."));
+ QMessageBox.warning(this, tr("Rate limit reached"), tr("Evernote usage has been temporarily exceeded. Please try again in ") + + e.getRateLimitDuration() + tr(" seconds."));
}
setMessage("EDAMSystemException: " +e.getMessage());
return;
return null;
} catch (EDAMSystemException e) {
if (e.getErrorCode() == EDAMErrorCode.RATE_LIMIT_REACHED) {
- QMessageBox.warning(this, tr("Rate limit reached"), tr("Rate limit reached.\nRetry your request in " + e.getRateLimitDuration() + " seconds."));
+ QMessageBox.warning(this, tr("Rate limit reached"), tr("Evernote usage has been temporarily exceeded. Please try again in ") + + e.getRateLimitDuration() + tr(" seconds."));
}
setMessage("EDAMSystemException: " +e.getMessage());
waitCursor(false);
return;
} catch (EDAMSystemException e) {
if (e.getErrorCode() == EDAMErrorCode.RATE_LIMIT_REACHED) {
- QMessageBox.warning(this, tr("Rate limit reached"), tr("Rate limit reached.\nRetry your request in " + e.getRateLimitDuration() + " seconds."));
+ QMessageBox.warning(this, tr("Rate limit reached"), tr("Evernote usage has been temporarily exceeded. Please try again in ") + + e.getRateLimitDuration() + tr(" seconds."));
}
setMessage("EDAMSystemException: " +e.getMessage());
return;
// 帯域制限の超過をユーザに通知
@SuppressWarnings("unused")
private void informRateLimit(Integer rateLimitDuration) {
- QMessageBox.warning(this, tr("Rate limit reached"), tr("Rate limit reached.\nRetry your request in " + rateLimitDuration + " seconds."));
+ QMessageBox.warning(this, tr("Rate limit reached"), tr("Evernote usage has been temporarily exceeded. Please try again in ") + + rateLimitDuration + tr(" seconds."));
}
// ツールバーの「新規」ボタンの接続スロットを設定