OSDN Git Service

Merge remote-tracking branch 'origin/develop'
[neighbornote/NeighborNote.git] / src / cx / fbn / nevernote / dialog / PublishNotebook.java
1 /*\r
2  * This file is part of NixNote/NeighborNote \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 //* Publish (make public) a notebook.\r
25 //**********************************************\r
26 //**********************************************\r
27 \r
28 import com.evernote.edam.type.NoteSortOrder;\r
29 import com.evernote.edam.type.Notebook;\r
30 import com.evernote.edam.type.Publishing;\r
31 import com.trolltech.qt.core.Qt;\r
32 import com.trolltech.qt.gui.QComboBox;\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.QLineEdit;\r
38 import com.trolltech.qt.gui.QPushButton;\r
39 import com.trolltech.qt.gui.QTextEdit;\r
40 import com.trolltech.qt.gui.QVBoxLayout;\r
41 \r
42 public class PublishNotebook extends QDialog {\r
43         private final QPushButton               okButton;\r
44         private final QPushButton               cancelButton;\r
45         private boolean                                 okClicked;\r
46         private final QLabel                    urlLabel;\r
47         private final QLineEdit                 url;            \r
48         private final String iconPath = new String("classpath:cx/fbn/nevernote/icons/");\r
49         private final QTextEdit                 description;\r
50         private final QComboBox                 sortedBy;\r
51         private final QComboBox                 sortOrder;\r
52         private boolean stopButtonPressed = false;\r
53         private final QPushButton stopButton;\r
54         \r
55         public PublishNotebook(String userid, String url, Notebook n) {\r
56                 setWindowIcon(new QIcon(iconPath+"globe.png"));\r
57                 okClicked = false;\r
58 \r
59                 \r
60                 okButton = new QPushButton();\r
61                 okButton.setText(tr("OK"));\r
62                 okButton.pressed.connect(this, "onClicked()");\r
63                 \r
64                 userid = "sysrabt";\r
65                 \r
66                 urlLabel = new QLabel("http://"+url +tr("/pub/") +userid + tr("/"));\r
67                 QHBoxLayout urlLayout = new QHBoxLayout();\r
68                 urlLayout.addWidget(urlLabel);\r
69                 this.url = new QLineEdit();\r
70                 this.url.textChanged.connect(this, "urlEdited()");\r
71                 urlLayout.addWidget(this.url);\r
72                 \r
73                 QVBoxLayout textEditLayout = new QVBoxLayout();\r
74                 textEditLayout.addWidget(new QLabel(tr("Notebook: ") +n.getName()));\r
75                 textEditLayout.addWidget(new QLabel(tr("Public URL")));\r
76                 textEditLayout.addLayout(urlLayout);\r
77                 textEditLayout.addWidget(new QLabel(tr("Description")));\r
78                 description = new QTextEdit();\r
79                 textEditLayout.addWidget(description);\r
80                 \r
81                 sortedBy = new QComboBox(this);\r
82                 sortOrder = new QComboBox(this);\r
83                 QHBoxLayout orderLayout = new QHBoxLayout();\r
84                 orderLayout.addWidget(new QLabel(tr("Sort By")));\r
85                 Qt.Alignment right = new Qt.Alignment();\r
86                 right.set(Qt.AlignmentFlag.AlignRight);\r
87                 orderLayout.setAlignment(right);\r
88                 orderLayout.addWidget(sortedBy);\r
89                 orderLayout.addSpacing(50);\r
90                 orderLayout.addWidget(new QLabel(tr("Sort Order")));\r
91                 orderLayout.addWidget(sortOrder);\r
92                 \r
93                 sortedBy.addItem(tr("Date Created"), NoteSortOrder.CREATED);\r
94                 sortedBy.addItem(tr("Date Updated"), NoteSortOrder.UPDATED);\r
95                 \r
96                 sortOrder.addItem(tr("Newest to oldest"), false);\r
97                 sortOrder.addItem(tr("Oldest to newest"), true);\r
98                 \r
99                 textEditLayout.addLayout(orderLayout);\r
100                 \r
101                 cancelButton = new QPushButton();\r
102                 cancelButton.setText(tr("Cancel"));\r
103                 cancelButton.pressed.connect(this, "onCancel()");\r
104                 \r
105                 stopButton = new QPushButton(tr("Stop Sharing"));\r
106                 stopButton.setVisible(false);\r
107                 stopButton.clicked.connect(this, "stopPublishing()");\r
108                 \r
109                 QHBoxLayout buttonLayout = new QHBoxLayout();\r
110                 buttonLayout.addStretch(1);\r
111                 buttonLayout.addWidget(stopButton);\r
112                 buttonLayout.addWidget(okButton);\r
113                 buttonLayout.addWidget(cancelButton);\r
114                 setWindowTitle(tr("Share A Notebook With The World"));  \r
115                 \r
116                 QVBoxLayout mainLayout = new QVBoxLayout();\r
117                 mainLayout.addLayout(textEditLayout);\r
118                 mainLayout.addSpacing(1);\r
119                 mainLayout.addLayout(buttonLayout);\r
120                 setLayout(mainLayout);\r
121 \r
122                 if (n.isPublished()) {\r
123                         Publishing p = n.getPublishing();\r
124                         this.url.setText(p.getUri());\r
125                         description.setText(p.getPublicDescription());\r
126                         int position = sortOrder.findData(p.isAscending());\r
127                         sortOrder.setCurrentIndex(position);\r
128                         position = sortedBy.findData(p.getOrder());\r
129                         sortedBy.setCurrentIndex(position);\r
130                         okButton.setText(tr("Save Changes"));\r
131                         stopButton.setVisible(true);\r
132                 } else {\r
133                         okButton.setEnabled(false);\r
134                 }\r
135                 \r
136                 resize(500, 200);\r
137                 \r
138         }\r
139         \r
140         @SuppressWarnings("unused")\r
141         private void onClicked() {\r
142                 okClicked = true;\r
143                 stopButtonPressed = false;\r
144                 close();\r
145         }\r
146         \r
147         @SuppressWarnings("unused")\r
148         private void onCancel() {\r
149                 okClicked = false;\r
150                 close();\r
151         }\r
152         \r
153         public boolean okClicked() {\r
154                 return okClicked;\r
155         }\r
156         \r
157         @SuppressWarnings("unused")\r
158         private void itemSelected() {\r
159                 okButton.setEnabled(true);\r
160         }\r
161         \r
162         @SuppressWarnings("unused")\r
163         private void urlEdited() {\r
164                 if (url.text().trim().equals(""))\r
165                         okButton.setEnabled(false);\r
166                 else\r
167                         okButton.setEnabled(true);\r
168         }\r
169         \r
170         @SuppressWarnings("unused")\r
171         private void stopPublishing() {\r
172                 stopButtonPressed = true;\r
173                 okClicked = true;\r
174                 close();\r
175         }\r
176         \r
177         public boolean isStopPressed() {\r
178                 return stopButtonPressed;\r
179         }\r
180         \r
181         public Publishing getPublishing() {\r
182                 Publishing p = new Publishing();\r
183                 p.setPublicDescription(description.toPlainText());\r
184                 int i = sortedBy.currentIndex();\r
185                 p.setOrder((NoteSortOrder) sortedBy.itemData(i));\r
186                 p.setAscending((Boolean)sortOrder.itemData(i));\r
187                 p.setUri(url.text());\r
188                 return p;\r
189         }\r
190 }\r