/*
* This file is part of NixNote
* Copyright 2009 Randy Baumgarte
*
* This file may be licensed under the terms of of the
* GNU General Public License Version 2 (the ``GPL'').
*
* Software distributed under the License is distributed
* on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
* express or implied. See the GPL for the specific language
* governing rights and limitations.
*
* You should have received a copy of the GPL along with this
* program. If not, go to http://www.gnu.org/licenses/gpl.html
* or write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
package cx.fbn.nevernote.dialog;
//**********************************************
//**********************************************
//* Publish (make public) a notebook.
//**********************************************
//**********************************************
import com.evernote.edam.type.NoteSortOrder;
import com.evernote.edam.type.Notebook;
import com.evernote.edam.type.Publishing;
import com.trolltech.qt.core.Qt;
import com.trolltech.qt.gui.QComboBox;
import com.trolltech.qt.gui.QDialog;
import com.trolltech.qt.gui.QHBoxLayout;
import com.trolltech.qt.gui.QIcon;
import com.trolltech.qt.gui.QLabel;
import com.trolltech.qt.gui.QLineEdit;
import com.trolltech.qt.gui.QPushButton;
import com.trolltech.qt.gui.QTextEdit;
import com.trolltech.qt.gui.QVBoxLayout;
public class PublishNotebook extends QDialog {
private final QPushButton okButton;
private final QPushButton cancelButton;
private boolean okClicked;
private final QLabel urlLabel;
private final QLineEdit url;
private final String iconPath = new String("classpath:cx/fbn/nevernote/icons/");
private final QTextEdit description;
private final QComboBox sortedBy;
private final QComboBox sortOrder;
private boolean stopButtonPressed = false;
private final QPushButton stopButton;
public PublishNotebook(String userid, String url, Notebook n) {
setWindowIcon(new QIcon(iconPath+"globe.png"));
okClicked = false;
okButton = new QPushButton();
okButton.setText(tr("OK"));
okButton.pressed.connect(this, "onClicked()");
userid = "sysrabt";
urlLabel = new QLabel("http://"+url +tr("/pub/") +userid + tr("/"));
QHBoxLayout urlLayout = new QHBoxLayout();
urlLayout.addWidget(urlLabel);
this.url = new QLineEdit();
this.url.textChanged.connect(this, "urlEdited()");
urlLayout.addWidget(this.url);
QVBoxLayout textEditLayout = new QVBoxLayout();
textEditLayout.addWidget(new QLabel(tr("Notebook: ") +n.getName()));
textEditLayout.addWidget(new QLabel(tr("Public URL")));
textEditLayout.addLayout(urlLayout);
textEditLayout.addWidget(new QLabel(tr("Description")));
description = new QTextEdit();
textEditLayout.addWidget(description);
sortedBy = new QComboBox(this);
sortOrder = new QComboBox(this);
QHBoxLayout orderLayout = new QHBoxLayout();
orderLayout.addWidget(new QLabel(tr("Sort By")));
Qt.Alignment right = new Qt.Alignment();
right.set(Qt.AlignmentFlag.AlignRight);
orderLayout.setAlignment(right);
orderLayout.addWidget(sortedBy);
orderLayout.addSpacing(50);
orderLayout.addWidget(new QLabel(tr("Sort Order")));
orderLayout.addWidget(sortOrder);
sortedBy.addItem(tr("Date Created"), NoteSortOrder.CREATED);
sortedBy.addItem(tr("Date Updated"), NoteSortOrder.UPDATED);
sortOrder.addItem(tr("Newest to oldest"), false);
sortOrder.addItem(tr("Oldest to newest"), true);
textEditLayout.addLayout(orderLayout);
cancelButton = new QPushButton();
cancelButton.setText(tr("Cancel"));
cancelButton.pressed.connect(this, "onCancel()");
stopButton = new QPushButton(tr("Stop Sharing"));
stopButton.setVisible(false);
stopButton.clicked.connect(this, "stopPublishing()");
QHBoxLayout buttonLayout = new QHBoxLayout();
buttonLayout.addStretch(1);
buttonLayout.addWidget(stopButton);
buttonLayout.addWidget(okButton);
buttonLayout.addWidget(cancelButton);
setWindowTitle(tr("Share A Notebook With The World"));
QVBoxLayout mainLayout = new QVBoxLayout();
mainLayout.addLayout(textEditLayout);
mainLayout.addSpacing(1);
mainLayout.addLayout(buttonLayout);
setLayout(mainLayout);
if (n.isPublished()) {
Publishing p = n.getPublishing();
this.url.setText(p.getUri());
description.setText(p.getPublicDescription());
int position = sortOrder.findData(p.isAscending());
sortOrder.setCurrentIndex(position);
position = sortedBy.findData(p.getOrder());
sortedBy.setCurrentIndex(position);
okButton.setText(tr("Save Changes"));
stopButton.setVisible(true);
} else {
okButton.setEnabled(false);
}
resize(500, 200);
}
@SuppressWarnings("unused")
private void onClicked() {
okClicked = true;
stopButtonPressed = false;
close();
}
@SuppressWarnings("unused")
private void onCancel() {
okClicked = false;
close();
}
public boolean okClicked() {
return okClicked;
}
@SuppressWarnings("unused")
private void itemSelected() {
okButton.setEnabled(true);
}
@SuppressWarnings("unused")
private void urlEdited() {
if (url.text().trim().equals(""))
okButton.setEnabled(false);
else
okButton.setEnabled(true);
}
@SuppressWarnings("unused")
private void stopPublishing() {
stopButtonPressed = true;
okClicked = true;
close();
}
public boolean isStopPressed() {
return stopButtonPressed;
}
public Publishing getPublishing() {
Publishing p = new Publishing();
p.setPublicDescription(description.toPlainText());
int i = sortedBy.currentIndex();
p.setOrder((NoteSortOrder) sortedBy.itemData(i));
p.setAscending((Boolean)sortOrder.itemData(i));
p.setUri(url.text());
return p;
}
}