void Aggregator::Release () { SaveColumnWidth (Impl_->Ui_.Feeds_, "feeds"); Impl_->Ui_.ItemsWidget_->SaveUIState (); disconnect (&Core::Instance (), 0, this, 0); if (Core::Instance ().GetChannelsModel ()) disconnect (Core::Instance ().GetChannelsModel (), 0, this, 0); if (Impl_->TagsLineCompleter_.get ()) disconnect (Impl_->TagsLineCompleter_.get (), 0, this, 0); Impl_->TrayIcon_->hide (); delete Impl_; Core::Instance ().Release (); }
AggregatorTab::AggregatorTab (const InitParams& params, QObject *plugin) : TabClass_ { params.TabClass_ } , ParentPlugin_ { plugin } , ChannelActions_ { params.ChannelActions_ } , FlatToFolders_ { std::make_shared<Util::FlatToFoldersProxyModel> (params.TagsManager_) } , ChannelsFilterModel_ { new ChannelsFilterModel { this } } { ChannelsFilterModel_->setSourceModel (params.ChannelsModel_); ChannelsFilterModel_->setFilterKeyColumn (0); Ui_.setupUi (this); auto itemsWidgetDeps = params.ItemsWidgetDeps_; itemsWidgetDeps.ChannelsModel_ = ChannelsFilterModel_; Ui_.ItemsWidget_->InjectDependencies (itemsWidgetDeps); connect (Ui_.ItemsWidget_, &ItemsWidget::movedToChannel, this, &AggregatorTab::handleItemsMovedToChannel); Ui_.MergeItems_->setChecked (XmlSettingsManager::Instance ()->Property ("MergeItems", false).toBool ()); Ui_.Feeds_->addAction (ChannelActions_->ActionMarkChannelAsRead_); Ui_.Feeds_->addAction (ChannelActions_->ActionMarkChannelAsUnread_); Ui_.Feeds_->addAction (Util::CreateSeparator (Ui_.Feeds_)); Ui_.Feeds_->addAction (ChannelActions_->ActionRemoveFeed_); Ui_.Feeds_->addAction (ChannelActions_->ActionUpdateSelectedFeed_); Ui_.Feeds_->addAction (ChannelActions_->ActionRenameFeed_); Ui_.Feeds_->addAction (Util::CreateSeparator (Ui_.Feeds_)); Ui_.Feeds_->addAction (ChannelActions_->ActionRemoveChannel_); Ui_.Feeds_->addAction (Util::CreateSeparator (Ui_.Feeds_)); Ui_.Feeds_->addAction (ChannelActions_->ActionChannelSettings_); Ui_.Feeds_->addAction (Util::CreateSeparator (Ui_.Feeds_)); Ui_.Feeds_->addAction (params.AppWideActions_.ActionAddFeed_); connect (Ui_.Feeds_, &QWidget::customContextMenuRequested, this, &AggregatorTab::handleFeedsContextMenuRequested); const auto fm = fontMetrics (); int dateTimeSize = fm.width (QDateTime::currentDateTime ().toString (Qt::SystemLocaleShortDate) + "__"); const auto channelsHeader = Ui_.Feeds_->header (); channelsHeader->resizeSection (0, fm.width ("Average channel name")); channelsHeader->resizeSection (1, fm.width ("_9999_")); channelsHeader->resizeSection (2, dateTimeSize); connect (Ui_.TagsLine_, &QLineEdit::textChanged, ChannelsFilterModel_, &QSortFilterProxyModel::setFilterFixedString); new Util::TagsCompleter (Ui_.TagsLine_); Ui_.TagsLine_->AddSelector (); Ui_.MainSplitter_->setStretchFactor (0, 5); Ui_.MainSplitter_->setStretchFactor (1, 9); connect (FlatToFolders_.get (), &QAbstractItemModel::rowsInserted, Ui_.Feeds_, &QTreeView::expand); LoadColumnWidth (Ui_.Feeds_, "feeds"); Ui_.ItemsWidget_->ConstructBrowser (); Ui_.ItemsWidget_->LoadUIState (); UiStateGuard_ = Util::MakeScopeGuard ([this] { SaveColumnWidth (Ui_.Feeds_, "feeds"); Ui_.ItemsWidget_->SaveUIState (); }); handleGroupChannels (); XmlSettingsManager::Instance ()->RegisterObject ("GroupChannelsByTags", this, "handleGroupChannels"); currentChannelChanged (); }