void Logbook::deleteBookmarks() { QDEBUG("Logbook::deleteBookmarks()"); if ( !m_query.exec(DELETE_BOOKMARK_ALL_SQL) ) { QWARNING_EXP("Logbook::deleteBookmarks()", "Query exec error: " << m_query.lastError().text()); } else { emit bookmarksChanged(); } }
DocumentItem::DocumentItem(QObject *parent) : QObject(parent), m_thumbnailObserver(0), m_pageviewObserver(0), m_searchInProgress(false) { qmlRegisterUncreatableType<TOCModel>("org.kde.okular", 1, 0, "TOCModel", QLatin1String("Do not create objects of this type.")); Okular::Settings::instance("okularproviderrc"); m_document = new Okular::Document(0); m_tocModel = new TOCModel(m_document, this); connect(m_document, SIGNAL(searchFinished(int,Okular::Document::SearchStatus)), this, SLOT(searchFinished(int,Okular::Document::SearchStatus))); connect(m_document->bookmarkManager(), SIGNAL(bookmarksChanged(KUrl)), this, SIGNAL(bookmarkedPagesChanged())); connect(m_document->bookmarkManager(), SIGNAL(bookmarksChanged(KUrl)), this, SIGNAL(bookmarksChanged())); }
void Logbook::deleteBookmark(const QString &url) { QDEBUG_EXP("Logbook::deleteBookmark(url)", "url: " << url); m_query.prepare(DELETE_BOOKMARK_SQL_BY_URL); m_query.bindValue(0, url); if ( !m_query.exec() ) { QDEBUG_EXP("Logbook::deleteBookmark(url)", "Query exec error: " << m_query.lastError().text()); } else { emit bookmarksChanged(); } }
void Logbook::deleteBookmark(const linkItemId &bookmarkItemId) { QDEBUG_EXP("Logbook::deleteBookmark(id)", "id: " << bookmarkItemId); m_query.prepare(DELETE_BOOKMARK_SQL_BY_ID); m_query.bindValue(0, bookmarkItemId); if ( !m_query.exec() ) { QWARNING_EXP("Logbook::deleteBookmark(id)", "Query exec error: " << m_query.lastError().text()); } else { emit bookmarksChanged(); } }
void PageItem::checkBookmarksChanged() { if (!m_documentItem) { return; } bool newBookmarked = m_documentItem.data()->document()->bookmarkManager()->isBookmarked(m_viewPort.pageNumber); if (m_bookmarked != newBookmarked) { m_bookmarked = newBookmarked; emit bookmarkedChanged(); } //TODO: check the page emit bookmarksChanged(); }
void PageItem::setBookmarkAtPos(qreal x, qreal y) { Okular::DocumentViewport viewPort(m_viewPort); viewPort.rePos.normalizedX = x; viewPort.rePos.normalizedY = y; m_documentItem.data()->document()->bookmarkManager()->addBookmark(viewPort); if (!m_bookmarked) { m_bookmarked = true; emit bookmarkedChanged(); } emit bookmarksChanged(); }
void PageItem::removeBookmarkAtPos(qreal x, qreal y) { Okular::DocumentViewport viewPort(m_viewPort); viewPort.rePos.enabled = true; viewPort.rePos.normalizedX = x; viewPort.rePos.normalizedY = y; m_documentItem.data()->document()->bookmarkManager()->addBookmark(viewPort); if (m_bookmarked && m_documentItem.data()->document()->bookmarkManager()->bookmarks(m_viewPort.pageNumber).count() == 0) { m_bookmarked = false; emit bookmarkedChanged(); } emit bookmarksChanged(); }
BookmarkList::BookmarkList( Okular::Document *document, QWidget *parent ) : QWidget( parent ), m_document( document ), m_currentDocumentItem( 0 ) { QVBoxLayout *mainlay = new QVBoxLayout( this ); mainlay->setMargin( 0 ); mainlay->setSpacing( 6 ); m_searchLine = new KTreeWidgetSearchLine( this ); mainlay->addWidget( m_searchLine ); m_tree = new QTreeWidget( this ); mainlay->addWidget( m_tree ); QStringList cols; cols.append( "Bookmarks" ); m_tree->setContextMenuPolicy( Qt::CustomContextMenu ); m_tree->setHeaderLabels( cols ); m_tree->setSortingEnabled( false ); m_tree->setRootIsDecorated( true ); m_tree->setAlternatingRowColors( true ); m_tree->setItemDelegate( new PageItemDelegate( m_tree ) ); m_tree->header()->hide(); m_tree->setSelectionBehavior( QAbstractItemView::SelectRows ); m_tree->setEditTriggers( QAbstractItemView::EditKeyPressed ); connect( m_tree, SIGNAL(itemActivated(QTreeWidgetItem*,int)), this, SLOT(slotExecuted(QTreeWidgetItem*)) ); connect( m_tree, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotContextMenu(QPoint)) ); m_searchLine->addTreeWidget( m_tree ); QToolBar * bookmarkController = new QToolBar( this ); mainlay->addWidget( bookmarkController ); bookmarkController->setObjectName( QLatin1String( "BookmarkControlBar" ) ); // change toolbar appearance bookmarkController->setIconSize( QSize( 16, 16 ) ); bookmarkController->setMovable( false ); QSizePolicy sp = bookmarkController->sizePolicy(); sp.setVerticalPolicy( QSizePolicy::Minimum ); bookmarkController->setSizePolicy( sp ); // insert a togglebutton [show only bookmarks in the current document] m_showBoomarkOnlyAction = bookmarkController->addAction( KIcon( "bookmarks" ), i18n( "Current document only" ) ); m_showBoomarkOnlyAction->setCheckable( true ); connect( m_showBoomarkOnlyAction, SIGNAL(toggled(bool)), this, SLOT(slotFilterBookmarks(bool)) ); connect( m_document->bookmarkManager(), SIGNAL(bookmarksChanged(KUrl)), this, SLOT(slotBookmarksChanged(KUrl)) ); rebuildTree( m_showBoomarkOnlyAction->isChecked() ); }
BookmarksManagerDialog::BookmarksManagerDialog (QWidget *parent) : QDialog (parent) , BMModel_ (new QStandardItemModel (this)) { setAttribute (Qt::WA_DeleteOnClose, true); Ui_.setupUi (this); Ui_.BookmarksTree_->setModel (BMModel_); for (auto proto : Core::Instance ().GetProtocols ()) { if (!qobject_cast<IMUCProtocol*> (proto->GetQObject ())) continue; for (auto accObj : proto->GetRegisteredAccounts ()) { const auto account = qobject_cast<IAccount*> (accObj); if (!account) { qWarning () << Q_FUNC_INFO << "unable to cast" << accObj << "to IAccount for protocol" << proto->GetProtocolID (); continue; } if (!qobject_cast<ISupportBookmarks*> (accObj)) continue; Ui_.AccountBox_->addItem (account->GetAccountName (), QVariant::fromValue (account)); connect (accObj, SIGNAL (bookmarksChanged ()), this, SLOT (handleBookmarksChanged ())); } } if (Ui_.AccountBox_->count ()) on_AccountBox__currentIndexChanged (0); }
void PageItem::setDocument(DocumentItem *doc) { if (doc == m_documentItem.data() || !doc) { return; } m_page = 0; disconnect(doc, 0, this, 0); m_documentItem = doc; Observer *observer = m_isThumbnail ? m_documentItem.data()->thumbnailObserver() : m_documentItem.data()->pageviewObserver(); connect(observer, SIGNAL(pageChanged(int, int)), this, SLOT(pageHasChanged(int, int))); connect(doc->document()->bookmarkManager(), SIGNAL(bookmarksChanged(KUrl)), this, SLOT(checkBookmarksChanged())); setPageNumber(0); emit documentChanged(); m_redrawTimer->start(); connect(doc, SIGNAL(pathChanged()), this, SLOT(documentPathChanged())); }
RoutingInputWidget::RoutingInputWidget( MarbleModel* model, int index, QWidget *parent ) : QWidget( parent ), d( new RoutingInputWidgetPrivate( model, index, this ) ) { QHBoxLayout *layout = new QHBoxLayout( this ); layout->setSizeConstraint( QLayout::SetMinimumSize ); layout->setSpacing( 0 ); layout->setMargin( 0 ); layout->addWidget( d->m_lineEdit ); layout->addWidget( d->m_removeButton ); bool const smallScreen = MarbleGlobal::getInstance()->profiles() & MarbleGlobal::SmallScreen; if ( smallScreen ) { connect( d->m_lineEdit, SIGNAL(decoratorButtonClicked()), this, SLOT(openTargetSelectionDialog()) ); } else { d->createMenu( this ); connect(d->m_lineEdit, SIGNAL(decoratorButtonClicked()), this, SLOT(showMenu())); } connect( d->m_removeButton, SIGNAL(clicked()), this, SLOT(requestRemoval()) ); connect( d->m_marbleModel->bookmarkManager(), SIGNAL(bookmarksChanged()), this, SLOT(reloadBookmarks()) ); connect( d->m_marbleModel->positionTracking(), SIGNAL(statusChanged(PositionProviderStatus)), this, SLOT(updateCurrentLocationButton(PositionProviderStatus)) ); connect( &d->m_placemarkRunnerManager, SIGNAL(searchResultChanged(QAbstractItemModel*)), this, SLOT(setPlacemarkModel(QAbstractItemModel*)) ); connect( &d->m_reverseGeocodingRunnerManager, SIGNAL(reverseGeocodingFinished(GeoDataCoordinates,GeoDataPlacemark)), this, SLOT(retrieveReverseGeocodingResult(GeoDataCoordinates,GeoDataPlacemark)) ); connect( d->m_lineEdit, SIGNAL(returnPressed()), this, SLOT(findPlacemarks()) ); connect( d->m_lineEdit, SIGNAL(textEdited(QString)), this, SLOT(setInvalid()) ); connect( &d->m_placemarkRunnerManager, SIGNAL(searchFinished(QString)), this, SLOT(finishSearch()) ); connect( d->m_marbleModel->routingManager()->routeRequest(), SIGNAL(positionChanged(int,GeoDataCoordinates)), this, SLOT(updatePosition(int,GeoDataCoordinates)) ); connect( &d->m_nominatimTimer, SIGNAL(timeout()), this, SLOT(reverseGeocoding()) ); connect( this, SIGNAL(targetValidityChanged(bool)), this, SLOT(updateCenterButton(bool)) ); updateCenterButton( hasTargetPosition() ); d->adjustText(); }
/* Convert the event from the callbacks in actions */ void InputManager::customEvent( QEvent *event ) { int i_type = event->type(); IMEvent *ple = static_cast<IMEvent *>(event); if( i_type == IMEvent::ItemChanged ) UpdateMeta( ple->item() ); if( !hasInput() ) return; /* Actions */ switch( i_type ) { case IMEvent::PositionUpdate: UpdatePosition(); break; case IMEvent::StatisticsUpdate: UpdateStats(); break; case IMEvent::ItemChanged: /* Ignore ItemChanged_Type event that does not apply to our input */ if( p_item == ple->item() ) { UpdateStatus(); // UpdateName(); UpdateArt(); UpdateMeta(); /* Update duration of file */ } break; case IMEvent::ItemStateChanged: // TODO: Fusion with above state UpdateStatus(); // UpdateName(); // UpdateNavigation(); This shouldn't be useful now // UpdateTeletext(); Same break; case IMEvent::NameChanged: UpdateName(); break; case IMEvent::MetaChanged: UpdateMeta(); UpdateName(); /* Needed for NowPlaying */ UpdateArt(); /* Art is part of meta in the core */ break; case IMEvent::InfoChanged: UpdateInfo(); break; case IMEvent::ItemTitleChanged: UpdateNavigation(); UpdateName(); /* Display the name of the Chapter, if exists */ break; case IMEvent::ItemRateChanged: UpdateRate(); break; case IMEvent::ItemEsChanged: UpdateTeletext(); // We don't do anything ES related. Why ? break; case IMEvent::ItemTeletextChanged: UpdateTeletext(); break; case IMEvent::InterfaceVoutUpdate: UpdateVout(); break; case IMEvent::SynchroChanged: emit synchroChanged(); break; case IMEvent::CachingEvent: UpdateCaching(); break; case IMEvent::BookmarksChanged: emit bookmarksChanged(); break; case IMEvent::InterfaceAoutUpdate: UpdateAout(); break; case IMEvent::RecordingEvent: UpdateRecord(); break; case IMEvent::ProgramChanged: UpdateProgramEvent(); break; case IMEvent::EPGEvent: UpdateEPG(); break; default: msg_Warn( p_intf, "This shouldn't happen: %i", i_type ); assert(0); } }
void PageItem::removeBookmark(const QString &bookmark) { m_documentItem.data()->document()->bookmarkManager()->removeBookmark(bookmark); emit bookmarksChanged(); }
BookmarksDialog::BookmarksDialog( intf_thread_t *_p_intf ):QVLCFrame( _p_intf ) { b_ignore_updates = false; setWindowFlags( Qt::Tool ); setWindowOpacity( var_InheritFloat( p_intf, "qt-opacity" ) ); setWindowTitle( qtr( "Edit Bookmarks" ) ); setWindowRole( "vlc-bookmarks" ); QHBoxLayout *layout = new QHBoxLayout( this ); QDialogButtonBox *buttonsBox = new QDialogButtonBox( Qt::Vertical ); QPushButton *addButton = new QPushButton( qtr( "Create" ) ); addButton->setToolTip( qtr( "Create a new bookmark" ) ); buttonsBox->addButton( addButton, QDialogButtonBox::ActionRole ); delButton = new QPushButton( qtr( "Delete" ) ); delButton->setToolTip( qtr( "Delete the selected item" ) ); buttonsBox->addButton( delButton, QDialogButtonBox::ActionRole ); clearButton = new QPushButton( qtr( "Clear" ) ); clearButton->setToolTip( qtr( "Delete all the bookmarks" ) ); buttonsBox->addButton( clearButton, QDialogButtonBox::ResetRole ); #if 0 QPushButton *extractButton = new QPushButton( qtr( "Extract" ) ); extractButton->setToolTip( qtr() ); buttonsBox->addButton( extractButton, QDialogButtonBox::ActionRole ); #endif /* ?? Feels strange as Qt guidelines will put reject on top */ buttonsBox->addButton( new QPushButton( qtr( "&Close" ) ), QDialogButtonBox::RejectRole); bookmarksList = new QTreeWidget( this ); bookmarksList->setRootIsDecorated( false ); bookmarksList->setAlternatingRowColors( true ); bookmarksList->setSelectionMode( QAbstractItemView::ExtendedSelection ); bookmarksList->setSelectionBehavior( QAbstractItemView::SelectRows ); bookmarksList->setEditTriggers( QAbstractItemView::SelectedClicked ); bookmarksList->setColumnCount( 3 ); bookmarksList->resize( sizeHint() ); QStringList headerLabels; headerLabels << qtr( "Description" ); headerLabels << qtr( "Bytes" ); headerLabels << qtr( "Time" ); bookmarksList->setHeaderLabels( headerLabels ); layout->addWidget( buttonsBox ); layout->addWidget( bookmarksList ); CONNECT( THEMIM->getIM(), bookmarksChanged(), this, update() ); CONNECT( bookmarksList, activated( QModelIndex ), this, activateItem( QModelIndex ) ); CONNECT( bookmarksList, itemChanged( QTreeWidgetItem*, int ), this, edit( QTreeWidgetItem*, int ) ); CONNECT( bookmarksList->model(), rowsInserted( const QModelIndex &, int, int ), this, updateButtons() ); CONNECT( bookmarksList->model(), rowsRemoved( const QModelIndex &, int, int ), this, updateButtons() ); CONNECT( bookmarksList->selectionModel(), selectionChanged( const QItemSelection &, const QItemSelection & ), this, updateButtons() ); BUTTONACT( addButton, add() ); BUTTONACT( delButton, del() ); BUTTONACT( clearButton, clear() ); #if 0 BUTTONACT( extractButton, extract() ); #endif CONNECT( buttonsBox, rejected(), this, close() ); updateButtons(); restoreWidgetPosition( "Bookmarks", QSize( 435, 280 ) ); updateGeometry(); }
BookmarksDialog::BookmarksDialog( intf_thread_t *_p_intf ):QVLCFrame( _p_intf ) { setWindowFlags( Qt::Tool ); setWindowOpacity( config_GetFloat( p_intf, "qt-opacity" ) ); setWindowTitle( qtr( "Edit Bookmarks" ) ); setWindowRole( "vlc-bookmarks" ); QGridLayout *layout = new QGridLayout( this ); QPushButton *addButton = new QPushButton( qtr( "Create" ) ); addButton->setToolTip( qtr( "Create a new bookmark" ) ); QPushButton *delButton = new QPushButton( qtr( "Delete" ) ); delButton->setToolTip( qtr( "Delete the selected item" ) ); QPushButton *clearButton = new QPushButton( qtr( "Clear" ) ); clearButton->setToolTip( qtr( "Delete all the bookmarks" ) ); #if 0 QPushButton *extractButton = new QPushButton( qtr( "Extract" ) ); extractButton->setToolTip( qtr() ); #endif QPushButton *closeButton = new QPushButton( qtr( "&Close" ) ); bookmarksList = new QTreeWidget( this ); bookmarksList->setRootIsDecorated( false ); bookmarksList->setAlternatingRowColors( true ); bookmarksList->setSelectionMode( QAbstractItemView::ExtendedSelection ); bookmarksList->setSelectionBehavior( QAbstractItemView::SelectRows ); bookmarksList->setEditTriggers( QAbstractItemView::SelectedClicked ); bookmarksList->setColumnCount( 3 ); bookmarksList->resize( sizeHint() ); QStringList headerLabels; headerLabels << qtr( "Description" ); headerLabels << qtr( "Bytes" ); headerLabels << qtr( "Time" ); bookmarksList->setHeaderLabels( headerLabels ); layout->addWidget( addButton, 0, 0 ); layout->addWidget( delButton, 1, 0 ); layout->addWidget( clearButton, 2, 0 ); layout->addItem( new QSpacerItem( 20, 20, QSizePolicy::Expanding ), 4, 0 ); #if 0 layout->addWidget( extractButton, 5, 0 ); #endif layout->addWidget( bookmarksList, 0, 1, 6, 2); layout->setColumnStretch( 1, 1 ); layout->addWidget( closeButton, 7, 2 ); CONNECT( THEMIM->getIM(), bookmarksChanged(), this, update() ); CONNECT( bookmarksList, activated( QModelIndex ), this, activateItem( QModelIndex ) ); CONNECT( bookmarksList, itemChanged( QTreeWidgetItem*, int ), this, edit( QTreeWidgetItem*, int ) ); BUTTONACT( addButton, add() ); BUTTONACT( delButton, del() ); BUTTONACT( clearButton, clear() ); #if 0 BUTTONACT( extractButton, extract() ); #endif BUTTONACT( closeButton, close() ); readSettings( "Bookmarks", QSize( 435, 280 ) ); updateGeometry(); }