void Container::statusChanged(int width) { if (m_tabBar->isVisible() && !m_bStatusSize){ setStatusSize(width); CorePlugin::m_plugin->setContainerStatusSize(width); } }
Container::Container(unsigned id, const char *cfg) { m_bInit = false; m_bInSize = false; m_bStatusSize = false; m_bBarChanged = false; m_bReceived = false; m_bNoSwitch = false; SET_WNDPROC("container") setWFlags(WDestructiveClose); QFrame *frm = new QFrame(this); setCentralWidget(frm); connect(CorePlugin::m_plugin, SIGNAL(modeChanged()), this, SLOT(modeChanged())); QVBoxLayout *lay = new QVBoxLayout(frm); m_wnds = new QWidgetStack(frm); m_wnds->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); lay->addWidget(m_wnds); m_tabSplitter = new Splitter(frm); m_tabSplitter->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum)); m_tabBar = new UserTabBar(m_tabSplitter); m_tabBar->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding)); m_tabBar->hide(); m_status = new ContainerStatus(m_tabSplitter); lay->addWidget(m_tabSplitter); load_data(containerData, &data, cfg); if (cfg == NULL){ setId(id); memcpy(data.barState, CorePlugin::m_plugin->data.containerBar, sizeof(data.barState)); data.geometry[2] = CorePlugin::m_plugin->data.containerSize[0]; data.geometry[3] = CorePlugin::m_plugin->data.containerSize[1]; setStatusSize(CorePlugin::m_plugin->getContainerStatusSize()); showBar(); m_bInit = true; } m_bInSize = true; restoreGeometry(this, data.geometry, cfg != NULL, (cfg != NULL) || m_bInit); m_bInSize = false; connect(m_tabBar, SIGNAL(selected(int)), this, SLOT(contactSelected(int))); connect(this, SIGNAL(toolBarPositionChanged(QToolBar*)), this, SLOT(toolbarChanged(QToolBar*))); connect(m_status, SIGNAL(sizeChanged(int)), this, SLOT(statusChanged(int))); m_accel = new QAccel(this); connect(m_accel, SIGNAL(activated(int)), this, SLOT(accelActivated(int))); setupAccel(); }
HistoryVideo::HistoryVideo( not_null<Element*> parent, not_null<HistoryItem*> realParent, not_null<DocumentData*> document) : HistoryFileMedia(parent, realParent) , _data(document) , _thumbw(1) , _caption(st::minPhotoSize - st::msgPadding.left() - st::msgPadding.right()) { _caption = createCaption(realParent); setDocumentLinks(_data, realParent); setStatusSize(FileStatusSizeReady); _data->thumb->load(realParent->fullId()); }
void HistoryVideo::updateStatusText() const { auto showPause = false; auto statusSize = 0; auto realDuration = 0; if (_data->status == FileDownloadFailed || _data->status == FileUploadFailed) { statusSize = FileStatusSizeFailed; } else if (_data->uploading()) { statusSize = _data->uploadingData->offset; } else if (_data->loading()) { statusSize = _data->loadOffset(); } else if (_data->loaded()) { statusSize = FileStatusSizeLoaded; } else { statusSize = FileStatusSizeReady; } if (statusSize != _statusSize) { setStatusSize(statusSize); } }
string Container::getState() { clearWndConfig(); string windows; list<UserWnd*> userWnds = m_tabBar->windows(); for (list<UserWnd*>::iterator it = userWnds.begin(); it != userWnds.end(); ++it){ if (!windows.empty()) windows += ','; windows += number((*it)->id()); setWndConfig((*it)->id(), (*it)->getConfig().c_str()); } setWindows(windows.c_str()); UserWnd *userWnd = m_tabBar->currentWnd(); if (userWnd) setActiveWindow(userWnd->id()); saveGeometry(this, data.geometry); saveToolbar(m_bar, data.barState); if (m_tabBar->isVisible()) setStatusSize(m_status->width()); return save_data(containerData, &data); }
Container::Container(unsigned id, const char *cfg) { m_bInit = false; m_bInSize = false; m_bStatusSize = false; m_bBarChanged = false; m_bReceived = false; m_bNoSwitch = false; SET_WNDPROC("container") setWFlags(WDestructiveClose); QFrame *frm = new QFrame(this); setCentralWidget(frm); connect(CorePlugin::m_plugin, SIGNAL(modeChanged()), this, SLOT(modeChanged())); QVBoxLayout *lay = new QVBoxLayout(frm); m_wnds = new QWidgetStack(frm); m_wnds->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); lay->addWidget(m_wnds); m_tabSplitter = new Splitter(frm); m_tabSplitter->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum)); m_tabBar = new UserTabBar(m_tabSplitter); m_tabBar->setSizePolicy(QSizePolicy(QSizePolicy::Minimum, QSizePolicy::Expanding)); m_tabBar->hide(); m_status = new ContainerStatus(m_tabSplitter); lay->addWidget(m_tabSplitter); load_data(containerData, &data, cfg); bool bPos = true; if (cfg == NULL){ setId(id); memcpy(data.barState, CorePlugin::m_plugin->data.containerBar, sizeof(data.barState)); memcpy(data.geometry, CorePlugin::m_plugin->data.containerGeo, sizeof(data.geometry)); if ((data.geometry[WIDTH] == -1) || (data.geometry[HEIGHT] == -1)){ QWidget *desktop = QApplication::desktop(); data.geometry[WIDTH] = desktop->width() / 3; data.geometry[HEIGHT] = desktop->height() / 3; } bPos = false; if ((data.geometry[TOP] != -1) || (data.geometry[LEFT] != -1)){ bPos = true; QWidgetList *list = QApplication::topLevelWidgets(); for (;;) { bool bOK = true; QWidgetListIt it(*list); QWidget * w; while ((w = it.current()) != NULL){ if (w->inherits("Container")){ int dw = w->width() - data.geometry[WIDTH]; int dh = w->height() - data.geometry[HEIGHT]; if (dw < 0) dw = -dw; if (dh < 0) dh = -dh; if ((dw < 3) && (dh < 3)){ int nl = data.geometry[LEFT]; int nt = data.geometry[TOP]; nl += 11; nt += 10; QWidget *desktop = QApplication::desktop(); if (nl + data.geometry[WIDTH] > desktop->width()) nl = 0; if (nt + data.geometry[WIDTH] > desktop->width()) nt = 0; if ((nl != data.geometry[LEFT]) && (nt != data.geometry[TOP])){ data.geometry[LEFT] = nl; data.geometry[TOP] = nt; bOK = false; break; } } } ++it; } if (bOK) break; } delete list; } setStatusSize(CorePlugin::m_plugin->getContainerStatusSize()); showBar(); m_bInit = true; } m_bInSize = true; restoreGeometry(this, data.geometry, bPos, true); m_bInSize = false; connect(m_tabBar, SIGNAL(selected(int)), this, SLOT(contactSelected(int))); connect(this, SIGNAL(toolBarPositionChanged(QToolBar*)), this, SLOT(toolbarChanged(QToolBar*))); connect(m_status, SIGNAL(sizeChanged(int)), this, SLOT(statusChanged(int))); m_accel = new QAccel(this); connect(m_accel, SIGNAL(activated(int)), this, SLOT(accelActivated(int))); setupAccel(); }
Container::Container(unsigned id, const char *cfg) { m_bInit = false; m_bInSize = false; m_bStatusSize = false; m_bBarChanged = false; m_bReceived = false; m_bNoSwitch = false; m_bNoRead = false; m_wnds = NULL; m_tabBar = NULL; SET_WNDPROC("container") setWFlags(WDestructiveClose); if (cfg && *cfg){ Buffer config; config << "[Title]\n" << cfg; config.setWritePos(0); config.getSection(); load_data(containerData, &data, &config); }else{ load_data(containerData, &data, NULL); } bool bPos = true; if (cfg == NULL){ setId(id); memcpy(data.barState, CorePlugin::m_plugin->data.containerBar, sizeof(data.barState)); memcpy(data.geometry, CorePlugin::m_plugin->data.containerGeo, sizeof(data.geometry)); if ((data.geometry[WIDTH].value == (unsigned long)-1) || (data.geometry[HEIGHT].value == (unsigned long)-1)){ QWidget *desktop = QApplication::desktop(); data.geometry[WIDTH].value = desktop->width() / 3; data.geometry[HEIGHT].value = desktop->height() / 3; } bPos = false; if ((data.geometry[TOP].value != (unsigned long)-1) || (data.geometry[LEFT].value != (unsigned long)-1)){ bPos = true; QWidgetList *list = QApplication::topLevelWidgets(); for (int i = 0; i < 2; i++){ bool bOK = true; QWidgetListIt it(*list); QWidget * w; while ((w = it.current()) != NULL){ if (w == this){ ++it; continue; } if (w->inherits("Container")){ int dw = w->pos().x() - data.geometry[LEFT].value; int dh = w->pos().y() - data.geometry[TOP].value; if (dw < 0) dw = -dw; if (dh < 0) dh = -dh; if ((dw < 3) && (dh < 3)){ int nl = data.geometry[LEFT].value; int nt = data.geometry[TOP].value; nl += 21; nt += 20; QWidget *desktop = QApplication::desktop(); if (nl + (int)data.geometry[WIDTH].value > desktop->width()) nl = 0; if (nt + (int)data.geometry[WIDTH].value > desktop->width()) nt = 0; if ((nl != (int)data.geometry[LEFT].value) && (nt != (int)data.geometry[TOP].value)){ data.geometry[LEFT].value = nl; data.geometry[TOP].value = nt; bOK = false; } } } ++it; } if (bOK) break; } delete list; } setStatusSize(CorePlugin::m_plugin->getContainerStatusSize()); } m_bInSize = true; restoreGeometry(this, data.geometry, bPos, true); m_bInSize = false; }