/*
* 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;
//**********************************************
//**********************************************
//* This is the dialog used to tell the program
//* to not synchronize some notebooks.
//**********************************************
//**********************************************
import java.util.List;
import com.evernote.edam.type.LinkedNotebook;
import com.evernote.edam.type.Notebook;
import com.evernote.edam.type.Tag;
import com.trolltech.qt.gui.QAbstractItemView;
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.QListWidget;
import com.trolltech.qt.gui.QListWidgetItem;
import com.trolltech.qt.gui.QPushButton;
import com.trolltech.qt.gui.QSpacerItem;
import com.trolltech.qt.gui.QVBoxLayout;
public class IgnoreSync extends QDialog {
private final QListWidget syncBookList;
private final QListWidget ignoreBookList;
private final QListWidget syncTagList;
private final QListWidget ignoreTagList;
private final QListWidget syncLinkedNotebookList;
private final QListWidget ignoreLinkedNotebookList;
private final QPushButton okButton;
private final QPushButton cancelButton;
private boolean okClicked;
private final QPushButton leftButton;
private final QPushButton rightButton;
private final QPushButton leftTagButton;
private final QPushButton rightTagButton;
private final QPushButton leftLinkedNotebookButton;
private final QPushButton rightLinkedNotebookButton;
private final QLabel linkedLabelLeft;
private final QLabel linkedLabelRight;
private final String iconPath = new String("classpath:cx/fbn/nevernote/icons/");
public IgnoreSync(List<Notebook> allBooks, List<Notebook> archive, List<Tag> allTags, List<Tag> ignoreTags,
List<LinkedNotebook> allLinkedNotebooks, List<LinkedNotebook> ignoreLinkedNotebooks) {
setWindowIcon(new QIcon(iconPath+"synchronize.png"));
okClicked = false;
syncBookList = new QListWidget();
syncBookList.setSortingEnabled(true);
syncBookList.setSelectionMode(QAbstractItemView.SelectionMode.MultiSelection);
syncTagList = new QListWidget();
syncTagList.setSortingEnabled(true);
syncTagList.setSelectionMode(QAbstractItemView.SelectionMode.MultiSelection);
syncLinkedNotebookList = new QListWidget();
syncLinkedNotebookList.setSortingEnabled(true);
syncLinkedNotebookList.setSelectionMode(QAbstractItemView.SelectionMode.MultiSelection);
okButton = new QPushButton();
okButton.setText(tr("OK"));
okButton.pressed.connect(this, "onClicked()");
cancelButton = new QPushButton();
cancelButton.setText(tr("Cancel"));
cancelButton.pressed.connect(this, "onCancel()");
QVBoxLayout openLayout = new QVBoxLayout();
openLayout.addWidget(new QLabel(tr("Synchronized Notebooks")));
openLayout.addWidget(syncBookList);
QVBoxLayout openTagLayout = new QVBoxLayout();
openTagLayout.addWidget(new QLabel(tr("Synchronized Tags")));
openTagLayout.addWidget(syncTagList);
QVBoxLayout openLinkedNotebookLayout = new QVBoxLayout();
linkedLabelLeft = new QLabel(tr("Synchronized Linked Notebooks"));
openLinkedNotebookLayout.addWidget(linkedLabelLeft);
openLinkedNotebookLayout.addWidget(syncLinkedNotebookList);
rightButton = new QPushButton(this);
rightButton.setIcon(new QIcon(iconPath+"forward.png"));
leftButton = new QPushButton(this);
leftButton.setIcon(new QIcon(iconPath+"back.png"));
leftButton.setEnabled(false);
rightButton.setEnabled(false);
rightTagButton = new QPushButton(this);
rightTagButton.setIcon(new QIcon(iconPath+"forward.png"));
leftTagButton = new QPushButton(this);
leftTagButton.setIcon(new QIcon(iconPath+"back.png"));
leftTagButton.setEnabled(false);
rightTagButton.setEnabled(false);
rightLinkedNotebookButton = new QPushButton(this);
rightLinkedNotebookButton.setIcon(new QIcon(iconPath+"forward.png"));
leftLinkedNotebookButton = new QPushButton(this);
leftLinkedNotebookButton.setIcon(new QIcon(iconPath+"back.png"));
leftLinkedNotebookButton.setEnabled(false);
rightLinkedNotebookButton.setEnabled(false);
QVBoxLayout middleLayout = new QVBoxLayout();
middleLayout.addSpacerItem(new QSpacerItem(1,1));
middleLayout.addWidget(rightButton);
middleLayout.addWidget(leftButton);
middleLayout.addSpacerItem(new QSpacerItem(1,1));
QVBoxLayout middleTagLayout = new QVBoxLayout();
middleTagLayout.addSpacerItem(new QSpacerItem(1,1));
middleTagLayout.addWidget(rightTagButton);
middleTagLayout.addWidget(leftTagButton);
middleTagLayout.addSpacerItem(new QSpacerItem(1,1));
QVBoxLayout middleLinkedNotebookLayout = new QVBoxLayout();
middleLinkedNotebookLayout.addSpacerItem(new QSpacerItem(1,1));
middleLinkedNotebookLayout.addWidget(rightLinkedNotebookButton);
middleLinkedNotebookLayout.addWidget(leftLinkedNotebookButton);
middleLinkedNotebookLayout.addSpacerItem(new QSpacerItem(1,1));
QVBoxLayout closeLayout = new QVBoxLayout();
closeLayout.addWidget(new QLabel(tr("Non-Synchronized Notebooks")));
ignoreBookList = new QListWidget();
ignoreBookList.setSortingEnabled(true);
ignoreBookList.setSelectionMode(QAbstractItemView.SelectionMode.MultiSelection);
closeLayout.addWidget(ignoreBookList);
QVBoxLayout closeTagLayout = new QVBoxLayout();
closeTagLayout.addWidget(new QLabel(tr("Non-Synchronized Tags")));
ignoreTagList = new QListWidget();
ignoreTagList.setSortingEnabled(true);
ignoreTagList.setSelectionMode(QAbstractItemView.SelectionMode.MultiSelection);
closeTagLayout.addWidget(ignoreTagList);
QVBoxLayout closeLinkedNotebookLayout = new QVBoxLayout();
linkedLabelRight = new QLabel(tr("Non-Synchronized Linked Notebooks"));
closeLinkedNotebookLayout.addWidget(linkedLabelRight);
ignoreLinkedNotebookList = new QListWidget();
ignoreLinkedNotebookList.setSortingEnabled(true);
ignoreLinkedNotebookList.setSelectionMode(QAbstractItemView.SelectionMode.MultiSelection);
closeLinkedNotebookLayout.addWidget(ignoreLinkedNotebookList);
syncBookList.itemSelectionChanged.connect(this, "syncBookSelected()");
ignoreBookList.itemSelectionChanged.connect(this, "ignoreBookSelected()");
leftButton.clicked.connect(this, "toOpenList()");
rightButton.clicked.connect(this, "toClosedList()");
syncTagList.itemSelectionChanged.connect(this, "syncTagSelected()");
ignoreTagList.itemSelectionChanged.connect(this, "ignoreTagSelected()");
leftTagButton.clicked.connect(this, "toOpenTagList()");
rightTagButton.clicked.connect(this, "toClosedTagList()");
syncLinkedNotebookList.itemSelectionChanged.connect(this, "syncLinkedNotebookSelected()");
ignoreLinkedNotebookList.itemSelectionChanged.connect(this, "ignoreLinkedNotebookSelected()");
leftLinkedNotebookButton.clicked.connect(this, "toOpenLinkedNotebookList()");
rightLinkedNotebookButton.clicked.connect(this, "toClosedLinkedNotebookList()");
QHBoxLayout buttonLayout = new QHBoxLayout();
buttonLayout.addStretch(1);
buttonLayout.addWidget(okButton);
buttonLayout.addWidget(cancelButton);
setWindowTitle(tr("Open/Close Notebooks"));
QHBoxLayout upperLayout = new QHBoxLayout();
upperLayout.addLayout(openLayout);
upperLayout.addLayout(middleLayout);
upperLayout.addLayout(closeLayout);
QHBoxLayout tagLayout = new QHBoxLayout();
tagLayout.addLayout(openTagLayout);
tagLayout.addLayout(middleTagLayout);
tagLayout.addLayout(closeTagLayout);
QHBoxLayout linkedNotebookLayout = new QHBoxLayout();
linkedNotebookLayout.addLayout(openLinkedNotebookLayout);
linkedNotebookLayout.addLayout(middleLinkedNotebookLayout);
linkedNotebookLayout.addLayout(closeLinkedNotebookLayout);
QVBoxLayout mainLayout = new QVBoxLayout();
mainLayout.addLayout(upperLayout);
mainLayout.addLayout(tagLayout);
mainLayout.addLayout(linkedNotebookLayout);
mainLayout.addSpacing(1);
mainLayout.addLayout(buttonLayout);
setLayout(mainLayout);
for (int i=0; i<allBooks.size(); i++) {
boolean found = false;
for (int j=0; j<archive.size(); j++) {
if (archive.get(j).getName().equalsIgnoreCase(allBooks.get(i).getName())) {
found = true;
j=archive.size();
}
}
if (!found) {
QListWidgetItem item = new QListWidgetItem(allBooks.get(i).getName());
item.setSelected(false);
syncBookList.addItem(item);
}
}
setWindowTitle(tr("Open Notebooks"));
for (int i=0; i<archive.size(); i++) {
QListWidgetItem item = new QListWidgetItem(archive.get(i).getName());
item.setSelected(false);
ignoreBookList.addItem(item);
}
for (int i=0; i<allTags.size(); i++) {
boolean found = false;
for (int j=0; j<ignoreTags.size(); j++) {
if (ignoreTags.get(j).getName().equalsIgnoreCase(allTags.get(i).getName())) {
found = true;
j=ignoreTags.size();
}
}
if (!found) {
QListWidgetItem item = new QListWidgetItem(allTags.get(i).getName());
item.setSelected(false);
syncTagList.addItem(item);
}
}
for (int i=0; i<ignoreTags.size(); i++) {
QListWidgetItem item = new QListWidgetItem(ignoreTags.get(i).getName());
item.setSelected(false);
ignoreTagList.addItem(item);
}
for (int i=0; i<allLinkedNotebooks.size(); i++) {
boolean found = false;
for (int j=0; j<ignoreLinkedNotebooks.size(); j++) {
if (ignoreLinkedNotebooks.get(j).getShareName().equalsIgnoreCase(allLinkedNotebooks.get(i).getShareName())) {
found = true;
j=ignoreLinkedNotebooks.size();
}
}
if (!found) {
QListWidgetItem item = new QListWidgetItem(allLinkedNotebooks.get(i).getShareName());
item.setSelected(false);
syncLinkedNotebookList.addItem(item);
}
}
for (int i=0; i<ignoreLinkedNotebooks.size(); i++) {
QListWidgetItem item = new QListWidgetItem(ignoreLinkedNotebooks.get(i).getShareName());
item.setSelected(false);
ignoreLinkedNotebookList.addItem(item);
}
syncBookList.itemSelectionChanged.connect(this, "itemSelected()");
setWindowTitle(tr("Ignore Synchronized Notes"));
if (allLinkedNotebooks.size() == 0) {
linkedLabelLeft.setVisible(false);
linkedLabelRight.setVisible(false);
rightLinkedNotebookButton.setVisible(false);
leftLinkedNotebookButton.setVisible(false);
ignoreLinkedNotebookList.setVisible(false);
syncLinkedNotebookList.setVisible(false);
}
}
@SuppressWarnings("unused")
private void toClosedList() {
List<QListWidgetItem> items = syncBookList.selectedItems();
for (int i=items.size()-1; i>=0; i--) {
int row = syncBookList.row(items.get(i));
syncBookList.takeItem(row);
ignoreBookList.addItem(items.get(i).text());
}
if (syncBookList.count() == 0)
okButton.setEnabled(false);
rightButton.setEnabled(false);
}
@SuppressWarnings("unused")
private void toOpenList() {
List<QListWidgetItem> items = ignoreBookList.selectedItems();
for (int i=items.size()-1; i>=0; i--) {
int row = ignoreBookList.row(items.get(i));
ignoreBookList.takeItem(row);
syncBookList.addItem(items.get(i).text());
}
okButton.setEnabled(true);
leftButton.setEnabled(false);
}
@SuppressWarnings("unused")
private void toClosedTagList() {
List<QListWidgetItem> items = syncTagList.selectedItems();
for (int i=items.size()-1; i>=0; i--) {
int row = syncTagList.row(items.get(i));
syncTagList.takeItem(row);
ignoreTagList.addItem(items.get(i).text());
}
rightTagButton.setEnabled(false);
}
@SuppressWarnings("unused")
private void toOpenTagList() {
List<QListWidgetItem> items = ignoreTagList.selectedItems();
for (int i=items.size()-1; i>=0; i--) {
int row = ignoreTagList.row(items.get(i));
ignoreTagList.takeItem(row);
syncTagList.addItem(items.get(i).text());
}
leftTagButton.setEnabled(false);
}
@SuppressWarnings("unused")
private void toClosedLinkedNotebookList() {
List<QListWidgetItem> items = syncLinkedNotebookList.selectedItems();
for (int i=items.size()-1; i>=0; i--) {
int row = syncLinkedNotebookList.row(items.get(i));
syncLinkedNotebookList.takeItem(row);
ignoreLinkedNotebookList.addItem(items.get(i).text());
}
rightLinkedNotebookButton.setEnabled(false);
}
@SuppressWarnings("unused")
private void toOpenLinkedNotebookList() {
List<QListWidgetItem> items = ignoreLinkedNotebookList.selectedItems();
for (int i=items.size()-1; i>=0; i--) {
int row = ignoreLinkedNotebookList.row(items.get(i));
ignoreLinkedNotebookList.takeItem(row);
syncLinkedNotebookList.addItem(items.get(i).text());
}
leftLinkedNotebookButton.setEnabled(false);
}
@SuppressWarnings("unused")
private void ignoreBookSelected() {
if (ignoreBookList.selectedItems().size() > 0)
leftButton.setEnabled(true);
else
leftButton.setEnabled(false);
}
@SuppressWarnings("unused")
private void syncBookSelected() {
if (syncBookList.selectedItems().size() > 0)
rightButton.setEnabled(true);
else
rightButton.setEnabled(false);
}
@SuppressWarnings("unused")
private void ignoreTagSelected() {
if (ignoreTagList.selectedItems().size() > 0)
leftTagButton.setEnabled(true);
else
leftTagButton.setEnabled(false);
}
@SuppressWarnings("unused")
private void syncTagSelected() {
if (syncTagList.selectedItems().size() > 0)
rightTagButton.setEnabled(true);
else
rightTagButton.setEnabled(false);
}
@SuppressWarnings("unused")
private void ignoreLinkedNotebookSelected() {
if (ignoreLinkedNotebookList.selectedItems().size() > 0)
leftLinkedNotebookButton.setEnabled(true);
else
leftLinkedNotebookButton.setEnabled(false);
}
@SuppressWarnings("unused")
private void syncLinkedNotebookSelected() {
if (syncLinkedNotebookList.selectedItems().size() > 0)
rightLinkedNotebookButton.setEnabled(true);
else
rightLinkedNotebookButton.setEnabled(false);
}
@SuppressWarnings("unused")
private void onClicked() {
okClicked = true;
close();
}
@SuppressWarnings("unused")
private void onCancel() {
okClicked = false;
close();
}
public boolean okClicked() {
return okClicked;
}
public QListWidget getSyncBookList() {
return syncBookList;
}
public QListWidget getIgnoredBookList() {
return ignoreBookList;
}
public QListWidget getSyncTagList() {
return syncTagList;
}
public QListWidget getIgnoredTagList() {
return ignoreTagList;
}
public QListWidget getSyncLinkedNotebookList() {
return syncLinkedNotebookList;
}
public QListWidget getIgnoredLinkedNotebookList() {
return ignoreLinkedNotebookList;
}
@SuppressWarnings("unused")
private void itemSelected() {
if (syncBookList.selectedItems().size() == syncBookList.count()) {
okButton.setEnabled(false);
rightButton.setEnabled(false);
return;
}
rightButton.setEnabled(true);
okButton.setEnabled(true);
}
}