/** * \brief Handles the click on an item * @param item as the clicked item * @param index as the given index */ void UBLibraryWidget::onItemClicked(QGraphicsItem *item, int index) { Q_UNUSED(index); if(NULL != item) { mLoadingLibraryItems = true; int iItem = mGraphicItems.indexOf(item); if(0 <= iItem) { UBLibElement* pElem = mCurrentElems.at(iItem); if(NULL != pElem) { delete mpCrntElem; mpCrntElem = new UBLibElement(pElem); if(eUBLibElementType_Folder == pElem->type() || eUBLibElementType_VirtualFolder == pElem->type()) { // Add the clicked element to the end of the elements list // (at this level, the user can only go down in the path) UBChainedLibElement* pNextElem = new UBChainedLibElement(pElem); appendChainedElement(pNextElem, chainedElements); delete mpCrntDir; mpCrntDir = new UBLibElement(pElem); // Display the content of the folder QList<UBLibElement*> qlElems = mLibraryController->getContent(mpCrntDir); mCurrentElems = qlElems; refreshView(); } else { if ("application/search" == UBFileSystemUtils::mimeTypeFromFileName(pElem->path().toLocalFile())) { emit displaySearchEngine(pElem); } else { // Display the properties view emit propertiesRequested(pElem); } } } emit itemClicked(); } mLoadingLibraryItems = false; } }
// Constructor NTagView::NTagView(QWidget *parent) : QTreeWidget(parent) { accountFilter = 0; this->setFont(global.getGuiFont(font())); filterPosition = 0; maxCount = 0; // setup options this->setEditTriggers(QAbstractItemView::NoEditTriggers); this->setSelectionBehavior(QAbstractItemView::SelectRows); this->setSelectionMode(QAbstractItemView::ExtendedSelection); this->setRootIsDecorated(true); this->setSortingEnabled(false); this->header()->setVisible(false); //this->setStyleSheet("QTreeWidget { background:transparent; border:none; margin:0px; padding: 0px; }"); // Build the root item root = new NTagViewItem(this); root->setIcon(NAME_POSITION,global.getIconResource(":tagIcon")); root->setData(NAME_POSITION, Qt::UserRole, "root"); root->setData(NAME_POSITION, Qt::DisplayRole, tr("Tags from Personal")); root->setExpanded(true); QFont rootFont = root->font(NAME_POSITION); rootFont.setBold(true); root->setFont(NAME_POSITION, rootFont); this->setMinimumHeight(1); this->addTopLevelItem(root); this->rebuildTagTreeNeeded = true; this->loadData(); setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); connect(this, SIGNAL(itemExpanded(QTreeWidgetItem*)), this, SLOT(calculateHeight())); connect(this, SIGNAL(itemCollapsed(QTreeWidgetItem*)), this, SLOT(calculateHeight())); connect(this, SIGNAL(itemSelectionChanged()), this, SLOT(buildSelection())); setAcceptDrops(true); setDragEnabled(true); global.settings->beginGroup("SaveState"); hideUnassigned = global.settings->value("hideUnassigned", false).toBool(); global.settings->endGroup(); addAction = context.addAction(tr("Create New Tag")); addAction->setShortcut(QKeySequence(Qt::Key_Insert)); addAction->setShortcutContext(Qt::WidgetShortcut); addShortcut = new QShortcut(this); addShortcut->setKey(QKeySequence(Qt::Key_Insert)); addShortcut->setContext(Qt::WidgetShortcut); context.addSeparator(); deleteAction = context.addAction(tr("Delete")); deleteAction->setShortcut(QKeySequence(Qt::Key_Delete)); deleteShortcut = new QShortcut(this); deleteShortcut->setKey(QKeySequence(Qt::Key_Delete)); deleteShortcut->setContext(Qt::WidgetShortcut); renameAction = context.addAction(tr("Rename")); renameAction->setShortcutContext(Qt::WidgetShortcut); mergeAction = context.addAction(tr("Merge")); context.addSeparator(); hideUnassignedAction = context.addAction(tr("Hide Unassigned")); hideUnassignedAction->setCheckable(true); hideUnassignedAction->setChecked(hideUnassigned); connect(hideUnassignedAction, SIGNAL(triggered()), this, SLOT(hideUnassignedTags())); context.addSeparator(); propertiesAction = context.addAction(tr("Properties")); connect(addAction, SIGNAL(triggered()), this, SLOT(addRequested())); connect(deleteAction, SIGNAL(triggered()), this, SLOT(deleteRequested())); connect(renameAction, SIGNAL(triggered()), this, SLOT(renameRequested())); connect(propertiesAction, SIGNAL(triggered()), this, SLOT(propertiesRequested())); connect(mergeAction, SIGNAL(triggered()), this, SLOT(mergeRequested())); connect(addShortcut, SIGNAL(activated()), this, SLOT(addRequested())); connect(deleteShortcut, SIGNAL(activated()), this, SLOT(deleteRequested())); this->setItemDelegate(new NTagViewDelegate()); this->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred); this->setFrameShape(QFrame::NoFrame); expandedImage = new QImage(":expandedIcon"); collapsedImage = new QImage(":collapsedIcon"); }
// Constructor NNotebookView::NNotebookView(QWidget *parent) : QTreeWidget(parent) { stackStore.clear(); dataStore.clear(); this->setFont(global.getGuiFont(font())); filterPosition = -1; maxCount = 0; // Highest count of any notebook. Used in calculating column width // setup options this->setEditTriggers(QAbstractItemView::NoEditTriggers); this->setSelectionBehavior(QAbstractItemView::SelectRows); this->setSelectionMode(QAbstractItemView::SingleSelection); this->setRootIsDecorated(true); this->setSortingEnabled(false); this->header()->setVisible(false); this->setStyleSheet("QTreeView {border-image:none; image:none;} "); root = new NNotebookViewItem(0); root->setType(NNotebookViewItem::Stack); root->setData(NAME_POSITION, Qt::UserRole, "rootsynchronized"); root->setData(NAME_POSITION, Qt::DisplayRole, tr("Notebooks")); QFont rootFont = root->font(NAME_POSITION); rootFont.setBold(true); root->setFont(NAME_POSITION, rootFont); root->setRootColor(false); this->setMinimumHeight(1); this->addTopLevelItem(root); this->rebuildNotebookTreeNeeded = true; this->loadData(); setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); connect(this, SIGNAL(itemExpanded(QTreeWidgetItem*)), this, SLOT(calculateHeight())); connect(this, SIGNAL(itemCollapsed(QTreeWidgetItem*)), this, SLOT(calculateHeight())); connect(this, SIGNAL(itemSelectionChanged()), this, SLOT(buildSelection())); addAction = context.addAction(tr("Create New Notebook")); addAction->setShortcut(QKeySequence(Qt::Key_Insert)); addAction->setShortcutContext(Qt::WidgetShortcut); addShortcut = new QShortcut(this); addShortcut->setKey(QKeySequence(Qt::Key_Insert)); addShortcut->setContext(Qt::WidgetShortcut); context.addSeparator(); deleteAction = context.addAction(tr("Delete")); deleteAction->setShortcut(QKeySequence(Qt::Key_Delete)); deleteShortcut = new QShortcut(this); deleteShortcut->setKey(QKeySequence(Qt::Key_Delete)); deleteShortcut->setContext(Qt::WidgetShortcut); // Start building the stack menu stackMenu = context.addMenu(tr("Add to stack")); QAction *newAction; NotebookTable table(global.db); QStringList stacks; table.getStacks(stacks); for (int i=0; i<stacks.size(); i++) { newAction = stackMenu->addAction(stacks[i]); connect(newAction, SIGNAL(triggered()), this, SLOT(moveToStackRequested())); } sortStackMenu(); if (stacks.size() > 0) { stackMenu->addSeparator(); } newStackAction = stackMenu->addAction(tr("New stack")); connect(newStackAction, SIGNAL(triggered()), this, SLOT(moveToNewStackRequested())); removeFromStackAction = context.addAction(tr("Remove from stack")); removeFromStackAction->setShortcutContext(Qt::WidgetShortcut); removeFromStackAction->setVisible(false); renameAction = context.addAction(tr("Rename")); renameAction->setShortcutContext(Qt::WidgetShortcut); //renameShortcut = new QShortcut(this); //renameShortcut->setKey(QKeySequence(Qt::Key_F2)); //renameShortcut->setContext(Qt::WidgetShortcut); context.addSeparator(); propertiesAction = context.addAction(tr("Properties")); connect(addAction, SIGNAL(triggered()), this, SLOT(addRequested())); connect(deleteAction, SIGNAL(triggered()), this, SLOT(deleteRequested())); connect(renameAction, SIGNAL(triggered()), this, SLOT(renameRequested())); connect(propertiesAction, SIGNAL(triggered()), this, SLOT(propertiesRequested())); connect(addShortcut, SIGNAL(activated()), this, SLOT(addRequested())); connect(deleteShortcut, SIGNAL(activated()), this, SLOT(deleteRequested())); //connect(renameShortcut, SIGNAL(activated()), this, SLOT(renameRequested())); connect(removeFromStackAction, SIGNAL(triggered()), this, SLOT(removeFromStackRequested())); this->setAcceptDrops(true); this->setItemDelegate(new NNotebookViewDelegate()); root->setExpanded(true); this->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred); this->setFrameShape(QFrame::NoFrame); //setStyle(new MyStyle("QTreeView")); // setStyle(new QCleanlooksStyle); //setStyleSheet("::branches {image: url(:right-arrow.png);}"); // setStyleSheet("QTreeView::branch { image: url(:right-arrow.png); }"); expandedImage = new QImage(":expandedIcon"); collapsedImage = new QImage(":collapsedIcon"); }