package cx.fbn.nevernote.gui;
import java.util.List;
import com.trolltech.qt.core.Qt.Orientation;
import com.trolltech.qt.gui.QAction;
import com.trolltech.qt.gui.QContextMenuEvent;
import com.trolltech.qt.gui.QHeaderView;
import com.trolltech.qt.gui.QMenu;
import com.trolltech.qt.gui.QWidget;
import cx.fbn.nevernote.Global;
public class TableViewHeader extends QHeaderView {
public QMenu contextMenu;
public QAction createdDateAction;
public QAction changedDateAction;
public QAction subjectDateAction;
public QAction tagsAction;
public QAction titleAction;
public QAction notebookAction;
public QAction synchronizedAction;
public QAction authorAction;
public QAction urlAction;
public QAction thumbnailAction;
public QAction guidAction;
public QAction pinnedAction;
public TableViewHeader(Orientation orientation, QWidget parent) {
super(orientation, parent);
setSortIndicatorShown(true);
setClickable(true);
contextMenu = new QMenu();
titleAction = new QAction(this);
titleAction.setText(tr("Title"));
titleAction.setCheckable(true);
contextMenu.addAction(titleAction);
createdDateAction = new QAction(this);
createdDateAction.setText(tr("Date Created"));
createdDateAction.setCheckable(true);
contextMenu.addAction(createdDateAction);
changedDateAction = new QAction(this);
changedDateAction.setText(tr("Date Changed"));
changedDateAction.setCheckable(true);
contextMenu.addAction(changedDateAction);
subjectDateAction = new QAction(this);
subjectDateAction.setText(tr("Subject Date"));
subjectDateAction.setCheckable(true);
contextMenu.addAction(subjectDateAction);
tagsAction = new QAction(this);
tagsAction.setText(tr("Tags"));
tagsAction.setCheckable(true);
contextMenu.addAction(tagsAction);
notebookAction = new QAction(this);
notebookAction.setText(tr("Notebook"));
notebookAction.setCheckable(true);
contextMenu.addAction(notebookAction);
synchronizedAction = new QAction(this);
synchronizedAction.setText(tr("Sync"));
synchronizedAction.setCheckable(true);
contextMenu.addAction(synchronizedAction);
authorAction = new QAction(this);
authorAction.setText(tr("Author"));
authorAction.setCheckable(true);
contextMenu.addAction(authorAction);
urlAction = new QAction(this);
urlAction.setText(tr("Source URL"));
urlAction.setCheckable(true);
contextMenu.addAction(urlAction);
thumbnailAction = new QAction(this);
thumbnailAction.setText(tr("Thumbnail"));
thumbnailAction.setCheckable(true);
contextMenu.addAction(thumbnailAction);
pinnedAction = new QAction(this);
pinnedAction.setText(tr("Pinned"));
pinnedAction.setCheckable(true);
contextMenu.addAction(pinnedAction);
guidAction = new QAction(this);
guidAction.setText(tr("Guid"));
guidAction.setCheckable(true);
setMouseTracking(true);
sectionEntered.connect(this, "sectionClicked(Integer)");
checkActions();
}
private void checkActions() {
titleAction.setChecked(Global.isColumnVisible("title"));
createdDateAction.setChecked(Global.isColumnVisible("dateCreated"));
changedDateAction.setChecked(Global.isColumnVisible("dateChanged"));
subjectDateAction.setChecked(Global.isColumnVisible("dateSubject"));
tagsAction.setChecked(Global.isColumnVisible("tags"));
notebookAction.setChecked(Global.isColumnVisible("notebook"));
synchronizedAction.setChecked(Global.isColumnVisible("synchronized"));
authorAction.setChecked(Global.isColumnVisible("author"));
urlAction.setChecked(Global.isColumnVisible("sourceUrl"));
thumbnailAction.setChecked(Global.isColumnVisible("thumbnail"));
pinnedAction.setChecked(Global.isColumnVisible("pinned"));
guidAction.setChecked(Global.isColumnVisible("guid"));
}
public void sectionClicked(Integer position) {
if (position == Global.noteTableThumbnailPosition)
setClickable(false);
else
setClickable(true);
}
@Override
public void contextMenuEvent(QContextMenuEvent event) {
checkActions();
List<QAction> actions = contextMenu.actions();
int count = 0;
for (int i=0; i<actions.size(); i++) {
actions.get(i).setEnabled(true);
if (actions.get(i).isChecked())
count++;
}
if (count <= 1) {
for (int i=0; i<actions.size(); i++) {
if (actions.get(i).isChecked())
actions.get(i).setEnabled(false);
}
}
contextMenu.exec(event.globalPos());
}
}