示例#1
0
	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 ();
	}
示例#2
0
	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 ();
	}