photos overview blur, multimonitor photoview fix, os x file dialog default path

This commit is contained in:
John Preston 2014-09-21 20:52:37 -07:00
parent af9117e084
commit 40641133bc
10 changed files with 52 additions and 28 deletions

View File

@ -157,7 +157,9 @@ void DownloadPathBox::onEditPath() {
filedialogInit(); filedialogInit();
QString path, lastPath = cDialogLastPath(); QString path, lastPath = cDialogLastPath();
if (!cDownloadPath().isEmpty()) cSetDialogLastPath(cDownloadPath()); if (!cDownloadPath().isEmpty()) {
cSetDialogLastPath(cDownloadPath());
}
if (filedialogGetDir(path, lang(lng_download_path_choose))) { if (filedialogGetDir(path, lang(lng_download_path_choose))) {
if (!path.isEmpty()) { if (!path.isEmpty()) {
_path = path + '/'; _path = path + '/';

View File

@ -22,8 +22,9 @@ Copyright (c) 2014 John Preston, https://tdesktop.com
#include "application.h" #include "application.h"
void filedialogInit() { void filedialogInit() {
// hack to restore previous dir without hurting performance
if (cDialogLastPath().isEmpty()) { if (cDialogLastPath().isEmpty()) {
#ifdef Q_OS_WIN
// hack to restore previous dir without hurting performance
QSettings settings(QSettings::UserScope, QLatin1String("QtProject")); QSettings settings(QSettings::UserScope, QLatin1String("QtProject"));
settings.beginGroup(QLatin1String("Qt")); settings.beginGroup(QLatin1String("Qt"));
QByteArray sd = settings.value(QLatin1String("filedialog")).toByteArray(); QByteArray sd = settings.value(QLatin1String("filedialog")).toByteArray();
@ -59,16 +60,21 @@ void filedialogInit() {
cSetDialogHelperPath(temppath.absolutePath()); cSetDialogHelperPath(temppath.absolutePath());
} }
} }
#else
cSetDialogLastPath(QStandardPaths::writableLocation(QStandardPaths::DownloadLocation));
#endif
} }
} }
// multipleFiles: 1 - multi open, 0 - single open, -1 - single save, -2 - select dir // multipleFiles: 1 - multi open, 0 - single open, -1 - single save, -2 - select dir
bool _filedialogGetFiles(QStringList &files, QByteArray &remoteContent, const QString &caption, const QString &filter, int multipleFiles, const QString &startFile = QString()) { bool _filedialogGetFiles(QStringList &files, QByteArray &remoteContent, const QString &caption, const QString &filter, int multipleFiles, QString startFile = QString()) {
#if defined Q_OS_LINUX || defined Q_OS_MAC // use native #if defined Q_OS_LINUX || defined Q_OS_MAC // use native
remoteContent = QByteArray(); remoteContent = QByteArray();
QString file; QString file;
if (multipleFiles >= 0) { if (multipleFiles >= 0) {
files = QFileDialog::getOpenFileNames(App::wnd() ? App::wnd()->filedialogParent() : 0, caption, startFile, filter); files = QFileDialog::getOpenFileNames(App::wnd() ? App::wnd()->filedialogParent() : 0, caption, startFile, filter);
QString path = files.isEmpty() ? QString() : QFileInfo(files.back()).absoluteDir().absolutePath();
if (!path.isEmpty()) cSetDialogLastPath(path);
return !files.isEmpty(); return !files.isEmpty();
} else if (multipleFiles < -1) { } else if (multipleFiles < -1) {
file = QFileDialog::getExistingDirectory(App::wnd() ? App::wnd()->filedialogParent() : 0, caption); file = QFileDialog::getExistingDirectory(App::wnd() ? App::wnd()->filedialogParent() : 0, caption);
@ -81,6 +87,8 @@ bool _filedialogGetFiles(QStringList &files, QByteArray &remoteContent, const QS
files = QStringList(); files = QStringList();
return false; return false;
} else { } else {
QString path = QFileInfo(file).absoluteDir().absolutePath();
if (!path.isEmpty()) cSetDialogLastPath(path);
files = QStringList(file); files = QStringList(file);
return true; return true;
} }

View File

@ -107,14 +107,7 @@ namespace {
} }
} }
QPixmap Image::pixBlurredNoCache(int32 w, int32 h) const { QImage imageBlur(QImage img) {
restore();
loaded();
const QPixmap &p(pixData());
if (p.isNull()) return blank()->pix();
QImage img = p.toImage();
QImage::Format fmt = img.format(); QImage::Format fmt = img.format();
if (fmt != QImage::Format_RGB32 && fmt != QImage::Format_ARGB32 && fmt != QImage::Format_ARGB32_Premultiplied) { if (fmt != QImage::Format_RGB32 && fmt != QImage::Format_ARGB32 && fmt != QImage::Format_ARGB32_Premultiplied) {
QImage tmp(img.width(), img.height(), QImage::Format_ARGB32); QImage tmp(img.width(), img.height(), QImage::Format_ARGB32);
@ -211,7 +204,17 @@ QPixmap Image::pixBlurredNoCache(int32 w, int32 h) const {
delete[] rgb; delete[] rgb;
} }
} }
return img;
}
QPixmap Image::pixBlurredNoCache(int32 w, int32 h) const {
restore();
loaded();
const QPixmap &p(pixData());
if (p.isNull()) return blank()->pix();
QImage img = imageBlur(p.toImage());
if (h <= 0) { if (h <= 0) {
img = img.scaledToWidth(w, Qt::SmoothTransformation); img = img.scaledToWidth(w, Qt::SmoothTransformation);
} else { } else {

View File

@ -19,6 +19,8 @@ Copyright (c) 2014 John Preston, https://tdesktop.com
#include <QtGui/QPixmap> #include <QtGui/QPixmap>
QImage imageBlur(QImage img);
class Image { class Image {
public: public:

View File

@ -2287,7 +2287,7 @@ void HistoryAudio::draw(QPainter &p, const HistoryItem *parent, bool selected, i
p.setPen(status->p); p.setPen(status->p);
if (already || hasdata) { if (already || hasdata) {
if (playing == data && playingState != VoiceMessageStopped) { if (playing == data && playingState != VoiceMessageStopped) {
statusText = formatDurationText(playingPosition / AudioVoiceMsgFrequency); statusText = formatDurationText(playingPosition / AudioVoiceMsgFrequency) + qsl(" / ") + formatDurationText(playingDuration / AudioVoiceMsgFrequency);
} else { } else {
statusText = formatDurationText(data->duration); statusText = formatDurationText(data->duration);
} }

View File

@ -870,7 +870,7 @@ QString HistoryList::getSelectedText() const {
void HistoryList::keyPressEvent(QKeyEvent *e) { void HistoryList::keyPressEvent(QKeyEvent *e) {
if (e->key() == Qt::Key_Escape) { if (e->key() == Qt::Key_Escape) {
historyWidget->onClearSelected(); historyWidget->onClearSelected();
} else if (e == QKeySequence::Copy && !_selected.isEmpty() && _selected.cbegin().value() != FullItemSel) { } else if (e == QKeySequence::Copy && !_selected.isEmpty()) {
copySelectedText(); copySelectedText();
} else if (e == QKeySequence::Delete) { } else if (e == QKeySequence::Delete) {
historyWidget->onDeleteSelected(); historyWidget->onDeleteSelected();

View File

@ -970,9 +970,15 @@ void MainWidget::setInnerFocus() {
if (hider || !history.peer()) { if (hider || !history.peer()) {
if (hider && hider->wasOffered()) { if (hider && hider->wasOffered()) {
hider->setFocus(); hider->setFocus();
} else if (overview) {
overview->activate();
} else if (profile) {
profile->activate();
} else { } else {
dialogs.setInnerFocus(); dialogs.setInnerFocus();
} }
} else if (profile) {
profile->setFocus();
} else { } else {
history.activate(); history.activate();
} }

View File

@ -60,8 +60,8 @@ void MediaView::moveToScreen() {
} }
if (!geom.contains(_avail)) { if (!geom.contains(_avail)) {
_avail = geom; _avail = geom;
_avail.moveTo(0, 0);
} }
_avail.moveTo(_avail.x() - geom.x(), _avail.y() - geom.y());
_maxWidth = _avail.width() - 2 * st::medviewNavBarWidth; _maxWidth = _avail.width() - 2 * st::medviewNavBarWidth;
_maxHeight = _avail.height() - st::medviewTopSkip - st::medviewBottomSkip; _maxHeight = _avail.height() - st::medviewTopSkip - st::medviewBottomSkip;
_leftNav = QRect(0, 0, st::medviewNavBarWidth, height()); _leftNav = QRect(0, 0, st::medviewNavBarWidth, height());

View File

@ -547,6 +547,9 @@ void OverviewInner::clear() {
QPixmap OverviewInner::genPix(PhotoData *photo, int32 size) { QPixmap OverviewInner::genPix(PhotoData *photo, int32 size) {
size *= cIntRetinaFactor(); size *= cIntRetinaFactor();
QImage img = (photo->full->loaded() ? photo->full : (photo->medium->loaded() ? photo->medium : photo->thumb))->pix().toImage(); QImage img = (photo->full->loaded() ? photo->full : (photo->medium->loaded() ? photo->medium : photo->thumb))->pix().toImage();
if (!photo->full->loaded() && !photo->medium->loaded()) {
img = imageBlur(img);
}
if (img.width() > img.height()) { if (img.width() > img.height()) {
img = img.scaled(img.width() * size / img.height(), size, Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation); img = img.scaled(img.width() * size / img.height(), size, Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation);
} else { } else {

View File

@ -19,7 +19,7 @@ Copyright (c) 2014 John Preston, https://tdesktop.com
extern bool gDebug; extern bool gDebug;
inline bool cDebug() { inline bool cDebug() {
#ifdef _DEBUG #if defined _DEBUG && !defined Q_OS_MAC
return true; return true;
#elif defined _WITH_DEBUG #elif defined _WITH_DEBUG
return gDebug; return gDebug;