bool DownloadRepoDialog::validateInputsManualMergeMode() { setDirectoryText(mDirectory->text().trimmed()); if (mDirectory->text().isEmpty()) { QMessageBox::warning(this, getBrand(), tr("Please choose the folder to sync"), QMessageBox::Ok); return false; } QDir dir(mDirectory->text()); if (!dir.exists()) { QMessageBox::warning(this, getBrand(), tr("The folder does not exist"), QMessageBox::Ok); return false; } if (repo_.encrypted) { mPassword->setText(mPassword->text().trimmed()); if (mPassword->text().isEmpty()) { QMessageBox::warning(this, getBrand(), tr("Please enter the password"), QMessageBox::Ok); return false; } } return true; }
void InitSeafileDialog::onOkClicked() { QString path = mDirectory->text(); if (path.isEmpty()) { QMessageBox::warning(this, getBrand(), tr("Please choose a directory"), QMessageBox::Ok); return; } QDir dir(path); if (!dir.exists()) { QMessageBox::warning(this, getBrand(), tr("The folder %1 does not exist").arg(path), QMessageBox::Ok); return; } #if defined(Q_WS_WIN) dir.mkpath("disk42/seafile-data"); //disk42 QString seafile_dir = dir.filePath("disk42/seafile-data");//disk42 #else dir.mkpath("disk42/.seafile-data");//disk42 QString seafile_dir = dir.filePath("disk42/.seafile-data");//disk42 #endif emit seafileDirSet(seafile_dir); accept(); }
UninstallHelperDialog::UninstallHelperDialog(QWidget *parent) : QDialog(parent) { setupUi(this); setWindowIcon(QIcon(":/images/seafile.png")); setWindowTitle(tr("Uninstall %1").arg(getBrand())); mText->setText(tr("Do you want to remove the %1 account information?").arg(getBrand())); loadQss("qt.css") || loadQss(":/qt.css"); #if defined(Q_WS_WIN) loadQss("qt-win.css") || loadQss(":/qt-win.css"); #elif defined(Q_WS_X11) loadQss("qt-linux.css") || loadQss(":/qt-linux.css"); #else loadQss("qt-mac.css") || loadQss(":/qt-mac.css"); #endif const QRect screen = QApplication::desktop()->screenGeometry(); move(screen.center() - this->rect().center()); connect(mYesBtn, SIGNAL(clicked()), this, SLOT(onYesClicked())); connect(mNoBtn, SIGNAL(clicked()), this, SLOT(doExit())); }
void SeafileTrayIcon::about() { QMessageBox::about(seafApplet->mainWindow(), tr("About %1").arg(getBrand()), tr("<h2>%1 Client %2</h2>").arg(getBrand()).arg( STRINGIZE(SEAFILE_CLIENT_VERSION)) #if defined(SEAFILE_CLIENT_REVISION) .append("<h4> REV %1 </h4>") .arg(STRINGIZE(SEAFILE_CLIENT_REVISION)) #endif ); }
void CloudView::setupLogoAndBrand() { mLogo->setText(""); mLogo->setToolTip(getBrand()); QPixmap logo; // We must get the pixmap from a QImage, otherwise the logo won't be // updated when we switch between two accounts, one of which has custom // logo and the other doesn't. logo.convertFromImage(QImage(":/images/seafile-24.png")); mLogo->setPixmap(logo); mBrand->setText(getBrand()); mBrand->setToolTip(getBrand()); }
void RepoTreeView::cancelDownload() { ServerRepo repo = qvariant_cast<ServerRepo>(cancel_download_action_->data()); QString error; if (seafApplet->rpcClient()->cancelCloneTask(repo.id, &error) < 0) { QMessageBox::warning(this, getBrand(), tr("Failed to cancel this task:\n\n %1").arg(error), QMessageBox::Ok); } else { QMessageBox::information(this, getBrand(), tr("The download has been canceled"), QMessageBox::Ok); } }
void CreateRepoDialog::createSuccess(const RepoDownloadInfo& info) { QString error; int ret = seafApplet->rpcClient()->cloneRepo( info.repo_id, info.repo_version, info.relay_id, info.repo_name, path_, info.token, passwd_, info.magic, info.relay_addr, info.relay_port, info.email, info.random_key, info.enc_version, info.more_info, &error); if (ret < 0) { QMessageBox::warning(this, getBrand(), tr("Failed to add download task:\n %1").arg(error), QMessageBox::Ok); setAllInputsEnabled(true); } else { repos_tab_->refresh(); done(QDialog::Accepted); } }
MainWindow::MainWindow() { setWindowIcon(QIcon(":/images/seafile.png")); setWindowTitle(getBrand()); // Qt::Tool hides the taskbar entry on windows // setWindowFlags(Qt::FramelessWindowHint | Qt::Tool | Qt::WindowStaysOnTopHint); setWindowFlags(Qt::Window #ifndef Q_WS_MAC | Qt::FramelessWindowHint #endif | Qt::WindowSystemMenuHint | Qt::WindowMinimizeButtonHint); cloud_view_ = new CloudView; QVBoxLayout *layout = new QVBoxLayout; layout->setContentsMargins(0, 0, 0, 0); layout->addWidget(cloud_view_); QWidget *wrapper = new QWidget; wrapper->setObjectName("mainWrapper"); wrapper->setLayout(layout); wrapper->setMaximumWidth(600); setCentralWidget(wrapper); createActions(); setAttribute(Qt::WA_TranslucentBackground, true); }
InitVirtualDriveDialog::InitVirtualDriveDialog(const Account& account, QWidget *parent) : QDialog(parent), account_(account) { setupUi(this); mLogo->setPixmap(QPixmap(":/images/seafile-32.png")); setWindowTitle(tr("Download Default Library")); setWindowIcon(QIcon(":/images/seafile.png")); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); mStatusText->setText( tr("%1 organizes files by libraries.\nDo you like to download your " "default library?").arg(getBrand())); setStatusIcon(":/images/download-48.png"); create_default_repo_req_ = NULL; download_default_repo_req_ = NULL; check_download_timer_ = NULL; connect(mYesBtn, SIGNAL(clicked()), this, SLOT(start())); connect(mNoBtn, SIGNAL(clicked()), this, SLOT(onCancel())); mRunInBackgroundBtn->setVisible(false); mFinishBtn->setVisible(false); mOpenBtn->setVisible(false); }
int get_seafile_auto_start() { HKEY hKey; LONG result = get_win_run_key(&hKey); if (result != ERROR_SUCCESS) { return -1; } char buf[MAX_PATH] = {0}; DWORD len = sizeof(buf); result = RegQueryValueExW (hKey, /* Key */ getBrand().toStdWString().c_str(), /* value */ NULL, /* reserved */ NULL, /* output type */ (LPBYTE)buf, /* output data */ &len); /* output length */ RegCloseKey(hKey); if (result != ERROR_SUCCESS) { /* seafile applet auto start no set */ return 0; } return 1; }
void SeafileTrayIcon::showMessage(const QString & title, const QString & message, MessageIcon icon, int millisecondsTimeoutHint, bool is_repo_message) { if (!is_repo_message) repo_id_ = QString(); #ifdef Q_OS_MAC if (!utils::mac::isOSXMountainLionOrGreater()) { QIcon info_icon(":/images/info.png"); TrayNotificationWidget* trayNotification = new TrayNotificationWidget(info_icon.pixmap(32, 32), title, message); tnm->append(trayNotification); return; } QSystemTrayIcon::showMessage(title, message, icon, millisecondsTimeoutHint); #elif defined(Q_OS_LINUX) Q_UNUSED(icon); QVariantMap hints; QString brand = getBrand(); hints["resident"] = QVariant(true); hints["desktop-entry"] = QVariant(brand); QList<QVariant> args = QList<QVariant>() << brand << quint32(0) << brand << title << message << QStringList () << hints << qint32(-1); QDBusMessage method = QDBusMessage::createMethodCall("org.freedesktop.Notifications","/org/freedesktop/Notifications", "org.freedesktop.Notifications", "Notify"); method.setArguments(args); QDBusConnection::sessionBus().asyncCall(method); #else QSystemTrayIcon::showMessage(title, message, icon, millisecondsTimeoutHint); #endif }
void SeafileApplet::onGetLatestVersionInfoSuccess(const QString& latest_version) { QString current_version = STRINGIZE(SEAFILE_CLIENT_VERSION); int ret; if (compareVersions(current_version, latest_version, &ret) < 0) { return; } if (ret >= 0) { return; } QString msg = tr("A new version of %1 client (%2) is available.\n" "Do you want to visit the download page?").arg(getBrand()).arg(latest_version); if (!yesOrNoBox(msg, NULL, true)) { return; } QString url; if (QLocale::system().name() == "zh_CN") { url = kSeafileClientDownloadUrlChinese; } else { url = kSeafileClientDownloadUrl; } QDesktopServices::openUrl(url); }
void SeafileTrayIcon::createActions() { disable_auto_sync_action_ = new QAction(tr("Disable auto sync"), this); connect(disable_auto_sync_action_, SIGNAL(triggered()), this, SLOT(disableAutoSync())); enable_auto_sync_action_ = new QAction(tr("Enable auto sync"), this); connect(enable_auto_sync_action_, SIGNAL(triggered()), this, SLOT(enableAutoSync())); quit_action_ = new QAction(tr("&Quit"), this); connect(quit_action_, SIGNAL(triggered()), this, SLOT(quitSeafile())); show_main_window_action_ = new QAction(tr("Show main window"), this); connect(show_main_window_action_, SIGNAL(triggered()), this, SLOT(showMainWindow())); settings_action_ = new QAction(tr("Settings"), this); connect(settings_action_, SIGNAL(triggered()), this, SLOT(showSettingsWindow())); open_seafile_folder_action_ = new QAction(tr("Open %1 &folder").arg(getBrand()), this); open_seafile_folder_action_->setStatusTip(tr("open %1 folder").arg(getBrand())); connect(open_seafile_folder_action_, SIGNAL(triggered()), this, SLOT(openSeafileFolder())); #if defined(Q_OS_WIN32) shellext_fix_action_ = new QAction(tr("Repair explorer extension"), this); connect(shellext_fix_action_, SIGNAL(triggered()), this, SLOT(shellExtFix())); #endif open_log_directory_action_ = new QAction(tr("Open &logs folder"), this); open_log_directory_action_->setStatusTip(tr("open %1 log folder").arg(getBrand())); connect(open_log_directory_action_, SIGNAL(triggered()), this, SLOT(openLogDirectory())); upload_log_directory_action_ = new QAction(tr("Upload log files"), this); upload_log_directory_action_->setStatusTip(tr("upload %1 log files").arg(getBrand())); connect(upload_log_directory_action_, SIGNAL(triggered()), this, SLOT(uploadLogDirectory())); show_sync_errors_action_ = new QAction(tr("Show file sync errors"), this); show_sync_errors_action_->setStatusTip(tr("Show file sync errors")); connect(show_sync_errors_action_, SIGNAL(triggered()), this, SLOT(showSyncErrorsDialog())); about_action_ = new QAction(tr("&About"), this); about_action_->setStatusTip(tr("Show the application's About box")); connect(about_action_, SIGNAL(triggered()), this, SLOT(about())); open_help_action_ = new QAction(tr("&Online help"), this); open_help_action_->setStatusTip(tr("open %1 online help").arg(getBrand())); connect(open_help_action_, SIGNAL(triggered()), this, SLOT(openHelp())); }
void AppMessageBox::messageBox(const QString msg) { QMessageBox *msgbox = new QMessageBox( QMessageBox::Information, getBrand(), msg, QMessageBox::Ok, _parent); // msgbox->setAttribute( Qt::WA_DeleteOnClose ); //makes sure the msgbox is deleted automatically when closed msgbox->setModal( true ); ManageWindow::moveToCenter(msgbox); ManageWindow::bringToFocus(msgbox); msgbox->exec(); }
void SettingsManager::removeAllSettings() { QSettings settings; settings.clear(); #if defined(Q_WS_WIN) RegElement::removeRegKey(HKEY_CURRENT_USER, "SOFTWARE", getBrand()); #endif }
int set_seafile_auto_start(bool on) { int result = 0; if (on) { /* turn on auto start */ wchar_t applet_path[MAX_PATH]; if (GetModuleFileNameW (NULL, applet_path, MAX_PATH) == 0) { return -1; } result = add_to_auto_start (getBrand().toStdWString().c_str(), applet_path); } else { /* turn off auto start */ result = delete_from_auto_start(getBrand().toStdWString().c_str()); } return result; }
bool AppMessageBox::yesOrNoBox(const QString msg, bool default_val) { QMessageBox::StandardButton default_btn = default_val ? QMessageBox::Yes : QMessageBox::No; auto buttons = QMessageBox::Yes | QMessageBox::No; bool b = QMessageBox::question(_parent, getBrand(), msg, buttons, default_btn) == QMessageBox::Yes; //TODO make on heap return b; }
bool SeafileApplet::yesOrNoBox(const QString& msg, QWidget *parent, bool default_val) { QMessageBox::StandardButton default_btn = default_val ? QMessageBox::Yes : QMessageBox::No; return QMessageBox::question(parent != 0 ? parent : main_win_, getBrand(), msg, QMessageBox::Yes | QMessageBox::No, default_btn) == QMessageBox::Yes; }
void InitSeafileDialog::onCancelClicked() { QString question = tr("Initialization is not finished. Really quit?"); if (QMessageBox::question(this, getBrand(), question, QMessageBox::Yes | QMessageBox::No, QMessageBox::No) == QMessageBox::Yes) { reject(); } }
void SeafileApplet::messageBox(const QString& msg, QWidget *parent) { QMessageBox box(parent ? parent : main_win_); box.setText(msg); box.setWindowTitle(getBrand()); box.setIcon(QMessageBox::Information); box.addButton(tr("OK"), QMessageBox::YesRole); box.exec(); qDebug("%s", msg.toUtf8().data()); }
void CloneTasksTableView::removeTask() { QString repo_id = remove_task_action_->data().toString(); QString error; if (seafApplet->rpcClient()->removeCloneTask(repo_id, &error) < 0) { QMessageBox::warning(this, getBrand(), tr("Failed to remove this task:\n\n %1").arg(error), QMessageBox::Ok); } }
void SeafileTrayIcon::setState(TrayState state, const QString& tip) { if (state_ == state) { return; } QString tool_tip = tip.isEmpty() ? getBrand() : tip; setIcon(stateToIcon(state)); setToolTip(tool_tip); }
SettingsDialog::SettingsDialog(QWidget *parent) : QDialog(parent) { setupUi(this); setWindowTitle(tr("Settings")); setWindowIcon(QIcon(":/images/seafile.png")); setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); mAutoStartCheckBox->setText( tr("Auto start %1 after login").arg(getBrand())); mHideDockIconCheckBox->setText( tr("Hide %1 Icon from the dock").arg(getBrand())); mTabWidget->setCurrentIndex(0); if (!isCheckLatestVersionEnabled()) { mCheckLatestVersionBox->setVisible(false); } mLanguageComboBox->addItems(I18NHelper::getInstance()->getLanguages()); // The range of mProxyPort is set to (0, 65535) in the ui file, so we // don't bother with that here. mProxyMethodComboBox->insertItem(SettingsManager::NoProxy, tr("None")); mProxyMethodComboBox->insertItem(SettingsManager::HttpProxy, tr("HTTP Proxy")); mProxyMethodComboBox->insertItem(SettingsManager::SocksProxy, tr("Socks5 Proxy")); mProxyMethodComboBox->insertItem(SettingsManager::SystemProxy, tr("System Proxy")); connect(mProxyMethodComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(showHideControlsBasedOnCurrentProxyType(int))); connect(mProxyRequirePassword, SIGNAL(stateChanged(int)), this, SLOT(proxyRequirePasswordChanged(int))); #if defined(Q_OS_MAC) layout()->setContentsMargins(8, 9, 9, 4); layout()->setSpacing(5); mDownloadSpinBox->setAttribute(Qt::WA_MacShowFocusRect, 0); mUploadSpinBox->setAttribute(Qt::WA_MacShowFocusRect, 0); #endif connect(mOkBtn, SIGNAL(clicked()), this, SLOT(onOkBtnClicked())); }
void InitSeafileDialog::closeEvent(QCloseEvent *event) { QString question = tr("Initialization is not finished. Really quit?"); if (QMessageBox::question(this, getBrand(), question, QMessageBox::Yes | QMessageBox::No, QMessageBox::No) == QMessageBox::Yes) { QDialog::closeEvent(event); return; } event->ignore(); }
void SeafileApplet::warningBox(const QString& msg, QWidget *parent) { QMessageBox box(parent ? parent : main_win_); box.setText(msg); box.setWindowTitle(getBrand()); box.setIcon(QMessageBox::Warning); box.addButton(tr("OK"), QMessageBox::YesRole); box.exec(); main_win_->showWindow(); qWarning("%s", msg.toUtf8().data()); }
void RepoTreeView::unsyncRepo() { LocalRepo repo = qvariant_cast<LocalRepo>(toggle_auto_sync_action_->data()); QString question = tr("Are you sure to unsync library \"%1\"?").arg(repo.name); if (QMessageBox::question(this, getBrand(), question, QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Cancel) != QMessageBox::Ok) { return; } if (seafApplet->rpcClient()->unsync(repo.id) < 0) { QMessageBox::warning(this, getBrand(), tr("Failed to unsync library \"%1\"").arg(repo.name), QMessageBox::Ok); } updateRepoActions(); }
bool SeafileApplet::yesOrCancelBox(const QString& msg, QWidget *parent, bool default_yes) { QMessageBox box(parent ? parent : main_win_); box.setText(msg); box.setWindowTitle(getBrand()); box.setIcon(QMessageBox::Question); QPushButton *yes_btn = box.addButton(tr("Yes"), QMessageBox::YesRole); QPushButton *cancel_btn = box.addButton(tr("Cancel"), QMessageBox::RejectRole); box.setDefaultButton(default_yes ? yes_btn: cancel_btn); box.exec(); return box.clickedButton() == yes_btn; }
void CloudView::setupHeader() { mLogo->setText(""); mLogo->setToolTip(getBrand()); mLogo->setPixmap(QPixmap(":/images/seafile-24.png")); mBrand->setText(getBrand()); mBrand->setToolTip(getBrand()); mMinimizeBtn->setText(""); mMinimizeBtn->setToolTip(tr("Minimize")); mMinimizeBtn->setIcon(awesome->icon(icon_minus, QColor("#808081"))); connect(mMinimizeBtn, SIGNAL(clicked()), this, SLOT(onMinimizeBtnClicked())); mCloseBtn->setText(""); mCloseBtn->setToolTip(tr("Close")); mCloseBtn->setIcon(awesome->icon(icon_remove, QColor("#808081"))); connect(mCloseBtn, SIGNAL(clicked()), this, SLOT(onCloseBtnClicked())); // Handle mouse move event mHeader->installEventFilter(this); }
void SeafileTrayIcon::createActions() { disable_auto_sync_action_ = new QAction(tr("Disable auto sync"), this); connect(disable_auto_sync_action_, SIGNAL(triggered()), this, SLOT(disableAutoSync())); enable_auto_sync_action_ = new QAction(tr("Enable auto sync"), this); connect(enable_auto_sync_action_, SIGNAL(triggered()), this, SLOT(enableAutoSync())); view_unread_seahub_notifications_action_ = new QAction(tr("View unread notifications"), this); connect(view_unread_seahub_notifications_action_, SIGNAL(triggered()), this, SLOT(viewUnreadNotifications())); quit_action_ = new QAction(tr("&Quit"), this); connect(quit_action_, SIGNAL(triggered()), this, SLOT(quitSeafile())); show_main_window_action_ = new QAction(tr("Show main window"), this); connect(show_main_window_action_, SIGNAL(triggered()), this, SLOT(showMainWindow())); settings_action_ = new QAction(tr("Settings"), this); connect(settings_action_, SIGNAL(triggered()), this, SLOT(showSettingsWindow())); open_seafile_folder_action_ = new QAction(tr("Open %1 &folder").arg(getBrand()), this); open_seafile_folder_action_->setStatusTip(tr("open %1 folder").arg(getBrand())); connect(open_seafile_folder_action_, SIGNAL(triggered()), this, SLOT(openSeafileFolder())); open_log_directory_action_ = new QAction(tr("Open &logs folder"), this); open_log_directory_action_->setStatusTip(tr("open %1 log folder").arg(getBrand())); connect(open_log_directory_action_, SIGNAL(triggered()), this, SLOT(openLogDirectory())); about_action_ = new QAction(tr("&About"), this); about_action_->setStatusTip(tr("Show the application's About box")); connect(about_action_, SIGNAL(triggered()), this, SLOT(about())); open_help_action_ = new QAction(tr("&Online help"), this); open_help_action_->setStatusTip(tr("open %1 online help").arg(getBrand())); connect(open_help_action_, SIGNAL(triggered()), this, SLOT(openHelp())); }
void CloudView::deleteAccount() { QString question = tr("Are you sure to remove this account?<br>" "<b>Warning: All libraries of this account would be unsynced!</b>"); if (QMessageBox::question(this, getBrand(), question, QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Cancel) == QMessageBox::Ok) { QString error, server_addr = current_account_.serverUrl.host(); if (seafApplet->rpcClient()->unsyncReposByAccount(server_addr, current_account_.username, &error) < 0) { QMessageBox::warning(this, getBrand(), tr("Failed to unsync libraries of this account: %1").arg(error), QMessageBox::Ok); } Account account = current_account_; setCurrentAccount(Account()); seafApplet->accountManager()->removeAccount(account); } }