X-Git-Url: http://git.sourceforge.jp/view?p=neighbornote%2FNeighborNote.git;a=blobdiff_plain;f=src%2Fcx%2Ffbn%2Fnevernote%2FNeverNote.java;h=9d78b248edcfd8ce97bc3da53ec89bf3c67feddf;hp=720ae1d6e966c144c90b3982a43a44ca86555ce7;hb=9ec67552d00225946a961f326ea2f39b0d00a233;hpb=71a83d455b23617d37ff2bf3863bb8abb4f2e517 diff --git a/src/cx/fbn/nevernote/NeverNote.java b/src/cx/fbn/nevernote/NeverNote.java index 720ae1d..9d78b24 100644 --- a/src/cx/fbn/nevernote/NeverNote.java +++ b/src/cx/fbn/nevernote/NeverNote.java @@ -104,7 +104,6 @@ import com.trolltech.qt.gui.QApplication; 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; @@ -116,7 +115,6 @@ import com.trolltech.qt.gui.QHBoxLayout; 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; @@ -129,7 +127,6 @@ import com.trolltech.qt.gui.QPrintDialog; 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; @@ -139,6 +136,7 @@ import com.trolltech.qt.gui.QTableWidgetItem; 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; @@ -185,13 +183,14 @@ 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.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; @@ -237,7 +236,7 @@ public class NeverNote extends QMainWindow{ 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 @@ -308,7 +307,7 @@ public class NeverNote extends QMainWindow{ 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 @@ -545,17 +544,6 @@ public class NeverNote extends QMainWindow{ 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(); @@ -566,13 +554,13 @@ public class NeverNote extends QMainWindow{ 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); @@ -664,7 +652,7 @@ public class NeverNote extends QMainWindow{ listManager.tagSignal.listChanged.connect(this, "reloadTagTree()"); if (!Global.isWindowVisible("zoom")) { - searchLayout.hideZoom(); + zoomLayout.hideZoom(); menuBar.hideZoom.setChecked(false); } @@ -741,14 +729,8 @@ public class NeverNote extends QMainWindow{ 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(); @@ -1585,15 +1567,22 @@ public class NeverNote extends QMainWindow{ @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"); @@ -1601,7 +1590,7 @@ public class NeverNote extends QMainWindow{ @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"); @@ -1632,8 +1621,7 @@ public class NeverNote extends QMainWindow{ clearSavedSearchFilter(); if (Global.mimicEvernoteInterface) { clearTagFilter(); - //searchField.clear(); - searchField.clearEditText(); + searchField.clear(); } menuBar.noteRestoreAction.setVisible(false); menuBar.notebookEditAction.setEnabled(true); @@ -1650,6 +1638,8 @@ public class NeverNote extends QMainWindow{ List selections = notebookTree.selectedItems(); selectedNotebookGUIDs.clear(); + searchField.setTargetNotebook(""); + searchField.setTargetStack(""); String guid = ""; String stackName = ""; if (selections.size() > 0) { @@ -1670,14 +1660,17 @@ public class NeverNote extends QMainWindow{ } } 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=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(); @@ -1750,7 +1748,7 @@ public class NeverNote extends QMainWindow{ @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"); @@ -2422,9 +2420,11 @@ public class NeverNote extends QMainWindow{ List selections = tagTree.selectedItems(); QTreeWidgetItem currentSelection; selectedTagGUIDs.clear(); + searchField.getTargetTags().clear(); for (int i=0; i 0) { menuBar.tagEditAction.setEnabled(true); @@ -2468,8 +2468,10 @@ public class NeverNote extends QMainWindow{ 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); @@ -2597,6 +2599,7 @@ public class NeverNote extends QMainWindow{ menuBar.tagDeleteAction.setEnabled(false); menuBar.tagIconAction.setEnabled(false); selectedTagGUIDs.clear(); + searchField.getTargetTags().clear(); listManager.setSelectedTags(selectedTagGUIDs); tagTree.blockSignals(false); } @@ -2816,7 +2819,7 @@ public class NeverNote extends QMainWindow{ savedSearchTree.clearSelection(); savedSearchTree.blockSignals(false); selectedSavedSearchGUID = ""; - searchField.setEditText(""); + searchField.setText(""); searchPerformed = false; listManager.setSelectedSavedSearch(selectedSavedSearchGUID); } @@ -2846,13 +2849,13 @@ public class NeverNote extends QMainWindow{ 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(); @@ -3125,7 +3128,7 @@ public class NeverNote extends QMainWindow{ QWebSettings.setMaximumPagesInCache(0); QWebSettings.setObjectCacheCapacities(0, 0, 0); - searchField.setEditText(""); + searchField.setDefaultText(); saveNoteColumnPositions(); saveNoteIndexWidth(); noteIndexUpdated(true); @@ -3144,7 +3147,7 @@ public class NeverNote extends QMainWindow{ QWebSettings.setMaximumPagesInCache(0); QWebSettings.setObjectCacheCapacities(0, 0, 0); - if (text.trim().equals("")) { + if (text.trim().equals("") && !searchField.hasFocus()) { searchFieldCleared(); if (searchPerformed) { @@ -3171,8 +3174,8 @@ public class NeverNote extends QMainWindow{ inkNoteCache.clear(); saveNoteColumnPositions(); saveNoteIndexWidth(); - String text = searchField.currentText(); - listManager.setEnSearch(text.trim()); + String query = searchField.getSearchQuery(); + listManager.setEnSearch(query.trim()); listManager.loadNotesIndex(); noteIndexUpdated(false); @@ -3291,13 +3294,37 @@ public class NeverNote extends QMainWindow{ //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"); @@ -4823,13 +4850,13 @@ public class NeverNote extends QMainWindow{ } int index = tabBrowser.indexOf(tab); - String guid = tab.getBrowserWindow().getNote().getGuid(); - String content = tab.getBrowserWindow().getContent(); +// String guid = tab.getBrowserWindow().getNote().getGuid(); +// String content = tab.getBrowserWindow().getContent(); BrowserWindow browser = tab.getBrowserWindow(); - // ノートが変更されていたら保存 - if (tab.getNoteDirty()) { - saveNoteTabBrowser(guid, content, true, browser); - } +// // ノートが変更されていたら保存 +// if (tab.getNoteDirty()) { +// saveNoteTabBrowser(guid, content, true, browser); +// } // シグナル切断 browser.noteSignal.tagsChanged.disconnect(); @@ -4840,8 +4867,8 @@ public class NeverNote extends QMainWindow{ browser.noteSignal.alteredDateChanged.disconnect(); // ノートを削除 - tabWindows.remove(index); tabBrowser.removeTab(index); + tabWindows.remove(index); noteDirty.remove(index); inkNote.remove(index); readOnly.remove(index); @@ -5053,17 +5080,17 @@ public class NeverNote extends QMainWindow{ } - 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ならセーブする @@ -6164,7 +6191,7 @@ public class NeverNote extends QMainWindow{ 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; @@ -6226,7 +6253,7 @@ public class NeverNote extends QMainWindow{ 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); @@ -6293,7 +6320,7 @@ public class NeverNote extends QMainWindow{ 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; @@ -7730,7 +7757,7 @@ public class NeverNote extends QMainWindow{ // 帯域制限の超過をユーザに通知 @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.")); } // ツールバーの「新規」ボタンの接続スロットを設定