qTox  Version: nightly | Commit: bc751c8e1cac455f9690654fcfe0f560d2d7dfdd
splitterrestorer.cpp
Go to the documentation of this file.
1 /*
2  Copyright © 2017-2019 by The qTox Project Contributors
3 
4  This file is part of qTox, a Qt-based graphical interface for Tox.
5 
6  qTox is libre software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  qTox is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with qTox. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
21 
22 #include <QSplitter>
23 
34 static int defaultWidth = 0;
35 
39 const static int leftWidthPercent = 33;
40 
42  : splitter{splitter}
43 {
44  if (defaultWidth == 0) {
45  defaultWidth = QSplitter().handleWidth();
46  }
47 }
48 
55 void SplitterRestorer::restore(const QByteArray& state, const QSize& windowSize)
56 {
57  bool brokenSplitter = !splitter->restoreState(state) || splitter->orientation() != Qt::Horizontal
58  || splitter->handleWidth() > defaultWidth;
59 
60  if (splitter->count() == 2 && brokenSplitter) {
61  splitter->setOrientation(Qt::Horizontal);
62  splitter->setHandleWidth(defaultWidth);
63  splitter->resize(windowSize);
64  QList<int> sizes = splitter->sizes();
65  sizes[0] = splitter->width() * leftWidthPercent / 100;
66  sizes[1] = splitter->width() - sizes[0];
67  splitter->setSizes(sizes);
68  }
69 }
SplitterRestorer::restore
void restore(const QByteArray &state, const QSize &windowSize)
Restore splitter from state. And reset in case of error. Set the splitter to a reasonnable width by d...
Definition: splitterrestorer.cpp:55
QList
Definition: friendlist.h:25
SplitterRestorer::splitter
QSplitter * splitter
Definition: splitterrestorer.h:33
SplitterRestorer::SplitterRestorer
SplitterRestorer(QSplitter *splitter)
Definition: splitterrestorer.cpp:41
splitterrestorer.h