Package cx.fbn.nevernote.dialog

Source Code of cx.fbn.nevernote.dialog.WatchFolder

/*
* 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;

//**********************************************
//**********************************************
//* Dialog box used to show watched folders
//**********************************************
//**********************************************

import java.util.ArrayList;
import java.util.List;

import com.evernote.edam.type.Notebook;
import com.trolltech.qt.core.QModelIndex;
import com.trolltech.qt.core.Qt.ItemDataRole;
import com.trolltech.qt.gui.QAbstractItemView.SelectionBehavior;
import com.trolltech.qt.gui.QAbstractItemView.SelectionMode;
import com.trolltech.qt.gui.QApplication;
import com.trolltech.qt.gui.QDialog;
import com.trolltech.qt.gui.QFontMetrics;
import com.trolltech.qt.gui.QHBoxLayout;
import com.trolltech.qt.gui.QIcon;
import com.trolltech.qt.gui.QPushButton;
import com.trolltech.qt.gui.QTableWidget;
import com.trolltech.qt.gui.QTableWidgetItem;
import com.trolltech.qt.gui.QVBoxLayout;

import cx.fbn.nevernote.sql.WatchFolderRecord;

public class WatchFolder extends QDialog {
  private final QPushButton    okButton;
  private final QPushButton    cancelButton;
  private final QPushButton    addButton;
  private final QPushButton    editButton;
  private final QPushButton    deleteButton;
  private boolean          okClicked;
  public final QTableWidget    table;
  private final List<Notebook>  notebooks;
  private final List<WatchFolderRecord> records;
  private final String iconPath = new String("classpath:cx/fbn/nevernote/icons/");
 
  public WatchFolder(List<WatchFolderRecord> w, List<Notebook> n) {
    setWindowIcon(new QIcon(iconPath+"folder.png"));
    okClicked = false;
    notebooks = n;
    records = w;
   
    okButton = new QPushButton();
    okButton.setText(tr("OK"));
    okButton.pressed.connect(this, "onClicked()");
   
    cancelButton = new QPushButton();
    cancelButton.setText(tr("Cancel"));
    cancelButton.pressed.connect(this, "onCancel()");
   
    QHBoxLayout horizontalLayout = new QHBoxLayout();
    QHBoxLayout buttonLayout = new QHBoxLayout();
    buttonLayout.addStretch(1);
    buttonLayout.addWidget(okButton);
    buttonLayout.addWidget(cancelButton);
    setWindowTitle(tr("Auto Import Folders"))
   
    table = new QTableWidget(records.size(),3);
    List<String> headers = new ArrayList<String>();
    headers.add(tr("Directory"));
    headers.add(tr("Target Notebook"));
    headers.add(tr("Keep"));
    table.setHorizontalHeaderLabels(headers);
    table.verticalHeader().setVisible(false);
    table.setAlternatingRowColors(true);
    table.setSelectionBehavior(SelectionBehavior.SelectRows);
    table.setSelectionMode(SelectionMode.SingleSelection);
    table.itemSelectionChanged.connect(this, "tableSelection()");
    horizontalLayout.addWidget(table);
   
   
    addButton = new QPushButton();
    addButton.setText(tr("Add"));
    addButton.clicked.connect(this, "addPressed()");
   
    editButton = new QPushButton();
    editButton.setText(tr("Edit"));
    editButton.setEnabled(false);
    editButton.clicked.connect(this, "editPressed()");
   
    deleteButton = new QPushButton();
    deleteButton.setText(tr("Delete"));
    deleteButton.setEnabled(false);
    deleteButton.clicked.connect(this, "deletePressed()");
   
    QVBoxLayout editLayout = new QVBoxLayout();
    editLayout.addWidget(addButton);
    editLayout.addWidget(editButton);
    editLayout.addWidget(deleteButton);
   
    QHBoxLayout listLayout = new QHBoxLayout();
    listLayout.addLayout(horizontalLayout);
    listLayout.addLayout(editLayout);
   
    QVBoxLayout mainLayout = new QVBoxLayout();
    mainLayout.addLayout(listLayout);
    mainLayout.addSpacing(1);
    mainLayout.addLayout(buttonLayout);
    setLayout(mainLayout);

//    QTableWidgetItem dir = new QTableWidgetItem();
//    QTableWidgetItem book = new QTableWidgetItem();
   
    table.setColumnWidth(0, 160);
    resize(500, 200);
    load();
   
  }
 
  @SuppressWarnings("unused")
  private void onClicked() {
    okClicked = true;
    close();
  }
 
  @SuppressWarnings("unused")
  private void onCancel() {
    okClicked = false;
    close();
  }
 
  public boolean okClicked() {
    return okClicked;
  }
 
  @SuppressWarnings("unused")
  private void itemSelected() {
    okButton.setEnabled(true);
  }
 
  private void load() {
    for (int i=0; i<records.size(); i++) {
      addRow(i, records.get(i).folder, records.get(i).notebook, records.get(i).keep);
    }
  }

  private void addRow(int row, String folder, String notebook, boolean keepAfter) {
    QFontMetrics f = QApplication.fontMetrics();
    int fontHeight = f.height();

    QTableWidgetItem dir = new QTableWidgetItem();
    dir.setText(folder);
    table.setItem(row, 0, dir);
    table.setRowHeight(row, fontHeight);
    dir.setToolTip(folder);
 
    QTableWidgetItem book = new QTableWidgetItem();
    book.setText(notebook);
    table.setItem(row, 1, book);
   
    QTableWidgetItem keep = new QTableWidgetItem();
    if (keepAfter) {
      keep.setText(tr("Keep"));
      keep.setData(ItemDataRole.UserRole, "Keep");
    } else {
      keep.setText(tr("Delete"));
      keep.setData(ItemDataRole.UserRole, "Delete");
    }
    table.setItem(row, 2, keep);

  }
 
  @SuppressWarnings("unused")
  private void tableSelection() {
    editButton.setEnabled(true);
    deleteButton.setEnabled(true);
  }
 
 
  @SuppressWarnings("unused")
  private void addPressed() {
    WatchFolderAdd dialog = new WatchFolderAdd(null, notebooks);
    dialog.exec();
    if (dialog.okClicked()) {
      String dir = dialog.directory.text();
      String notebook = dialog.books.currentText();
     
      boolean keep;
      int index = dialog.keep.currentIndex();
      String value  = (String) dialog.keep.itemData(index);
      if (value.equalsIgnoreCase("keep"))
        keep = true;
      else
        keep = false;
      table.insertRow(table.rowCount());
      addRow(table.rowCount()-1, dir, notebook, keep);   
    }
   
  }

 
  @SuppressWarnings("unused")
  private void editPressed() {
    WatchFolderRecord record = new WatchFolderRecord();
    QModelIndex index = table.currentIndex();
    int row = index.row();
    QTableWidgetItem item = table.item(row, 0);
    record.folder = item.text();
    item = table.item(row, 1);
    record.notebook = item.text();
    item = table.item(row,2);
    if (item.data(ItemDataRole.UserRole).toString().equalsIgnoreCase("keep"))
      record.keep = true;
    else
      record.keep = false;
   
    WatchFolderAdd dialog = new WatchFolderAdd(record, notebooks);
    dialog.exec();
    if (dialog.okClicked()) {
      String dir = dialog.directory.text();
      String notebook = dialog.books.currentText();
     
      boolean keep;
      int idx = dialog.keep.currentIndex();
      if (dialog.keep.itemData(idx, ItemDataRole.UserRole).toString().equalsIgnoreCase("keep"))
        keep = true;
      else
        keep = false;
      table.removeRow(row);
      table.insertRow(table.rowCount());
      addRow(table.rowCount()-1, dir, notebook, keep);
      WatchFolderRecord newRecord = new WatchFolderRecord();
      newRecord.folder = dir;
      newRecord.notebook = notebook;
      newRecord.keep = keep;
      records.add(newRecord);
    }
    table.setCurrentIndex(index);
   
  }
 
 
  @SuppressWarnings("unused")
  private void deletePressed() {
    QModelIndex index = table.currentIndex();
    int row = index.row();
   
    QTableWidgetItem dirWidget = table.item(row, 0);
    String value = dirWidget.text();
    table.removeRow(row);
   
    for (int i=0; i<records.size(); i++) {
      if (value.equals(records.get(i).folder)) {
        records.remove(i);
        i=records.size();
      }
    }
   
    if (table.rowCount() == 0) {
      editButton.setEnabled(false);
      deleteButton.setEnabled(false);
    }   
  }
}
TOP

Related Classes of cx.fbn.nevernote.dialog.WatchFolder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.