void FileSystemTreeView::keyPressEvent(QKeyEvent *event) { switch (event->key()) { // Move up in the filesystem case Qt::Key_Backspace: { QString path = _fileSystemModel->filePath(_theIndex); QFileInfo fileInfo(path); if (fileInfo.isDir()) { QDir d(path); if (d.cdUp()) { emit folderChanged(d.absolutePath()); } } break; } // Change directory if selected one is a directory, otherwise, send track to playlist case Qt::Key_Return: case Qt::Key_Enter: { if (selectedIndexes().size() == 1) { QString path = _fileSystemModel->filePath(selectedIndexes().first()); QFileInfo fileInfo(path); if (fileInfo.isDir()) { emit folderChanged(fileInfo.absoluteFilePath()); } else if (FileHelper::suffixes().contains(fileInfo.suffix())) { this->convertIndex(selectedIndexes().first()); } } else { for (QModelIndex index : selectedIndexes()) { this->convertIndex(index); } } break; } case Qt::Key_Space: { if (selectedIndexes().isEmpty()) { this->selectionModel()->select(_fileSystemModel->index(0, 0, _theIndex), QItemSelectionModel::Select); } break; } case Qt::Key_Left: case Qt::Key_Right: case Qt::Key_Up: case Qt::Key_Down: TreeView::keyPressEvent(event); break; default: event->isAccepted(); this->scrollAndHighlight((QChar)event->key()); } }
void KJotsMain::deleteEntry() { if( !folderOpen ) return; if( entrylist.count() == 0 ) return; else if( entrylist.count() == 1 ) { entrylist.at(0)->text = ""; entrylist.at(0)->subject = ""; s_bar->setValue(0); me_text->clear(); le_subject->setText(""); return; } entrylist.remove(current); if( current >= (int) entrylist.count() - 1 ) { if( current ) current--; s_bar->setValue(current); s_bar->setRange(0, entrylist.count()-1 ); } me_text->setText( entrylist.at(current)->text ); emit entryMoved(current); le_subject->setText( entrylist.at(current)->subject ); s_bar->setRange(0, entrylist.count()-1 ); emit folderChanged(&entrylist); }
void QQuickAbstractFileDialog::setFolder(const QUrl &f) { if (m_dlgHelper) m_dlgHelper->setDirectory(f); m_options->setInitialDirectory(f); emit folderChanged(); }
void CachedImage::setFolder(const QString &folder) { if (m_folder != folder && folder != "") { m_folder = folder; emit folderChanged(); } }
void AccountSettings::slotRemoveCurrentFolder() { QModelIndex selected = ui->_folderList->selectionModel()->currentIndex(); if( selected.isValid() ) { QString alias = _model->data( selected, FolderStatusDelegate::FolderAliasRole ).toString(); qDebug() << "Remove Folder alias " << alias; if( !alias.isEmpty() ) { // remove from file system through folder man // _model->removeRow( selected.row() ); int ret = QMessageBox::question( this, tr("Confirm Folder Remove"), tr("<p>Do you really want to stop syncing the folder <i>%1</i>?</p>" "<p><b>Note:</b> This will not remove the files from your client.</p>").arg(alias), QMessageBox::Yes|QMessageBox::No ); if( ret == QMessageBox::No ) { return; } FolderMan *folderMan = FolderMan::instance(); folderMan->slotRemoveFolder( alias ); setFolderList(folderMan->map()); emit folderChanged(); slotCheckConnection(); } } }
ImportMailPage::ImportMailPage(QWidget *parent) : QWidget(parent), ui(new Ui::ImportMailPage) { ui->setupUi(this); connect(ui->importMails,SIGNAL(clicked()),SIGNAL(importMailsClicked())); connect(ui->mCollectionRequestor, SIGNAL(folderChanged(Akonadi::Collection)), this, SLOT(collectionChanged(Akonadi::Collection)) ); }
SettingsDialog::SettingsDialog(Application *app, QWidget *parent) : QDialog(parent), _ui(new Ui::SettingsDialog) { _ui->setupUi(this); setObjectName("Settings"); // required as group for saveGeometry call setWindowTitle(tr("%1 Settings").arg(Theme::instance()->appNameGUI())); QIcon generalIcon(QLatin1String(":/mirall/resources/settings.png")); QListWidgetItem *general = new QListWidgetItem(generalIcon, tr("General"), _ui->labelWidget); general->setSizeHint(QSize(0, 32)); _ui->labelWidget->addItem(general); GeneralSettings *generalSettings = new GeneralSettings; _ui->stack->addWidget(generalSettings); QIcon networkIcon(QLatin1String(":/mirall/resources/network.png")); QListWidgetItem *network = new QListWidgetItem(networkIcon, tr("Network"), _ui->labelWidget); network->setSizeHint(QSize(0, 32)); _ui->labelWidget->addItem(network); NetworkSettings *networkSettings = new NetworkSettings; _ui->stack->addWidget(networkSettings); connect(networkSettings, SIGNAL(proxySettingsChanged()), app, SLOT(slotSetupProxy())); connect(networkSettings, SIGNAL(proxySettingsChanged()), FolderMan::instance(), SLOT(slotScheduleAllFolders())); //connect(generalSettings, SIGNAL(resizeToSizeHint()), SLOT(resizeToSizeHint())); _accountSettings = new AccountSettings(this); addAccount(tr("Account"), _accountSettings); slotUpdateAccountState(); connect( app, SIGNAL(folderStateChanged(Folder*)), _accountSettings, SLOT(slotUpdateFolderState(Folder*))); connect( app, SIGNAL(folderStateChanged(Folder*)), SLOT(slotUpdateAccountState())); connect( _accountSettings, SIGNAL(addASync()), app, SLOT(slotFolderAdded()) ); connect( _accountSettings, SIGNAL(folderChanged()), app, SLOT(slotFoldersChanged())); connect( _accountSettings, SIGNAL(openFolderAlias(const QString&)), app, SLOT(slotFolderOpenAction(QString))); connect( _accountSettings, SIGNAL(openProgressDialog()), app, SLOT(slotItemProgressDialog())); connect( ProgressDispatcher::instance(), SIGNAL(progressInfo(QString, Progress::Info)), _accountSettings, SLOT(slotSetProgress(QString, Progress::Info)) ); connect( ProgressDispatcher::instance(), SIGNAL(progressSyncProblem(QString,Progress::SyncProblem)), _accountSettings, SLOT(slotProgressProblem(QString,Progress::SyncProblem)) ); _ui->labelWidget->setCurrentRow(_ui->labelWidget->row(general)); connect(_ui->labelWidget, SIGNAL(currentRowChanged(int)), _ui->stack, SLOT(setCurrentIndex(int))); QPushButton *closeButton = _ui->buttonBox->button(QDialogButtonBox::Close); connect(closeButton, SIGNAL(pressed()), SLOT(accept())); MirallConfigFile cfg; cfg.restoreGeometry(this); }
/** Get the folder which is the target of one's double-click. */ void FileSystemTreeView::convertIndex(const QModelIndex &index) { QFileInfo fileInfo = _fileSystemModel->fileInfo(index); if (fileInfo.isDir()) { emit folderChanged(_fileSystemModel->filePath(index)); } else { QStringList tracks; tracks << "file://" + fileInfo.absoluteFilePath(); emit aboutToInsertToPlaylist(-1, tracks); } }
// Set folder. void FolderModel::setFolder(const QString folder) { if(folder.isEmpty() || m_folder == folder) return; // Read folder. m_folder = folder; readFolder(); emit folderChanged(m_folder); }
void FolderWatcher::slotProcessTimerTimeout() { qDebug() << "* Processing of event queue for" << root(); if (!_pendingPathes.empty() ) { QStringList notifyPaths = _pendingPathes.keys(); _pendingPathes.clear(); //qDebug() << lastEventTime << eventTime; qDebug() << " * Notify" << notifyPaths.size() << "change items for" << root(); emit folderChanged(notifyPaths); } }
void QDeclarativeFolderListModel::setFolder(const QUrl &folder) { if (folder == d->folder) return; QModelIndex index = d->model.index(folder.toLocalFile()); if ((index.isValid() && d->model.isDir(index)) || folder.toLocalFile().isEmpty()) { d->folder = folder; QMetaObject::invokeMethod(this, "refresh", Qt::QueuedConnection); emit folderChanged(); } }
void KJotsMain::createFolder() { AskFileName *ask = new AskFileName(this); if( ask->exec() == QDialog::Rejected ) return; QString name = ask->getName(); delete ask; if( folder_list.contains(name) ) { QMessageBox::message(klocale->translate("Warning"), klocale->translate("A book with this name already exists."), klocale->translate("OK"), this); return; } saveFolder(); entrylist.clear(); folderOpen = TRUE; me_text->setEnabled(TRUE); le_subject->setEnabled(TRUE); me_text->setFocus(); me_text->clear(); me_text->deselect(); TextEntry *new_entry = new TextEntry; entrylist.append(new_entry); new_entry->subject = ""; current = 0; s_bar->setRange(0,0); s_bar->setValue(0); emit folderChanged(&entrylist); emit entryMoved(current); le_subject->setText(entrylist.first()->subject); folder_list.append(name); if( folders->text(folders->idAt(0)) == 0 ) folders->removeItemAt(0); folders->insertItem(name, unique_id++); //QDir dir = QDir::home(); //dir.cd(".kde/share/apps/kjots"); QDir dir = QDir( KApplication::localkdedir().data() ); dir.cd("share/apps/kjots"); current_folder_name = dir.absPath(); current_folder_name += '/'; current_folder_name += name; KConfig *config = KApplication::getKApplication()->getConfig(); config->setGroup("kjots"); config->writeEntry( "Folders", folder_list ); config->sync(); l_folder->setText(name); QPushButton *but; for( but = button_list.first(); but != 0; but = button_list.next() ) but->setOn(FALSE); }
void KJotsMain::newEntry() { if( !folderOpen ) return; entrylist.at(current)->text = me_text->text(); entrylist.at(current)->subject = le_subject->text(); me_text->clear(); le_subject->setText(""); TextEntry *new_entry = new TextEntry; entrylist.append(new_entry); new_entry->subject = ""; current = entrylist.count()-1; s_bar->setRange(0,current); s_bar->setValue(current); emit folderChanged(&entrylist); emit entryMoved(current); }
void KJotsMain::deleteFolder() { if( !folderOpen ) return; if( !QMessageBox::query(klocale->translate("Delete current book"), klocale->translate("Are you sure you want to delete the current book ?"), klocale->translate("Yes"), klocale->translate("No"), this) ) return; QFileInfo fi(current_folder_name); QDir dir = fi.dir(TRUE); QString name = fi.fileName(); int index = folder_list.find(name); if( index < 0 ) return; dir.remove(current_folder_name); folder_list.remove(index); int id = folders->idAt(index); folders->removeItemAt(index); if( hotlist.contains(name) ) { hotlist.remove(name); QButton *but = bg_top->find(id); bg_top->remove(but); button_list.remove( (QPushButton *) but ); resize(size()); } KConfig *config = KApplication::getKApplication()->getConfig(); config->setGroup("kjots"); config->writeEntry( "Folders", folder_list ); config->writeEntry( "Hotlist", hotlist ); config->sync(); entrylist.clear(); current_folder_name = ""; folderOpen = FALSE; me_text->setEnabled(FALSE); me_text->clear(); me_text->deselect(); le_subject->setEnabled(FALSE); le_subject->setText(""); emit folderChanged(&entrylist); s_bar->setRange(0,0); s_bar->setValue(0); l_folder->setText(""); subj_list->repaint(TRUE); }
// add a monitor to the local file system. If there is a change in the // file system, the method slotFolderMonitorFired is triggered through // the SignalMapper void FolderMan::registerFolderMonitor( Folder *folder ) { if( !folder ) return; if( !_folderWatchers.contains(folder->alias() ) ) { FolderWatcher *fw = new FolderWatcher(folder->path(), this); MirallConfigFile cfg; fw->addIgnoreListFile( cfg.excludeFile(MirallConfigFile::SystemScope) ); fw->addIgnoreListFile( cfg.excludeFile(MirallConfigFile::UserScope) ); // Connect the folderChanged signal, which comes with the changed path, // to the signal mapper which maps to the folder alias. The changed path // is lost this way, but we do not need it for the current implementation. connect(fw, SIGNAL(folderChanged(QString)), _folderWatcherSignalMapper, SLOT(map())); _folderWatcherSignalMapper->setMapping(fw, folder->alias()); _folderWatchers.insert(folder->alias(), fw); } }
void FolderWatcher::changeDetected( const QStringList& paths ) { // qDebug() << Q_FUNC_INFO << paths; // TODO: this shortcut doesn't look very reliable: // - why is the timeout only 1 second? // - what if there are more than one file being updated frequently? // - why do we skip the file alltogether instead of e.g. reducing the upload frequency? // Check if the same path was reported within the last second. QSet<QString> pathsSet = paths.toSet(); if( pathsSet == _lastPaths && _timer.elapsed() < 1000 ) { // the same path was reported within the last second. Skip. return; } _lastPaths = pathsSet; _timer.restart(); QSet<QString> changedFolders; // ------- handle ignores: for (int i = 0; i < paths.size(); ++i) { QString path = paths[i]; if( pathIsIgnored(path) ) { continue; } QFileInfo fi(path); if (fi.isDir()) { changedFolders.insert(path); } else { changedFolders.insert(fi.dir().path()); } } if (changedFolders.isEmpty()) { return; } qDebug() << "detected changes in folders:" << changedFolders; foreach (const QString &path, changedFolders) { emit folderChanged(path); }
void AccountSettings::slotRemoveCurrentFolder() { QModelIndex selected = ui->_folderList->selectionModel()->currentIndex(); if( selected.isValid() ) { int row = selected.row(); QString alias = _model->data( selected, FolderStatusDelegate::FolderAliasRole ).toString(); qDebug() << "Remove Folder alias " << alias; if( !alias.isEmpty() ) { // remove from file system through folder man // _model->removeRow( selected.row() ); int ret = QMessageBox::question( this, tr("Confirm Folder Remove"), tr("<p>Do you really want to stop syncing the folder <i>%1</i>?</p>" "<p><b>Note:</b> This will not remove the files from your client.</p>").arg(alias), QMessageBox::Yes|QMessageBox::No ); if( ret == QMessageBox::No ) { return; } /* Remove the selected item from the timer hash. */ QStandardItem *item = NULL; if( selected.isValid() ) item = _model->itemFromIndex(selected); if( selected.isValid() && item && _hideProgressTimers.contains(item) ) { QTimer *t = _hideProgressTimers[item]; t->stop(); _hideProgressTimers.remove(item); delete(t); } FolderMan *folderMan = FolderMan::instance(); folderMan->slotRemoveFolder( alias ); _model->removeRow(row); // single folder fix to show add-button and hide remove-button slotButtonsSetEnabled(); emit folderChanged(); } } }
void FormMain::infoDeep( bool checked ) { static const QString stat_with_sub( tr("Staticstics with subfolders") ), stat_without_sub( tr("Staticstics without subfolders") ); if ( checked ) { actionInfoDeep->setIcon( QIcon(":/blue_deep.png") ); actionInfoDeep->setToolTip( stat_with_sub ); statusBar()->showMessage( stat_with_sub, 3000 ); } else { actionInfoDeep->setIcon( QIcon(":/blue.png") ); actionInfoDeep->setToolTip( stat_without_sub ); statusBar()->showMessage( stat_without_sub, 3000 ); } QTreeWidgetItem * current = tree->currentItem(); if ( current ) folderChanged( current ); }
QPlatformFileDialogHelper *QQuickPlatformFileDialog::helper() { QQuickItem *parentItem = qobject_cast<QQuickItem *>(parent()); if (parentItem) m_parentWindow = parentItem->window(); if ( !m_dlgHelper && QGuiApplicationPrivate::platformTheme()-> usePlatformNativeDialog(QPlatformTheme::FileDialog) ) { m_dlgHelper = static_cast<QPlatformFileDialogHelper *>(QGuiApplicationPrivate::platformTheme() ->createPlatformDialogHelper(QPlatformTheme::FileDialog)); if (!m_dlgHelper) return m_dlgHelper; m_dlgHelper->setOptions(m_options); connect(m_dlgHelper, SIGNAL(directoryEntered(QUrl)), this, SIGNAL(folderChanged())); connect(m_dlgHelper, SIGNAL(filterSelected(QString)), this, SIGNAL(filterSelected())); connect(m_dlgHelper, SIGNAL(accept()), this, SLOT(accept())); connect(m_dlgHelper, SIGNAL(reject()), this, SLOT(reject())); } return m_dlgHelper; }
void KJotsMain::openFolder(int id) { QPushButton *but; for( but = button_list.first(); but != NULL; but = button_list.next() ) but->setOn(FALSE); but = (QPushButton *) bg_top->find(id); if( but ) but->setOn(TRUE); //QDir dir = QDir::home(); //dir.cd(".kde/share/apps/kjots"); QDir dir = QDir( KApplication::localkdedir().data() ); dir.cd("share/apps/kjots"); QString file_name = dir.absPath(); file_name += '/'; file_name += folder_list.at( folders->indexOf(id) ); if( current_folder_name == file_name ) return; if( folderOpen ) saveFolder(); current_folder_name = file_name; if( readFile(current_folder_name) < 0) { folderOpen = FALSE; debug("Kjots: Unable to open folder"); return; } current = 0; me_text->deselect(); me_text->setText(entrylist.first()->text); emit folderChanged(&entrylist); emit entryMoved(current); le_subject->setText(entrylist.first()->subject); folderOpen = TRUE; l_folder->setText( folder_list.at(folders->indexOf(id)) ); me_text->setEnabled(TRUE); le_subject->setEnabled(TRUE); me_text->setFocus(); s_bar->setRange(0,entrylist.count()-1); s_bar->setValue(0); }
void AccountSettings::slotFolderWizardAccepted() { FolderWizard *folderWizard = qobject_cast<FolderWizard*>(sender()); FolderMan *folderMan = FolderMan::instance(); qDebug() << "* Folder wizard completed"; QString alias = folderWizard->field(QLatin1String("alias")).toString(); QString sourceFolder = folderWizard->field(QLatin1String("sourceFolder")).toString(); QString targetPath = folderWizard->property("targetPath").toString(); if (!FolderMan::ensureJournalGone( sourceFolder )) return; folderMan->addFolderDefinition(alias, sourceFolder, targetPath ); Folder *f = folderMan->setupFolderFromConfigFile( alias ); slotAddFolder( f ); folderMan->setSyncEnabled(true); if( f ) { folderMan->slotScheduleAllFolders(); emit folderChanged(); } }
void AsemanFileSystemModel::setFolder(const QString &url) { if(p->folder == url) { return; } if(!p->folder.isEmpty()) { p->watcher->removePath(p->folder); } p->folder = url; if(!p->folder.isEmpty()) { p->watcher->addPath(p->folder); } emit folderChanged(); refresh(); }
int QDeclarativeFolderListModel::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QAbstractListModel::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: folderChanged(); break; case 1: countChanged(); break; case 2: refresh(); break; case 3: inserted((*reinterpret_cast< const QModelIndex(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3]))); break; case 4: removed((*reinterpret_cast< const QModelIndex(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2])),(*reinterpret_cast< int(*)>(_a[3]))); break; case 5: handleDataChanged((*reinterpret_cast< const QModelIndex(*)>(_a[1])),(*reinterpret_cast< const QModelIndex(*)>(_a[2]))); break; case 6: { bool _r = isFolder((*reinterpret_cast< int(*)>(_a[1]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; default: ; } _id -= 7; } #ifndef QT_NO_PROPERTIES else if (_c == QMetaObject::ReadProperty) { void *_v = _a[0]; switch (_id) { case 0: *reinterpret_cast< QUrl*>(_v) = folder(); break; case 1: *reinterpret_cast< QUrl*>(_v) = parentFolder(); break; case 2: *reinterpret_cast< QStringList*>(_v) = nameFilters(); break; case 3: *reinterpret_cast< SortField*>(_v) = sortField(); break; case 4: *reinterpret_cast< bool*>(_v) = sortReversed(); break; case 5: *reinterpret_cast< bool*>(_v) = showDirs(); break; case 6: *reinterpret_cast< bool*>(_v) = showDotAndDotDot(); break; case 7: *reinterpret_cast< bool*>(_v) = showOnlyReadable(); break; case 8: *reinterpret_cast< int*>(_v) = count(); break; } _id -= 9; } else if (_c == QMetaObject::WriteProperty) { void *_v = _a[0]; switch (_id) { case 0: setFolder(*reinterpret_cast< QUrl*>(_v)); break; case 2: setNameFilters(*reinterpret_cast< QStringList*>(_v)); break; case 3: setSortField(*reinterpret_cast< SortField*>(_v)); break; case 4: setSortReversed(*reinterpret_cast< bool*>(_v)); break; case 5: setShowDirs(*reinterpret_cast< bool*>(_v)); break; case 6: setShowDotAndDotDot(*reinterpret_cast< bool*>(_v)); break; case 7: setShowOnlyReadable(*reinterpret_cast< bool*>(_v)); break; } _id -= 9; } else if (_c == QMetaObject::ResetProperty) { _id -= 9; } else if (_c == QMetaObject::QueryPropertyDesignable) { _id -= 9; } else if (_c == QMetaObject::QueryPropertyScriptable) { _id -= 9; } else if (_c == QMetaObject::QueryPropertyStored) { _id -= 9; } else if (_c == QMetaObject::QueryPropertyEditable) { _id -= 9; } else if (_c == QMetaObject::QueryPropertyUser) { _id -= 9; } #endif // QT_NO_PROPERTIES return _id; }
SettingsDialog::SettingsDialog(ownCloudGui *gui, QWidget *parent) : QDialog(parent), _ui(new Ui::SettingsDialog) { setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); _ui->setupUi(this); setObjectName("Settings"); // required as group for saveGeometry call setWindowTitle(tr("%1").arg(Theme::instance()->appNameGUI())); _accountSettings = new AccountSettings(this); addAccount(tr("Account"), _accountSettings); QIcon protocolIcon(QLatin1String(":/mirall/resources/activity.png")); QListWidgetItem *protocol= new QListWidgetItem(protocolIcon, tr("Activity"), _ui->labelWidget); protocol->setSizeHint(QSize(0, 32)); _ui->labelWidget->addItem(protocol); _protocolWidget = new ProtocolWidget; _protocolIdx = _ui->stack->addWidget(_protocolWidget); QIcon generalIcon(QLatin1String(":/mirall/resources/settings.png")); QListWidgetItem *general = new QListWidgetItem(generalIcon, tr("General"), _ui->labelWidget); general->setSizeHint(QSize(0, 32)); _ui->labelWidget->addItem(general); GeneralSettings *generalSettings = new GeneralSettings; _ui->stack->addWidget(generalSettings); QIcon networkIcon(QLatin1String(":/mirall/resources/network.png")); QListWidgetItem *network = new QListWidgetItem(networkIcon, tr("Network"), _ui->labelWidget); network->setSizeHint(QSize(0, 32)); _ui->labelWidget->addItem(network); NetworkSettings *networkSettings = new NetworkSettings; _ui->stack->addWidget(networkSettings); connect( _accountSettings, SIGNAL(folderChanged()), gui, SLOT(slotFoldersChanged())); connect( _accountSettings, SIGNAL(accountIconChanged(QIcon)), SLOT(slotUpdateAccountIcon(QIcon))); connect( _accountSettings, SIGNAL(openFolderAlias(const QString&)), gui, SLOT(slotFolderOpenAction(QString))); connect( ProgressDispatcher::instance(), SIGNAL(progressInfo(QString, Progress::Info)), _accountSettings, SLOT(slotSetProgress(QString, Progress::Info)) ); _ui->labelWidget->setCurrentRow(_ui->labelWidget->row(_accountItem)); connect(_ui->labelWidget, SIGNAL(currentRowChanged(int)), _ui->stack, SLOT(setCurrentIndex(int))); QPushButton *closeButton = _ui->buttonBox->button(QDialogButtonBox::Close); connect(closeButton, SIGNAL(clicked()), SLOT(accept())); QAction *showLogWindow = new QAction(this); showLogWindow->setShortcut(QKeySequence("F12")); connect(showLogWindow, SIGNAL(triggered()), gui, SLOT(slotToggleLogBrowser())); addAction(showLogWindow); int iconSize = 32; QListWidget *listWidget = _ui->labelWidget; int spacing = 20; // reverse at least ~8 characters int effectiveWidth = fontMetrics().averageCharWidth() * 8 + iconSize + spacing; // less than ~16 characters, elide otherwise int maxWidth = fontMetrics().averageCharWidth() * 16 + iconSize + spacing; for (int i = 0; i < listWidget->count(); i++) { QListWidgetItem *item = listWidget->item(i); QFontMetrics fm(item->font()); int curWidth = fm.width(item->text()) + iconSize + spacing; effectiveWidth = qMax(curWidth, effectiveWidth); if (curWidth > maxWidth) item->setToolTip(item->text()); } effectiveWidth = qMin(effectiveWidth, maxWidth); listWidget->setFixedWidth(effectiveWidth); MirallConfigFile cfg; cfg.restoreGeometry(this); }
void FolderModel::listFolderContents(const File &file) { Error error; File folder = file; // Enumerate folder contents FileEnumerator fileEnumerator = folder.enumerateChildren( "*", File::QueryInfoNorm, error); if (error.hasError()) { qWarning("Couldn't enumerate %s: %s", qPrintable(folder.getUri().toString(QUrl::FullyEncoded)), qPrintable(error.getMessage())); return; } // Save FileInfo objects QList<FileInfo> fileInfoList; for (;;) { FileInfo fileInfo = fileEnumerator.nextFile(error); if (error.hasError()) { qWarning("Couldn't advance enumerator %s: %s", qPrintable(folder.getUri().toString(QUrl::FullyEncoded)), qPrintable(error.getMessage())); return; } if (fileInfo.isNull()) break; fileInfoList.append(fileInfo); } // Close enumerator fileEnumerator.close(error); if (error.hasError()) { qWarning("Couldn't close enumerator on %s: %s", qPrintable(folder.getUri().toString(QUrl::FullyEncoded)), qPrintable(error.getMessage())); return; } // Populate model removeAll(); insertFiles(fileInfoList); #if 0 m_folderMonitor = new FileMonitor(folder.monitorDirectory(folder.MonitorNorm, error, 0)); if (error.hasError()) { qWarning("Failed to monitor %s: %s", qPrintable(folder.getUri().toString(QUrl::FullyEncoded)), qPrintable(error.getMessage())); return; } connect(m_folderMonitor, SIGNAL(changed(FileMonitor *, File, File, FileMonitorEvent)), this, SLOT(changed(FileMonitor *, File, File, FileMonitor::FileMonitorEvent))); #endif // Change URI m_uri = folder.getUri(); emit folderChanged(); }