OSDN Git Service

6269a521cc08159dd37681fa6a76b97f515abf8a
[neighbornote/NeighborNote.git] / src / cx / fbn / nevernote / dialog / NotebookArchive.java
1 /*\r
2  * This file is part of NeverNote \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 import java.util.List;\r
23 \r
24 import com.evernote.edam.type.Notebook;\r
25 import com.trolltech.qt.gui.QAbstractItemView;\r
26 import com.trolltech.qt.gui.QDialog;\r
27 import com.trolltech.qt.gui.QHBoxLayout;\r
28 import com.trolltech.qt.gui.QIcon;\r
29 import com.trolltech.qt.gui.QLabel;\r
30 import com.trolltech.qt.gui.QListWidget;\r
31 import com.trolltech.qt.gui.QListWidgetItem;\r
32 import com.trolltech.qt.gui.QPushButton;\r
33 import com.trolltech.qt.gui.QSpacerItem;\r
34 import com.trolltech.qt.gui.QVBoxLayout;\r
35 \r
36 public class NotebookArchive extends QDialog {\r
37         private final QListWidget               openBookList;\r
38         private final QListWidget               closedBookList;\r
39         private final QPushButton               okButton;\r
40         private final QPushButton               cancelButton;\r
41         private boolean                                 okClicked;\r
42         private final QPushButton               leftButton;\r
43         private final QPushButton               rightButton;\r
44         private final String iconPath = new String("classpath:cx/fbn/nevernote/icons/");\r
45         \r
46         public NotebookArchive(List<Notebook> allBooks, List<Notebook> archive) {\r
47                 okClicked = false;\r
48                 openBookList = new QListWidget();\r
49                 openBookList.setSortingEnabled(true);\r
50                 openBookList.setSelectionMode(QAbstractItemView.SelectionMode.MultiSelection);\r
51                 \r
52                 okButton = new QPushButton();\r
53                 okButton.setText("OK");\r
54                 okButton.pressed.connect(this, "onClicked()");\r
55                 \r
56                 cancelButton = new QPushButton();\r
57                 cancelButton.setText(tr("Cancel"));\r
58                 cancelButton.pressed.connect(this, "onCancel()");\r
59                 \r
60                 QVBoxLayout openLayout = new QVBoxLayout();\r
61                 openLayout.addWidget(new QLabel(tr("Open Notebooks")));\r
62                 openLayout.addWidget(openBookList);\r
63                 \r
64                 rightButton = new QPushButton(this);\r
65                 rightButton.setIcon(new QIcon(iconPath+"forward.png"));\r
66                 leftButton = new QPushButton(this);\r
67                 leftButton.setIcon(new QIcon(iconPath+"back.png"));\r
68                 leftButton.setEnabled(false);\r
69                 rightButton.setEnabled(false);\r
70                 \r
71                 QVBoxLayout middleLayout = new QVBoxLayout();\r
72                 middleLayout.addSpacerItem(new QSpacerItem(1,1));\r
73                 middleLayout.addWidget(rightButton);\r
74                 middleLayout.addWidget(leftButton);\r
75                 middleLayout.addSpacerItem(new QSpacerItem(1,1));\r
76 \r
77                 QVBoxLayout closeLayout = new QVBoxLayout();\r
78                 closeLayout.addWidget(new QLabel(tr("Closed Notebooks")));\r
79                 closedBookList = new QListWidget();\r
80                 closedBookList.setSortingEnabled(true);\r
81                 closedBookList.setSelectionMode(QAbstractItemView.SelectionMode.MultiSelection);\r
82                 closeLayout.addWidget(closedBookList);\r
83 \r
84                 openBookList.itemSelectionChanged.connect(this, "openBookSelected()");\r
85                 closedBookList.itemSelectionChanged.connect(this, "closedBookSelected()");\r
86                 leftButton.clicked.connect(this, "toOpenList()");\r
87                 rightButton.clicked.connect(this, "toClosedList()");\r
88                 \r
89                 QHBoxLayout buttonLayout = new QHBoxLayout();\r
90                 buttonLayout.addStretch(1);\r
91                 buttonLayout.addWidget(okButton);\r
92                 buttonLayout.addWidget(cancelButton);\r
93                 setWindowTitle(tr("Open/Close Notebooks"));\r
94                 \r
95                 QHBoxLayout upperLayout = new QHBoxLayout();\r
96                 upperLayout.addLayout(openLayout);\r
97                 upperLayout.addLayout(middleLayout);\r
98                 upperLayout.addLayout(closeLayout);\r
99                 \r
100                 QVBoxLayout mainLayout = new QVBoxLayout();\r
101                 mainLayout.addLayout(upperLayout);\r
102                 //mainLayout.addStretch(1);\r
103                 mainLayout.addSpacing(1);\r
104                 mainLayout.addLayout(buttonLayout);\r
105                 setLayout(mainLayout);\r
106 \r
107                 for (int i=0; i<allBooks.size(); i++) {\r
108                         boolean found = false;\r
109                         for (int j=0; j<archive.size(); j++) {\r
110                                 if (archive.get(j).getName().equalsIgnoreCase(allBooks.get(i).getName())) {\r
111                                         found = true;\r
112                                         j=archive.size();\r
113                                 }\r
114                         }\r
115                         if (!found) {\r
116                                 QListWidgetItem item = new QListWidgetItem(allBooks.get(i).getName());\r
117                                 item.setSelected(false);\r
118                                 openBookList.addItem(item);\r
119                         }\r
120                 }\r
121                 \r
122                 setWindowTitle("Open Notebooks");\r
123                 for (int i=0; i<archive.size(); i++) {\r
124                         QListWidgetItem item = new QListWidgetItem(archive.get(i).getName());\r
125                         item.setSelected(false);\r
126                         closedBookList.addItem(item);\r
127                 }\r
128                 openBookList.itemSelectionChanged.connect(this, "itemSelected()");\r
129         }\r
130         \r
131         @SuppressWarnings("unused")\r
132         private void toClosedList() {\r
133                 List<QListWidgetItem> items = openBookList.selectedItems();\r
134                 for (int i=items.size()-1; i>=0; i--) {\r
135                         int row = openBookList.row(items.get(i));\r
136                         openBookList.takeItem(row);\r
137                         closedBookList.addItem(items.get(i).text());\r
138                 }\r
139                 if (openBookList.count() == 0)\r
140                         okButton.setEnabled(false);\r
141                 rightButton.setEnabled(false);\r
142         }\r
143         \r
144         \r
145         @SuppressWarnings("unused")\r
146         private void toOpenList() {\r
147                 List<QListWidgetItem> items = closedBookList.selectedItems();\r
148                 for (int i=items.size()-1; i>=0; i--) {\r
149                         int row = closedBookList.row(items.get(i));\r
150                         closedBookList.takeItem(row);\r
151                         openBookList.addItem(items.get(i).text());\r
152                 }\r
153                 okButton.setEnabled(true);\r
154                 leftButton.setEnabled(false);\r
155         }\r
156         \r
157         @SuppressWarnings("unused")\r
158         private void closedBookSelected() {\r
159                 if (closedBookList.selectedItems().size() > 0)\r
160                         leftButton.setEnabled(true);\r
161                 else\r
162                         leftButton.setEnabled(false);\r
163         }\r
164         \r
165         @SuppressWarnings("unused")\r
166         private void openBookSelected() {\r
167                 if (openBookList.selectedItems().size() > 0)\r
168                         rightButton.setEnabled(true);\r
169                 else\r
170                         rightButton.setEnabled(false);\r
171         }\r
172         \r
173         @SuppressWarnings("unused")\r
174         private void onClicked() {\r
175                 okClicked = true;\r
176                 close();\r
177         }\r
178         \r
179         @SuppressWarnings("unused")\r
180         private void onCancel() {\r
181                 okClicked = false;\r
182                 close();\r
183         }\r
184         \r
185         public boolean okClicked() {\r
186                 return okClicked;\r
187         }\r
188         \r
189         public QListWidget getOpenBookList() {\r
190                 return openBookList;\r
191         }\r
192         \r
193         public QListWidget getClosedBookList() {\r
194                 return closedBookList;\r
195         }\r
196         \r
197         @SuppressWarnings("unused")\r
198         private void itemSelected() {\r
199                 if (openBookList.selectedItems().size() == openBookList.count()) {\r
200                         okButton.setEnabled(false);\r
201                         rightButton.setEnabled(false);\r
202                         return;\r
203                 }\r
204                 rightButton.setEnabled(true);\r
205                 okButton.setEnabled(true);\r
206         }\r
207 }\r