OSDN Git Service

Add notebook specific sorting and alter some NeverNote labels to say NixNote.
[neighbornote/NeighborNote.git] / src / cx / fbn / nevernote / dialog / NotebookArchive.java
1 /*\r
2  * This file is part of NixNote \r
3  * Copyright 2009 Randy Baumgarte\r
4  * \r
5  * This file may be licensed under the terms of of the\r
6  * GNU General Public License Version 2 (the ``GPL'').\r
7  *\r
8  * Software distributed under the License is distributed\r
9  * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either\r
10  * express or implied. See the GPL for the specific language\r
11  * governing rights and limitations.\r
12  *\r
13  * You should have received a copy of the GPL along with this\r
14  * program. If not, go to http://www.gnu.org/licenses/gpl.html\r
15  * or write to the Free Software Foundation, Inc.,\r
16  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\r
17  *\r
18 */\r
19 \r
20 package cx.fbn.nevernote.dialog;\r
21 \r
22 //**********************************************\r
23 //**********************************************\r
24 //* Open or close a notebook to hide a notebook\r
25 //* from a user.\r
26 //**********************************************\r
27 //**********************************************\r
28 \r
29 import java.util.List;\r
30 \r
31 import com.evernote.edam.type.Notebook;\r
32 import com.trolltech.qt.gui.QAbstractItemView;\r
33 import com.trolltech.qt.gui.QDialog;\r
34 import com.trolltech.qt.gui.QHBoxLayout;\r
35 import com.trolltech.qt.gui.QIcon;\r
36 import com.trolltech.qt.gui.QLabel;\r
37 import com.trolltech.qt.gui.QListWidget;\r
38 import com.trolltech.qt.gui.QListWidgetItem;\r
39 import com.trolltech.qt.gui.QPushButton;\r
40 import com.trolltech.qt.gui.QSpacerItem;\r
41 import com.trolltech.qt.gui.QVBoxLayout;\r
42 \r
43 public class NotebookArchive extends QDialog {\r
44         private final QListWidget               openBookList;\r
45         private final QListWidget               closedBookList;\r
46         private final QPushButton               okButton;\r
47         private final QPushButton               cancelButton;\r
48         private boolean                                 okClicked;\r
49         private final QPushButton               leftButton;\r
50         private final QPushButton               rightButton;\r
51         private final String iconPath = new String("classpath:cx/fbn/nevernote/icons/");\r
52         \r
53         public NotebookArchive(List<Notebook> allBooks, List<Notebook> archive) {\r
54                 setWindowIcon(new QIcon(iconPath+"notebook-green.png"));\r
55                 okClicked = false;\r
56                 openBookList = new QListWidget();\r
57                 openBookList.setSortingEnabled(true);\r
58                 openBookList.setSelectionMode(QAbstractItemView.SelectionMode.MultiSelection);\r
59                 \r
60                 okButton = new QPushButton();\r
61                 okButton.setText(tr("OK"));\r
62                 okButton.pressed.connect(this, "onClicked()");\r
63                 \r
64                 cancelButton = new QPushButton();\r
65                 cancelButton.setText(tr("Cancel"));\r
66                 cancelButton.pressed.connect(this, "onCancel()");\r
67                 \r
68                 QVBoxLayout openLayout = new QVBoxLayout();\r
69                 openLayout.addWidget(new QLabel(tr("Open Notebooks")));\r
70                 openLayout.addWidget(openBookList);\r
71                 \r
72                 rightButton = new QPushButton(this);\r
73                 rightButton.setIcon(new QIcon(iconPath+"forward.png"));\r
74                 leftButton = new QPushButton(this);\r
75                 leftButton.setIcon(new QIcon(iconPath+"back.png"));\r
76                 leftButton.setEnabled(false);\r
77                 rightButton.setEnabled(false);\r
78                 \r
79                 QVBoxLayout middleLayout = new QVBoxLayout();\r
80                 middleLayout.addSpacerItem(new QSpacerItem(1,1));\r
81                 middleLayout.addWidget(rightButton);\r
82                 middleLayout.addWidget(leftButton);\r
83                 middleLayout.addSpacerItem(new QSpacerItem(1,1));\r
84 \r
85                 QVBoxLayout closeLayout = new QVBoxLayout();\r
86                 closeLayout.addWidget(new QLabel(tr("Closed Notebooks")));\r
87                 closedBookList = new QListWidget();\r
88                 closedBookList.setSortingEnabled(true);\r
89                 closedBookList.setSelectionMode(QAbstractItemView.SelectionMode.MultiSelection);\r
90                 closeLayout.addWidget(closedBookList);\r
91 \r
92                 openBookList.itemSelectionChanged.connect(this, "openBookSelected()");\r
93                 closedBookList.itemSelectionChanged.connect(this, "closedBookSelected()");\r
94                 leftButton.clicked.connect(this, "toOpenList()");\r
95                 rightButton.clicked.connect(this, "toClosedList()");\r
96                 \r
97                 QHBoxLayout buttonLayout = new QHBoxLayout();\r
98                 buttonLayout.addStretch(1);\r
99                 buttonLayout.addWidget(okButton);\r
100                 buttonLayout.addWidget(cancelButton);\r
101                 setWindowTitle(tr("Open/Close Notebooks"));\r
102                 \r
103                 QHBoxLayout upperLayout = new QHBoxLayout();\r
104                 upperLayout.addLayout(openLayout);\r
105                 upperLayout.addLayout(middleLayout);\r
106                 upperLayout.addLayout(closeLayout);\r
107                 \r
108                 QVBoxLayout mainLayout = new QVBoxLayout();\r
109                 mainLayout.addLayout(upperLayout);\r
110                 //mainLayout.addStretch(1);\r
111                 mainLayout.addSpacing(1);\r
112                 mainLayout.addLayout(buttonLayout);\r
113                 setLayout(mainLayout);\r
114 \r
115                 for (int i=0; i<allBooks.size(); i++) {\r
116                         boolean found = false;\r
117                         for (int j=0; j<archive.size(); j++) {\r
118                                 if (archive.get(j).getName().equalsIgnoreCase(allBooks.get(i).getName())) {\r
119                                         found = true;\r
120                                         j=archive.size();\r
121                                 }\r
122                         }\r
123                         if (!found) {\r
124                                 QListWidgetItem item = new QListWidgetItem(allBooks.get(i).getName());\r
125                                 item.setSelected(false);\r
126                                 openBookList.addItem(item);\r
127                         }\r
128                 }\r
129                 \r
130                 setWindowTitle(tr("Open Notebooks"));\r
131                 for (int i=0; i<archive.size(); i++) {\r
132                         QListWidgetItem item = new QListWidgetItem(archive.get(i).getName());\r
133                         item.setSelected(false);\r
134                         closedBookList.addItem(item);\r
135                 }\r
136                 openBookList.itemSelectionChanged.connect(this, "itemSelected()");\r
137         }\r
138         \r
139         @SuppressWarnings("unused")\r
140         private void toClosedList() {\r
141                 List<QListWidgetItem> items = openBookList.selectedItems();\r
142                 for (int i=items.size()-1; i>=0; i--) {\r
143                         int row = openBookList.row(items.get(i));\r
144                         openBookList.takeItem(row);\r
145                         closedBookList.addItem(items.get(i).text());\r
146                 }\r
147                 if (openBookList.count() == 0)\r
148                         okButton.setEnabled(false);\r
149                 rightButton.setEnabled(false);\r
150         }\r
151         \r
152         \r
153         @SuppressWarnings("unused")\r
154         private void toOpenList() {\r
155                 List<QListWidgetItem> items = closedBookList.selectedItems();\r
156                 for (int i=items.size()-1; i>=0; i--) {\r
157                         int row = closedBookList.row(items.get(i));\r
158                         closedBookList.takeItem(row);\r
159                         openBookList.addItem(items.get(i).text());\r
160                 }\r
161                 okButton.setEnabled(true);\r
162                 leftButton.setEnabled(false);\r
163         }\r
164         \r
165         @SuppressWarnings("unused")\r
166         private void closedBookSelected() {\r
167                 if (closedBookList.selectedItems().size() > 0)\r
168                         leftButton.setEnabled(true);\r
169                 else\r
170                         leftButton.setEnabled(false);\r
171         }\r
172         \r
173         @SuppressWarnings("unused")\r
174         private void openBookSelected() {\r
175                 if (openBookList.selectedItems().size() > 0)\r
176                         rightButton.setEnabled(true);\r
177                 else\r
178                         rightButton.setEnabled(false);\r
179         }\r
180         \r
181         @SuppressWarnings("unused")\r
182         private void onClicked() {\r
183                 okClicked = true;\r
184                 close();\r
185         }\r
186         \r
187         @SuppressWarnings("unused")\r
188         private void onCancel() {\r
189                 okClicked = false;\r
190                 close();\r
191         }\r
192         \r
193         public boolean okClicked() {\r
194                 return okClicked;\r
195         }\r
196         \r
197         public QListWidget getOpenBookList() {\r
198                 return openBookList;\r
199         }\r
200         \r
201         public QListWidget getClosedBookList() {\r
202                 return closedBookList;\r
203         }\r
204         \r
205         @SuppressWarnings("unused")\r
206         private void itemSelected() {\r
207                 if (openBookList.selectedItems().size() == openBookList.count()) {\r
208                         okButton.setEnabled(false);\r
209                         rightButton.setEnabled(false);\r
210                         return;\r
211                 }\r
212                 rightButton.setEnabled(true);\r
213                 okButton.setEnabled(true);\r
214         }\r
215 }\r