Exemplo n.º 1
0
	void Plugin::hookTabFinishedMoving (LeechCraft::IHookProxy_ptr, int index, int windowId)
	{
		auto window = Proxy_->GetRootWindowsManager ()->GetMainWindow (windowId);
		if (!window)
			return;
		auto tw = Proxy_->GetRootWindowsManager ()->GetTabWidget (windowId);
		if (!tw)
			return;

		int realIndex = tw->TabData (index).toInt ();
		int realNextIndex = tw->TabData (index + 1).toInt ();
		int realPrevIndex = tw->TabData (index - 1).toInt ();

		if (Window2PinTabsIndex2TabData_.contains (window) &&
				Window2PinTabsIndex2TabData_ [window].contains (realNextIndex) &&
				!Window2PinTabsIndex2TabData_ [window].contains (realIndex))
		{
			pinTab (index);
			tw->MoveTab (Window2PinTabsIndex2TabData_[window].count () - 1, index);
		}
		else if (Window2PinTabsIndex2TabData_ [window].contains (realIndex) &&
				index &&
				!Window2PinTabsIndex2TabData_ [window].contains (realPrevIndex))
		{
			unPinTab (index);
			tw->MoveTab (Window2PinTabsIndex2TabData_ [window].count (), index);
		}
	}
Exemplo n.º 2
0
	void Plugin::unPinTab (int index)
	{
		const int windowId = Proxy_->GetRootWindowsManager ()->GetPreferredWindowIndex ();
		auto window = Proxy_->GetRootWindowsManager ()->GetMainWindow (windowId);
		if (!window)
			return;
		auto tw = Proxy_->GetRootWindowsManager ()->GetTabWidget (windowId);
		if (!tw)
			return;

		if (index == -1)
			index = sender ()->property ("Leechcraft/PinTab/CurrentIndex").toInt ();

		if (index < 0 ||
				index >= tw->WidgetCount ())
		{
			qWarning () << Q_FUNC_INFO
					<< "invalid index "
					<< index;
			return;
		}

		int realIndex = tw->TabData (index).toInt ();
		tw->Widget (index)->
				setProperty ("SessionData/org.LeechCraft.PinTab.PinState", false);
		auto data = Window2PinTabsIndex2TabData_ [window].take (realIndex);

		tw->SetTabText (index, data.first);
		tw->SetTabClosable (index, true, data.second);

		tw->MoveTab (index, Window2PinTabsIndex2TabData_.value (window).count ());
	}
Exemplo n.º 3
0
	void Plugin::pinTab (int index)
	{
		const int windowId = Proxy_->GetRootWindowsManager ()->GetPreferredWindowIndex ();
		auto window = Proxy_->GetRootWindowsManager ()->GetMainWindow (windowId);
		if (!window)
			return;
		auto tw = Proxy_->GetRootWindowsManager ()->GetTabWidget (windowId);
		if (!tw)
			return;

		if (index == -1)
			index = sender ()->property ("Leechcraft/PinTab/CurrentIndex").toInt ();

		if (index < 0 ||
				index >= tw->WidgetCount ())
		{
			qWarning () << Q_FUNC_INFO
					<< "invalid index "
					<< index;
			return;
		}

		tw->Widget (index)->
				setProperty ("SessionData/org.LeechCraft.PinTab.PinState", true);
		++Window2Id_ [window];
		auto pair = qMakePair (tw->TabText (index),
				tw->TabButton (index, CloseSide_));
		tw->SetTabData (index, Window2Id_ [window]);
		tw->SetTabText (index, "");
		tw->SetTabClosable (index, false);
		Window2PinTabsIndex2TabData_ [window] [Window2Id_.value (window, 0)] = pair;

		tw->MoveTab (index, Window2PinTabsIndex2TabData_ [window].count () - 1);
	}
Exemplo n.º 4
0
void HeaderCtrl::LeftUp(Point, dword) {
	if(isdrag) {
		if(li >= 0 && ti >= 0)
			MoveTab(li, ti);
		li = ti = -1;
		Refresh();
	}
	else
	if(pushi >= 0 && push)
		col[pushi].WhenAction();
	push = false;
	ti = li = pushi = -1;
	isdrag = false;
	Refresh();
	if(split >= 0 && !track) {
		Action();
		WhenLayout();
	}
	DoSbTotal();
}