2 * This file is part of NixNote
\r
3 * Copyright 2009 Randy Baumgarte
\r
5 * This file may be licensed under the terms of of the
\r
6 * GNU General Public License Version 2 (the ``GPL'').
\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
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
20 package cx.fbn.nevernote.dialog;
\r
22 //**********************************************
\r
23 //**********************************************
\r
24 //* Publish (make public) a notebook.
\r
25 //**********************************************
\r
26 //**********************************************
\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
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
55 public PublishNotebook(String userid, String url, Notebook n) {
\r
56 setWindowIcon(new QIcon(iconPath+"globe.png"));
\r
60 okButton = new QPushButton();
\r
61 okButton.setText(tr("OK"));
\r
62 okButton.pressed.connect(this, "onClicked()");
\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
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
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
93 sortedBy.addItem(tr("Date Created"), NoteSortOrder.CREATED);
\r
94 sortedBy.addItem(tr("Date Updated"), NoteSortOrder.UPDATED);
\r
96 sortOrder.addItem(tr("Newest to oldest"), false);
\r
97 sortOrder.addItem(tr("Oldest to newest"), true);
\r
99 textEditLayout.addLayout(orderLayout);
\r
101 cancelButton = new QPushButton();
\r
102 cancelButton.setText(tr("Cancel"));
\r
103 cancelButton.pressed.connect(this, "onCancel()");
\r
105 stopButton = new QPushButton(tr("Stop Sharing"));
\r
106 stopButton.setVisible(false);
\r
107 stopButton.clicked.connect(this, "stopPublishing()");
\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
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
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
133 okButton.setEnabled(false);
\r
140 @SuppressWarnings("unused")
\r
141 private void onClicked() {
\r
143 stopButtonPressed = false;
\r
147 @SuppressWarnings("unused")
\r
148 private void onCancel() {
\r
153 public boolean okClicked() {
\r
157 @SuppressWarnings("unused")
\r
158 private void itemSelected() {
\r
159 okButton.setEnabled(true);
\r
162 @SuppressWarnings("unused")
\r
163 private void urlEdited() {
\r
164 if (url.text().trim().equals(""))
\r
165 okButton.setEnabled(false);
\r
167 okButton.setEnabled(true);
\r
170 @SuppressWarnings("unused")
\r
171 private void stopPublishing() {
\r
172 stopButtonPressed = true;
\r
177 public boolean isStopPressed() {
\r
178 return stopButtonPressed;
\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